Skip to content

React WebサイトからAgentCore Gatewayへ

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

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

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

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

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

  1. インストール Nx Console VSCode Plugin まだインストールしていない場合
  2. VSCodeでNxコンソールを開く
  3. クリック Generate (UI) "Common Nx Commands"セクションで
  4. 検索 @aws/nx-plugin - connection
  5. 必須パラメータを入力
    • クリック Generate

    ソースとしてWebサイトプロジェクトを、ターゲットとして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はランタイム設定connection.gateways.<GatewayClassName>名前空間に登録されるため、Webサイトのruntime-config.jsonに公開されます。

    Webサイトユーザーへのアクセス許可

    Section titled “Webサイトユーザーへのアクセス許可”

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

    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);

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

    Terminal window
    pnpm nx dev <website-name>

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