翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Bedrock エージェントを使用してテキストベースのプロンプトで Amazon EKS でのアクセスエントリコントロールの作成を自動化する
Amazon Web Services、Keshav Ganesh と Sudhanshu Saurav
概要
組織内で複数のチームが共有 Amazon Elastic Kubernetes Service (Amazon EKS) クラスターを操作する必要がある場合、アクセスコントロールとリソースプロビジョニングの管理が課題となります。Amazon EKS などのマネージド Kubernetes サービスにより、クラスターオペレーションは簡素化されました。ただし、チームのアクセスとリソースのアクセス許可を管理するための管理オーバーヘッドは、依然として複雑で時間がかかります。
このパターンでは、Amazon Bedrock エージェントを活用して Amazon EKS クラスターのアクセス管理を自動化する方法を示します。この自動化により、開発チームはアクセスコントロールの設定や管理ではなく、コアアプリケーションの開発に集中できます。Amazon Bedrock エージェントをカスタマイズして、シンプルな自然言語プロンプトを使用してさまざまなタスク用のアクションを実行できます。
AWS Lambda 関数をアクショングループとして使用することで、Amazon Bedrock エージェントはユーザーアクセスエントリの作成やアクセスポリシーの管理などのタスクを処理できます。さらに、Amazon Bedrock エージェントは、クラスターで実行されているポッドの AWS Identity and Access Management (IAM) リソースへのアクセスを許可するポッド ID の関連付けを設定できます。このソリューションを使用すると、組織はシンプルなテキストベースのプロンプトで Amazon EKS クラスターの管理を合理化し、手作業によるオーバーヘッドを削減し、全体的な開発効率を向上させることができます。
前提条件と制限
前提条件
アクティブ AWS アカウント。
デプロイプロセス用の確立された IAM ロールとアクセス許可。これには、Amazon Bedrock 基盤モデル (FM) へのアクセス、Lambda 関数の作成、およびターゲット全体のその他の必要なリソースに対するアクセス許可が含まれます AWS アカウント。
Amazon Bedrock FMs AWS アカウント に対してアクティブな で有効になっているアクセス: Amazon Titan Text Embeddings V2 および Anthropic Claude 3 Haiku。
AWS Command Line Interface (AWS CLI) バージョン 2.9.11 以降、インストールおよび設定済み。
インストール
済の eksctl 0.194.0 以降。
制限事項
上記の手法をスムーズに導入し、効果的に使用するために、トレーニングとドキュメントが必要になる場合があります。Amazon Bedrock、Amazon EKS、Lambda、Amazon OpenSearch Service、OpenAPI
を使用するには、開発者と DevOps チームは大幅な学習が必要になります。 一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。すべてのリージョンの可用性については、「リージョン別の AWS サービス
」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」を参照して、サービスのリンクを選択してください。
アーキテクチャ
次の図表は、このパターンのアプリケーションのワークフローとアーキテクチャコンポーネントを示しています。

このソリューションでは、以下のステップを実行します。
ユーザーは、エージェントが処理してアクションを実行するための入力となるプロンプトまたはクエリを送信することで、Amazon Bedrock エージェントとやり取りします。
プロンプトに基づいて、Amazon Bedrock エージェントは OpenAPI スキーマをチェックし、ターゲットとする正しい API を特定します。Amazon Bedrock エージェントが正しい API コールを見つけた場合、これらのアクションを実装する Lambda 関数に関連付けられているアクショングループにリクエストが送信されます。
関連する API が見つからない場合、Amazon Bedrock エージェントは OpenSearch コレクションにクエリを実行します。OpenSearch コレクションは、Amazon EKS ユーザーガイドを含む Amazon S3 バケットから取得されたインデックス付きナレッジベースコンテンツを使用します。
OpenSearch コレクションは、関連するコンテキスト情報を Amazon Bedrock エージェントに返します。
実行可能なリクエスト (API オペレーションに一致するリクエスト) の場合、Amazon Bedrock エージェントは仮想プライベートクラウド (VPC) 内で実行され、Lambda 関数をトリガーします。
Lambda 関数は、Amazon EKS クラスター内のユーザーの入力に基づいてアクションを実行します。
Lambda コードの Amazon S3 バケットには、Lambda 関数用に記述されたコードとロジックを持つアーティファクトが保存されます。
ツール
AWS のサービス
Amazon Bedrock は、主要な AI スタートアップや Amazon が提供する高パフォーマンスな基盤モデル (FM) を、統合 API を通じて利用できるようにするフルマネージド型サービスです。
AWS CloudFormation は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。
Amazon Elastic Kubernetes Service (Amazon EKS) を使用すると、独自の Kubernetes コントロールプレーンやノードをインストールまたは維持 AWS することなく、 で Kubernetes を実行できます。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
Amazon OpenSearch Service は、 AWS クラウドにおける OpenSearch クラスターのデプロイ、オペレーション、スケーリングを支援するマネージドサービスです。Amazon OpenSearch Service のコレクション機能は、データを整理し、Amazon Bedrock エージェントなどの AI アシスタントが使用できる包括的なナレッジベースを構築するのに役立ちます。
Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
その他のツール
eksctl – これは Amazon EKS で Kubernetes クラスターを作成および管理するコマンドラインユーティリティです。
コードリポジトリ
このパターンのコードは、GitHub 内の「eks-access-controls-bedrock-agent
ベストプラクティス
このパターンを実装する場合、可能な限り高レベルのセキュリティを維持します。Amazon EKS クラスターがプライベートであり、アクセス許可が制限されており、すべてのリソースが仮想プライベートクラウド (VPC) 内にあることを確認します。詳細については、Amazon EKS ドキュメントの「セキュリティのベストプラクティス」を参照してください。
可能な限り AWS KMS カスタマーマネージドキーを使用し、制限付きアクセス許可を付与します。
最小特権の原則に従い、タスク実行に必要最小限の権限を付与します。詳細については、IAM ドキュメントの「最小限の特権を認める。」と「IAM でのセキュリティのベストプラクティス」を参照してください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
リポジトリのクローン作成 | このパターンのリポジトリのクローンを作成するには、ローカルワークステーションで次のコマンドを実行します。
| AWS DevOps |
AWS アカウント ID を取得します。 | AWS アカウント ID を取得するには、次の手順を実行します。
このコマンドは AWS アカウント 、ID を | AWS DevOps |
Lambda コード用の S3 バケットを作成します。 | このソリューションを実装するには、アーキテクチャ図に示されているように、さまざまな目的を果たす 3 つの Amazon S3 バケットを作成する必要があります。3 つの S3 バケットはそれぞれ、Lambda コード、ナレッジベース、OpenAPI スキーマ用です。 Lambda コード用バケットを作成するには、次の手順を実行します。
パッケージコマンドにより、以下を含む新しい CloudFormation テンプレート (
| AWS DevOps |
ナレッジベース用の S3 バケットを作成します。 | ナレッジベース用の Amazon S3 バケットを作成するには、次の手順を実行します。
| AWS DevOps |
OpenAPI スキーマ用の S3 バケットを作成します。 | OpenAPI スキーマ用の Amazon S3 バケットを作成するには、次の手順を実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
CloudFormation スタックをデプロイします。 | CloudFormation スタックをデプロイするには、前に作成した CloudFormation テンプレートファイル 注記CloudFormation テンプレートを使用して OpenSearch インデックスをプロビジョニングするには、約 10 分かかります。 スタックを作成したら、 | AWS DevOps |
Amazon EKS クラスターを作成します。 | VPC 内に Amazon EKS クラスターを作成するには、次の手順を実行します。
期待される結果は次のとおりです。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
Amazon EKS クラスターと Lambda 関数との間の接続を作成します。 | Lambda 関数が Amazon EKS クラスターと通信できるようにするネットワークおよび IAM アクセス許可を設定するには、次の手順を実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
Amazon Bedrock エージェントをテストする | Amazon Bedrock エージェントをテストする前に、以下を必ず実行してください。
Amazon Bedrock エージェントにアクセスするには、次の手順を使用します。
EKS Pod Identity の関連付けに対してアクションを実行するようにエージェントに依頼することもできます。詳細については、Amazon EKS ドキュメントの「EKS Pod Identity がポッドに AWS のサービスへのアクセス権を付与する仕組みを学ぶ」を参照してください。 | AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
リソースをクリーンアップします。 | このパターンで作成されたリソースをクリーンアップするには、次の手順を使用します。各削除ステップが完了してから次のステップに進みます。 警告この手順では、これらのスタックによって作成されたすべてのリソースを完全に削除します。先に進む前に、重要なデータをバックアップしていることを確認してください。
| AWS DevOps |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
環境のセットアップ中にゼロ以外のエラーコードが返されます。 | コマンドを実行してこのソリューションをデプロイする際、正しいフォルダを使用していることを確認します。詳細については、このパターンのリポジトリにある FIRST_DEPLOY.md |
Lambda 関数がタスクを実行できません。 | Lambda 関数から Amazon EKS クラスターへの接続が正しく設定されていることを確認します。 |
エージェントプロンプトが API を認識しません。 | ソリューションをデプロイする 詳細については、このパターンのリポジトリにある RE_DEPLOY.md |
スタックが削除に失敗します。 | スタックの削除を試行すると、1 度目は失敗する可能性があります。この障害は、ナレッジベースのインデックスを作成する OpenSearch コレクション用に作成されたカスタムリソースの依存関係の問題が原因で発生する場合があります。スタックを削除するには、カスタムリソースを保持して削除オペレーションを再試行します。 |
関連リソース
AWS ブログ
Amazon Bedrock ドキュメント
Amazon EKS ドキュメント