Skip to content

React WebsiteからAgentCore Gatewayへ

connectionジェネレーターは、React websiteを、protocol: httpで生成されたAgentCore Gatewayによってフロントされるエージェントに接続できます。

ブラウザはGatewayとのみ通信します — <gatewayUrl>/<targetName>/invocationsへのリクエストは、その背後にあるエージェントランタイムにプロキシされます。WebsiteがランタイムへのアクセスをWebsiteが直接必要としないため、エージェントはVPC内にデプロイでき、Gatewayが認証と可観測性を提供する単一の管理されたエントリーポイントとなります。

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

  1. React websiteプロジェクト
  2. protocol: httpで生成されたagentcore-gatewayプロジェクト
  3. GatewayからエージェントへのConnectionジェネレーターを介してGatewayに接続された少なくとも1つのAG-UIまたはHTTPエージェント

ジェネレーターは、Gatewayに接続されたAG-UIまたはHTTPエージェントに対してWebsiteクライアントを作成します(A2Aターゲットはスキップされます — これらはブラウザプロトコルではなく、エージェント間JSON-RPCを使用します)。Websiteを各エージェントに直接接続する場合と同じクライアント(AG-UIエージェントにはAG-UI/CopilotKit、Python HTTPエージェントにはOpenAPIクライアント)を生成しますが、ランタイムではなくGatewayを経由してルーティングされます。

Terminal window
pnpm nx g @aws/nx-plugin:connection
変更されるファイルを確認するためにドライランを実行することもできます
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

ソースとしてWebsiteプロジェクトを、ターゲットとしてGatewayプロジェクトを選択します。

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

フロントされた各AG-UIエージェントに対して、ReactからAG-UIエージェントへの接続と同じファイル(AguiProvideruseAgui<Agent>フック、テーマ付きCopilotKitコンポーネントモジュール)が生成され、フックはランタイム設定からGatewayのURLを読み取ります:

  • Directorypackages/<website>/src
    • Directorycomponents
      • AguiProvider.tsx 各エージェントを登録するCopilotKitプロバイダー
      • Directorycopilot/ テーマ付きチャットコンポーネント
    • Directoryhooks
      • useAgui<Agent>.tsx Gatewayの/<targetName>/invocationsルートを介してエージェントに接続

フロントされた各Python HTTPエージェントに対して、ReactからPythonエージェントへの接続と同じファイル(型安全なOpenAPIクライアント、フック、プロバイダー)が生成され、クライアントのベースURLはGatewayを経由してルーティングされます。

GatewayのURLはRuntime Configurationconnection.gateways.<GatewayClassName>名前空間に登録されるため、Websiteのruntime-config.jsonに公開されます。

Websiteユーザーへのアクセス許可

Section titled “Websiteユーザーへのアクセス許可”

IAM Gatewayの場合、Websiteの認証済みユーザーに呼び出し権限を付与します(Cognito Gatewayでは付与は不要です — ブラウザは代わりにJWT bearerトークンで認証します):

packages/infra/src/stacks/application-stack.ts
const identity = new UserIdentity(this, 'UserIdentity');
new Website(this, 'Website');
const myGateway = new MyGateway(this, 'MyGateway');
myGateway.addAgent(myAgent);
myGateway.grantInvokeAccess(identity.identityPool.authenticatedRole);

WebsiteのdevターゲットはGatewayプロジェクトのdevターゲットに依存関係を持ち、ローカルゲートウェイと接続されたすべてのエージェントを起動します。Websiteのランタイム設定はlocal-devモードでオーバーライドされ、GatewayのURLがローカルゲートウェイを指すようになるため、ブラウザはローカルで同じ/<targetName>/invocationsルートを実行します:

Terminal window
pnpm nx dev <website-name>

ジェネレーターは、実行時にGatewayに接続されているエージェントにWebsiteを接続します。Gatewayに別のエージェントを接続した後、Connectionジェネレーターを再実行してそのWebsiteクライアントを生成します — 既存のクライアントはそのまま残ります。