このサンプルには、APIを公開する機能が含まれています。チャットインターフェースは予備的な検証に便利かもしれませんが、実際の実装は特定のユースケースとエンドユーザーに求められるユーザーエクスペリエンス(UX)に依存します。状況によっては、チャットUIが望ましい選択肢となる一方で、スタンドアロンのAPIがより適している場合もあります。初期検証の後、このサンプルはプロジェクトのニーズに応じてカスタマイズされたボットを公開する機能を提供します。クォータ、スロットリング、オリジンなどの設定を入力することで、APIキーと共にエンドポイントを公開でき、多様な統合オプションに柔軟に対応できます。
APIキーのみを使用することは、AWS API Gateway開発者ガイドで説明されているように推奨されません。そのため、このサンプルではAWS WAFを介した簡単なIPアドレス制限を実装しています。コスト面を考慮し、制限したいソースが発行されたすべてのAPIで同様である可能性が高いという前提の下、WAFルールはアプリケーション全体に共通して適用されます。**実際の実装については、組織のセキュリティポリシーに従ってください。**また、アーキテクチャセクションも参照してください。
ガバナンス上の理由により、限られたユーザーのみがボットを公開できます。公開する前に、ユーザーは PublishAllowed
というグループのメンバーである必要があります。このグループは管理コンソール > Amazon Cognito ユーザープール、または AWS CLI で設定できます。ユーザープール ID は、CloudFormation > BedrockChatStack > 出力 > AuthUserPoolIdxxxx
からアクセスできます。
PublishedAllowed
ユーザーとしてログインし、ボットを作成した後、API 公開設定
を選択します。共有ボットのみ公開できることに注意してください。
次の画面で、スロットリングに関する複数のパラメータを設定できます。詳細については、以下のリンクも参照してください:スループット向上のための API リクエストのスロットリング。
デプロイ後、以下の画面が表示され、エンドポイント URL と API キーを取得できます。また、API キーの追加や削除も可能です。
APIは以下の図のように公開されています:
WAFはIPアドレスの制限に使用されます。アドレスは、cdk.json
のpublishedApiAllowedIpV4AddressRanges
およびpublishedApiAllowedIpV6AddressRanges
パラメータを設定することで構成できます。
ユーザーがボットを公開すると、AWS CodeBuildがCDKデプロイメントタスクを起動し、API Gateway、Lambda、SQSを含むAPIスタックをプロビジョニングします(参照:CDK定義)。SQSは、ユーザーリクエストとLLM操作を分離するために使用されます。これは、出力の生成がAPI Gatewayのクォータである30秒を超える可能性があるためです。出力を取得するには、APIに非同期にアクセスする必要があります。詳細については、APIの仕様を参照してください。
クライアントはリクエストヘッダーにx-api-key
を設定する必要があります。
詳細はこちらをご覧ください。