翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Bedrock エージェントを使用して、テキストベースのプロンプトによる Amazon EKS でのアクセスエントリコントロールの作成を自動化する
作成者: Keshav Ganesh (AWS) と Sudhanshu Saurav (AWS)
概要
複数のチームが共有 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 エージェントは Virtual Private Cloud (VPC) 内で実行され、Lambda 関数をトリガーします。
Lambda 関数は、Amazon EKS クラスター内のユーザー入力に基づいてアクションを実行します。
Lambda コードの Amazon S3 バケットには、Lambda 関数用に記述されたコードとロジックを持つアーティファクトが保存されます。
ツール
AWS のサービス
Amazon Bedrock は、主要な AI スタートアップと Amazon からの高性能な基盤モデル (FMs) を統合 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 は、 で OpenSearch クラスターをデプロイ、運用、スケーリングするのに役立つマネージドサービスです AWS クラウド。そのコレクション機能は、データを整理し、Amazon Bedrock エージェントなどの AI アシスタントが使用できる包括的なナレッジベースを構築するのに役立ちます。
Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。
その他のツール
eksctl – これは Amazon EKS で Kubernetes クラスターを作成および管理するコマンドラインユーティリティです。
コードリポジトリ
このパターンのコードは、GitHub eks-access-controls-bedrock-agent
ベストプラクティス
このパターンを実装するときは、可能な限り高いセキュリティを維持します。Amazon EKS クラスターがプライベートであり、アクセス許可が制限されており、すべてのリソースが Virtual Private Cloud (VPC) 内にあることを確認します。詳細については、Amazon EKS ドキュメントの「セキュリティのベストプラクティス」を参照してください。
可能な限り AWS KMS カスタマーマネージドキーを使用し、制限付きアクセス許可を付与します。
最小特権の原則に従い、タスクの実行に必要な最小限のアクセス許可を付与します。詳細については、IAM ドキュメントの「最小特権の付与」と「セキュリティのベストプラクティス」を参照してください。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
リポジトリをクローン作成します。 | このパターンのリポジトリのクローンを作成するには、ローカルワークステーションで次のコマンドを実行します。
| AWS DevOps |
AWS アカウント ID を取得します。 | AWS アカウント ID を取得するには、次の手順を実行します。
このコマンドは、 AWS アカウント ID を | AWS DevOps |
Lambda コードの S3 バケットを作成します。 | このソリューションを実装するには、アーキテクチャ図に示すように、さまざまな目的に対応する 3 つの Amazon S3 バケットを作成する必要があります。S3 バケットは、Lambda コード、ナレッジベース、OpenAPI スキーマ用です。 Lambda コードバケットを作成するには、次の手順を実行します。
パッケージコマンドは、以下を含む新しい CloudFormation テンプレート (
| AWS DevOps |
ナレッジベースの S3 バケットを作成します。 | ナレッジベースの Amazon S3 バケットを作成するには、次の手順を実行します。
| AWS DevOps |
OpenAPI スキーマの S3 バケットを作成します。 | OpenAPI スキーマの Amazon S3 バケットを作成するには、次の手順を実行します。
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
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 クラスターへの接続が正しく設定されていることを確認します。 |
エージェントプロンプトは APIsを認識しません。 | ソリューションをデプロイする 詳細については、このパターンのリポジトリの RE_DEPLOY.md |
スタックの削除に失敗しました。 | スタックの削除を最初に試みると、失敗する可能性があります。この障害は、ナレッジベースのインデックスを作成する OpenSearch コレクション用に作成されたカスタムリソースの依存関係の問題が原因で発生する可能性があります。スタックを削除するには、カスタムリソースを保持して削除オペレーションを再試行します。 |
関連リソース
AWS ブログ
Amazon Bedrock ドキュメント
Amazon EKS ドキュメント