0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python×OpenAI】DynamoDB設定チェックAIエージェントを作ってみた!~PITR・TTL・オンデマンド設定を自動診断~

0
Last updated at Posted at 2026-07-15

はじめに

最近では、ChatGPTをはじめとする生成AIだけでなく、自ら判断してツールを実行するAIエージェントが注目されています。

私自身もAIエージェントに興味を持ち、「まずは何か作ってみよう」と思い、自己学習としてDynamoDBの設定を自動で診断するAIエージェントを作成してみました。

本記事では、

  • OpenAI APIとは何か
  • OpenAI APIキーの取得方法
  • boto3でDynamoDBの設定情報を取得する方法
  • OpenAI APIへ情報を渡して診断してもらう方法

について紹介します。

AIエージェントをこれから学び始める方の参考になれば幸いです。

※本記事はAIエージェント学習の一環として作成したサンプルです。実運用向けではなく、仕組みを理解することを目的としています。


この記事はこんな方におすすめ

  • AIエージェントを作ってみたい方
  • OpenAI APIを触ってみたい方
  • PythonでAIを使ってみたい方
  • AWSを学習中の方
  • DynamoDBのベストプラクティスを学びたい方

今回作るAIエージェント

例えば、次のような設定のDynamoDBテーブルがあるとします。

項目 設定
PITR 無効
TTL 無効
Billing Mode PROVISIONED
Auto Scaling 無効

AIエージェントへ

sample-tableを診断して

と依頼すると、

診断結果

❌ PITRが無効です

→ 誤削除時に復元できません

❌ TTLが無効です

→ 一時データが自動削除されません

❌ Auto Scalingが無効です

→ スロットリングが発生する可能性があります

おすすめ

・PITRを有効化
・TTLを設定
・Auto Scalingまたはオンデマンドへ変更

のように診断してくれます。


システム構成

ユーザー
     │
     ▼
Pythonプログラム
     │
     ├──────────────┐
     ▼              ▼
OpenAI API       boto3
     │              │
     │              ▼
     │          DynamoDB
     └──────┬───────┘
            ▼
         診断結果

流れは非常にシンプルです。

  1. boto3でDynamoDBの設定を取得
  2. OpenAI APIへ設定情報を渡す
  3. AIがベストプラクティスと比較
  4. 診断結果を返す

使用する技術

技術 用途
Python バックエンド
OpenAI API AI
boto3 AWS SDK
DynamoDB 診断対象

OpenAI APIとは?

OpenAI APIとは、

ChatGPTなどのAIモデルを自分のプログラムから利用するためのAPIです。

ChatGPTのようにブラウザから利用するのではなく、

Pythonなどのプログラムから

  • 質問する
  • 要約する
  • コードを書く
  • データを分析する

といったことができます。

今回作成するAIエージェントも、このOpenAI APIを利用します。


OpenAI APIキーを取得する

まずはOpenAI APIを利用するためにAPIキーを取得します。

① OpenAI Platformへアクセス

以下へアクセスします。

ChatGPTと同じアカウントでログインできます。


② API Keysを開く

左メニューの

API Keys

をクリックします。

または

からアクセスできます。


③ Create new secret keyをクリック

右上の

Create new secret key

をクリックします。


④ 名前を入力

例えば

dynamodb-agent

など任意の名前を入力します。


⑤ APIキーをコピー

次のようなキーが発行されます。

sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx

このキーは一度しか表示されません。必ずコピーして保管してください。


⑥ 環境変数へ設定

Windows

setx OPENAI_API_KEY "sk-proj-xxxxxxxxxxxxxxxx"

PowerShellを再起動すると反映されます。

確認する場合は

echo $env:OPENAI_API_KEY

macOS / Linux

export OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxx"

確認する場合は

echo $OPENAI_API_KEY

ライブラリをインストール

pip install openai boto3

OpenAI APIを使ってみる

まずはAIへ簡単な質問をしてみます。

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.5",
    input="こんにちは!"
)

print(response.output_text)

これだけでOpenAI APIを利用できます。

■つまづきポイント

自分は上記を実行したところ、**"openai.RateLimitError"**が起きました。
このエラーはコードのエラーではなく、OpenAI APIの利用枠(Quota)がないことを意味しています。

なので以下対応(クレジットカード登録)を試してみてください。

◎Billing
https://platform.openai.com/settings/organization/billing/overview

を開いて、

クレジットカードを登録したか
課金が有効になっているか

を確認してください。


boto3でDynamoDBの設定を取得する

まずはDynamoDBの情報を取得します。

import boto3

dynamodb = boto3.client("dynamodb")

table = dynamodb.describe_table(
    TableName="sample-table"
)

print(table)

取得できる情報には、

  • テーブル名
  • Billing Mode
  • インデックス

などがあります。


PITRを取得する

pitr = dynamodb.describe_continuous_backups(
    TableName="sample-table"
)

print(pitr)

有効であれば、

PointInTimeRecoveryStatus

ENABLED

となります。


TTLを取得する

ttl = dynamodb.describe_time_to_live(
    TableName="sample-table"
)

print(ttl)

有効であれば、

TimeToLiveStatus

ENABLED

となります。


OpenAI APIへ設定情報を渡す

取得した情報をAIへ渡します。

from openai import OpenAI

client = OpenAI()

prompt = """
以下のDynamoDB設定を診断してください。

テーブル名: sample-table
PITR: Disabled
TTL: Disabled
BillingMode: PROVISIONED

AWSのベストプラクティスに沿って改善点を教えてください。
"""

response = client.responses.create(
    model="gpt-5.5",
    input=prompt
)

print(response.output_text)

boto3と組み合わせる

実際には取得した設定をそのままAIへ渡します。

import boto3
from openai import OpenAI

client = OpenAI()

dynamodb = boto3.client("dynamodb")

table = dynamodb.describe_table(
    TableName="sample-table"
)

ttl = dynamodb.describe_time_to_live(
    TableName="sample-table"
)

pitr = dynamodb.describe_continuous_backups(
    TableName="sample-table"
)

billing_mode = table.get("Table", {}).get("BillingModeSummary", {}).get(
    "BillingMode",
    "PROVISIONED"
)

ttl_status = ttl.get(
    "TimeToLiveDescription",
    {}
).get(
    "TimeToLiveStatus",
    "DISABLED"
)

pitr_status = (
    pitr.get("ContinuousBackupsDescription", {})
        .get("PointInTimeRecoveryDescription", {})
        .get("PointInTimeRecoveryStatus", "DISABLED")
)

prompt = f"""
以下のDynamoDB設定を診断してください。

テーブル名: {table["Table"]["TableName"]}

Billing Mode: {billing_mode}

TTL: {ttl_status}

PITR: {pitr_status}

AWSのベストプラクティスに沿って改善点を教えてください。
"""

response = client.responses.create(
    model="gpt-5.5",
    input=prompt
)

print(response.output_text)

これだけで実際のAWS環境をAIが診断できるようになります。


実行結果

例えば次のような診断結果が返ってきます。

診断結果

❌ PITRが無効です

→ 有効化すると35日以内であれば任意時点へ復元できます。

❌ TTLが無効です

→ セッション情報やキャッシュデータにはTTLがおすすめです。

❌ Billing ModeがPROVISIONEDです

→ アクセス数が予測できない場合はオンデマンドも検討してください。

❌ Auto Scalingの設定も確認してください。

AWS公式ドキュメントを確認しなくても、改善ポイントを分かりやすく提案してくれます。


Function Callingを利用するとさらに便利

今回はPython側で

  • describe_table()
  • describe_time_to_live()
  • describe_continuous_backups()

を実行しました。

OpenAI APIにはFunction Callingという機能があります。

これを利用すると、

AI自身が

「PITRを確認するためにAWS APIを呼び出そう」

と判断できます。

ユーザー

「sample-tableを診断」

      │
      ▼
OpenAI

      │
describe_table()

      ▼
Python

      ▼
AWS

      ▼
OpenAI

      ▼
診断結果

よりAIエージェントらしい実装になります。


今後追加してみたい機能

今回作ってみて、次のような機能も追加できそうだと感じました。

  • CloudWatchアラームの確認
  • DynamoDB Streamsの確認
  • GSIの確認
  • SSE(暗号化)の確認
  • AWS CLIの生成
  • 修正方法まで提案
  • 複数テーブルをまとめて診断

今後はFunction Callingも取り入れ、より実践的なAIエージェントへ発展させてみたいと思います。


まとめ

今回は自己学習として、DynamoDB設定チェックAIエージェントを作成してみました。

OpenAI APIとboto3を組み合わせることで、AWSの設定情報を取得し、AIに診断してもらうことができます。

ポイントのおさらい

  • OpenAI APIを利用するにはAPIキーの取得が必要
  • Pythonから簡単にChatGPT相当のAIを利用できる
  • boto3でAWS情報を取得できる
  • AIがベストプラクティスと比較して診断できる
  • Function Callingを使うとさらにAIエージェントらしくなる

AIエージェントというと難しく感じますが、まずは「AWSから情報を取得し、それをAIへ渡す」というシンプルな構成でも十分学習になります。

今後はFunction CallingやRAGなども取り入れながら、より実践的なAIエージェントの開発にも挑戦してみたいと思います。


参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?