Skip to content

Python Agent から DynamoDB へ

connection ジェネレーターは、Python AgentPython DynamoDB プロジェクトに接続し、両方が自動的に一緒に起動するようにローカル開発を構成します。

このジェネレーターを使用する前に、以下を確認してください:

  1. py#agent プロジェクト
  2. py#dynamodb プロジェクト
Terminal window
pnpm nx g @aws/nx-plugin:connection
変更されるファイルを確認するためにドライランを実行することもできます
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

Agent プロジェクトをソースとして、DynamoDB プロジェクトをターゲットとして選択します。プロジェクトに複数のエージェントコンポーネントが含まれている場合は、sourceComponent を指定して明確にします。

パラメータデフォルト説明
sourceProject 必須string-ソース プロジェクト
targetProject 必須string-接続先のターゲット プロジェクト
sourceComponent string-接続元のソース コンポーネント (コンポーネント名、ソース プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをソースとして明示的に選択するには '.' を使用します。
targetComponent string-接続先のターゲット コンポーネント (コンポーネント名、ターゲット プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをターゲットとして明示的に選択するには '.' を使用します。
preferInstallDependencies booleantrueジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合はfalseに設定します(後続のジェネレーターがNxプロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。

ジェネレーターは、エージェントの <agent-name>-dev ターゲットを project.json 内で更新し、DynamoDB プロジェクトの dev ターゲットに依存するようにし、DynamoDB パッケージをワークスペース依存関係として追加します。ソースファイルは変更されません。

DynamoDB パッケージからエンティティクラスをインポートし、エージェントツール内で使用します:

packages/my_project/my_project/my_agent/agent.py
from my_scope.my_table.entities.example import ExampleModel
from strands import tool
@tool
def list_examples() -> list:
"""List all example items."""
return [item.attribute_values for item in ExampleModel.scan()]

エージェントの Lambda 関数が DynamoDB テーブルにアクセスできるようにするには、インフラストラクチャで必要な権限を付与します。

packages/infra/src/stacks/application-stack.ts
import { MyTable } from '@my-scope/common-constructs';
const table = new MyTable(this, 'Table');
const myAgent = new MyAgent(this, 'MyAgent');
table.grantReadWriteData(myAgent);

grantReadWriteData は、エージェントの実行ロールに DynamoDB と KMS の両方の権限を付与します。

connection ジェネレーターは、プロジェクトの dev ターゲットが DynamoDB プロジェクトの dev ターゲットに依存するように設定します。dev を実行すると、DynamoDB Local がプロジェクトと一緒に自動的に起動します。

LOCAL_DEV=true 環境変数は自動的に設定されるため、is_local()True を返し、PynamoDB エンティティは AWS ではなくローカルの DynamoDB インスタンスに接続します。