「Amazon Bedrockへのプライベートアクセスを設定するために、AWS PrivateLinkを使用してください」
「AWS PrivateLinkを使用して、Amazon Bedrockへのプライベートアクセスを設定しましょう」
Amazon Bedrock(アマゾンベッドロック)は、AWSが提供するフルマネージドサービスであり、開発者にfoundationモデル(FM)へのアクセスと、それらを特定のアプリケーションにカスタマイズするためのツールを提供しています。インフラストラクチャの管理はせずに、APIを通じてFMを使用してジェネラティブAIアプリケーションを構築およびスケーリングすることができます。AmazonやAI21 Labs、Anthropic、Cohere、Stability AIなど、Amazonや主要なAIスタートアップからさまざまなFMを選択して、ユースケースに最適なモデルを見つけることができます。Amazon Bedrockのサーバーレス体験を活用すれば、すばやく開始し、簡単にFMを試すことができます。また、独自のデータでカスタマイズし、AWSのツールと機能を使用してシームレスにアプリケーションに統合し、展開することもできます。
お客様は独自のプロプライエタリデータを使用してAmazon Bedrock APIを使用した革新的なジェネラティブAIアプリケーションを構築しています。Amazon Bedrock APIにアクセスする際、お客様はデータをインターネットに公開せずにデータパーメータを設定するメカニズムを求めており、インターネットの脅威ベクトルを軽減することができます。AWS PrivateLinkを利用したAmazon Bedrock VPCエンドポイントを使用すると、お客様のアカウント内のVPCとAmazon Bedrockサービスアカウントとの間にプライベート接続を確立することができます。これにより、VPCインスタンスは公開IPアドレスを必要とせずにサービスリソースと通信することができます。
この投稿では、AWSアカウントへのプライベートアクセスを設定して、独自のデータを使用して安全にAmazon Bedrock APIにアクセスする方法を示します。
ソリューションの概要
ジェネラティブAIを使用して、テキスト要約、コンテンツモデレーションなど、さまざまなアプリケーションを開発することができます。FMやベースモデルを使用してこのようなジェネラティブAIアプリケーションを構築する際、お客様はパブリックインターネットを経由せずにレスポンスを生成したり、企業のデータベースに存在する独自のデータに基づいてレスポンスを生成したりしたいと考えています。
- 「Amazon SageMaker JumpStartを使用して、2行のコードでファウンデーションモデルを展開して微調整する」
- Pythonでの機械学習のためのテキストの前処理−自然言語処理
- 「Xenovaのテキスト読み上げクライアントツール:自然な音声合成を実現する頑強で柔軟なAIプラットフォーム」
以下の図には、ジェネラティブAIアプリケーションからの製品関連のクエリに回答する際に、Amazon Relational Database Service(Amazon RDS)に存在する独自のデータを読み取るためのインフラストラクチャを設定するアーキテクチャが示されています。この図では説明の目的でAmazon RDSを使用していますが、この投稿に記載されている手順を使用して、Amazon Bedrock APIのプライベートアクセスをテストすることができます。
ワークフローは次のようになります:
- AWS Lambda(AWS ラムダ)は、プライベートVPCサブネットで実行されるため、ジェネラティブAIアプリケーションからのプロンプトリクエストを受け取ります。
- Lambdaは、プロプライエタリRDSデータベースに問い合わせを行い、プロンプトクエリコンテキストを補完し(たとえば、製品情報の追加など)、補完クエリリクエストでAmazon Bedrock APIを呼び出します。
- API呼び出しがAmazon Bedrock VPCエンドポイントにルーティングされます。このVPCエンドポイントは、Amazon Bedrock APIへのアクセスを許可するVPCエンドポイントポリシーに関連付けられています。
- Amazon BedrockサービスAPIエンドポイントは、PublicLinkを通じてAPIリクエストを受信します。
- Amazon Bedrock VPCエンドポイントポリシーをDeny権限に変更して、Amazon Bedrock APIの呼び出しが拒否されることを検証することができます。
- また、AWS Direct Connect(AWSダイレクトコネクト)ゲートウェイを介して、法人ネットワークからAmazon Bedrock APIに対するVPCエンドポイントをプライベートにアクセスすることもできます。
前提条件
開始する前に、次の前提条件を満たしていることを確認してください:
- AWSアカウント
- AWS Identity and Access Management(IAM)フェデレーションロール。以下の操作にアクセスできる
- VPCネットワークリソースの作成、編集、表示、削除
- Lambda関数の作成、編集、表示、削除
- IAMロールおよびポリシーの作成、編集、表示、削除
- 基盤モデルのリストとAmazon Bedrock基盤モデルの呼び出し
- この記事では、
us-east-1
リージョンを使用しています - Amazon Bedrockコンソールを介して基盤モデルへのアクセスをリクエストしてください
プライベートアクセスインフラのセットアップ
このセクションでは、VPC、プライベートサブネット、セキュリティグループ、Lambda関数をAWS CloudFormationテンプレートを使用してセットアップします。
次のテンプレートを使用して、AWSアカウント内の「Bedrock-GenAI-Stack」というインフラストラクチャスタックを作成してください。
CloudFormationテンプレートは、以下のリソースを代わりに作成します:
- 2つの異なる利用可能ゾーンにあるプライベートサブネットを持つVPC
- セキュリティグループとルーティングテーブル
- Lambda、Amazon Bedrock、およびAmazon Elastic Compute Cloud(Amazon EC2)によって使用されるIAMロールとポリシー
Amazon BedrockのVPCエンドポイントのセットアップ
このセクションでは、Amazon Virtual Private Cloud(Amazon VPC)を使用して、Amazon BedrockへのVPCエンドポイントをセットアップし、VPCとAmazon Bedrock間でのプライベートな接続を容易にします。
- Amazon VPCコンソールで、ナビゲーションペインのVirtual private cloudの下で、Endpointsを選択してください。
- Create endpointを選択してください。
- Name tagに
bedrock-vpce
を入力してください。 - Servicesでbedrock-runtimeを検索し、
com.amazonaws.<region>.bedrock-runtime
を選択してください。 - VPCで、前のセクションでCloudFormationスタックを作成したVPC
Bedrock-GenAI-Project-vpc
を指定してください。 - Subnetsセクションで、利用可能ゾーンを選択し、ドロップダウンメニューから該当するサブネットIDを選択してください。
- Security groupsで、グループ名が
Bedrock-GenAI-Stack-VPCEndpointSecurityGroup-
で説明がAllow TLS for VPC Endpoint
となるセキュリティグループを選択してください。
セキュリティグループは、インスタンスの仮想ファイアウォールとして機能し、インバウンドおよびアウトバウンドトラフィックを制御します。ただし、このVPCエンドポイントのセキュリティグループは、VPCプライベートサブネットに接続されたセキュリティグループからのトラフィックのみを許可し、保護の層を追加します。
-
エンドポイントを作成を選択します。
-
ポリシーセクションでカスタムを選択し、次の最小限の特権ポリシーを入力して、指定された基礎モデルリソース
arn:aws:bedrock:*::foundation-model/anthropic.claude-instant-v1
上で特定のアクションのみが許可されるようにします(Lambda関数のIAMロールなどの主体に対して)。{ "Version": "2012-10-17", "Statement": [ { "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/anthropic.claude-instant-v1" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/GenAIStack-Bedrock" } } ]}
インターフェースエンドポイントが作成され、ステータスが利用可能に変わるまで最大2分かかる場合があります。最新のステータスを確認するには、ページを更新できます。
プライベートVPCサブネット上でLambda関数を設定する
次の手順を完了してLambda関数を構成します。
- Lambdaコンソールで、ナビゲーションペインで関数を選択します。
- 関数
gen-ai-lambda-stack-BedrockTestLambdaFunction-XXXXXXXXXXXX
を選択します。 - 左のペインで設定タブを選択し、アクセス許可を選択します。
- 実行ロールの下にあるリンクから、ロール
gen-ai-lambda-stack-BedrockTestLambdaFunctionRole-XXXXXXXXXXXX
を選択します。
IAMコンソールにリダイレクトされます。
-
許可ポリシーセクションで許可を追加を選択し、インラインポリシーを作成を選択します。
-
JSONタブで、ポリシーを次のように変更します:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "eniperms", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:*VpcEndpoint*" ], "Resource": "*" } ]}
-
次へを選択します。
-
ポリシー名に
enivpce-policy
を入力します。 -
ポリシーを作成を選択します。
-
以下のインラインポリシー(ソースVPCエンドポイントを指定してください)を追加して、LambdaがAmazon Bedrock APIへのアクセスをVPCエンドポイント経由に限定できるようにします:
{ "Id": "lambda-bedrock-sourcevpce-access-only", "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:ListFoundationModels", "bedrock:InvokeModel" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:sourceVpce": [ "vpce-<bedrock-runtime-vpce>" ] } } } ]}
-
Lambda関数ページで、設定タブを選択し、左のペインでVPCを選択し、編集を選択します。
-
VPCには
Bedrock-GenAI-Project-vpc
を選択します。 -
サブネットにはプライベートサブネットを選択します。
-
セキュリティグループには
gen-ai-lambda-stack-SecurityGroup-
(Amazon Bedrockのワークロードのプライベートサブネット用のセキュリティグループ)を選択します。 -
保存を選択します。
プライベートアクセス制御のテスト
今、プライベートアクセス制御(VPCエンドポイントを介したAmazon Bedrock API)をテストできます。
- ランバダコンソールで、ナビゲーションペインで関数を選択します。
- 関数
gen-ai-lambda-stack-BedrockTestLambdaFunction-XXXXXXXXXXXX
を選択します。 - コードタブでテストを選択します。
Amazon Bedrock APIの呼び出しから次の応答が表示されるはずです(ステータス:成功)。
- VPCエンドポイントを介したAmazon Bedrock APIへのアクセスを拒否するには、Amazon VPCコンソールに移動します。
- ナビゲーションペインで仮想プライベートクラウドの下にあるエンドポイントを選択します。
- ポリシーを選択し、ポリシータブに移動します。
現在、VPCエンドポイントポリシーはAllow
に設定されています。
- アクセスを拒否するには、ポリシーの編集を選択します。
Allow
をDeny
に変更し、保存を選択します。
VPCエンドポイントのポリシーの更新には最大2分かかる場合があります。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "bedrock:InvokeModel" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/anthropic.claude-instant-v1" ], "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/GenAIStack-Bedrock" } } ]}
- ランバダ関数ページに戻り、コードタブでテストを選択します。
次のスクリーンショットに示すように、VPCエンドポイントを介したAmazon Bedrockへのアクセス要求が拒否されました(ステータス:失敗)。
このテストプロセスを通じて、VPCからAmazon Bedrock APIエンドポイントへのトラフィックがインターネット接続ではなく、PrivateLink接続を介して移動していることを実証しました。
クリーンアップ
将来の料金発生を回避するために、次の手順に従ってクリーンアップを行ってください:
- VPCエンドポイントをクリーンアップします。
- VPCをクリーンアップします。
- CloudFormationスタックを削除します。
結論
この投稿では、インターフェースVPCエンドポイントを使用したPrivateLinkによって、お客様のVPCに展開された生成AIワークロードとAmazon Bedrockの間にプライベート接続を設定し、運用する方法を示しました。この投稿で説明されたアーキテクチャを使用すると、お客様のVPCとAmazon Bedrockの間のトラフィックはAmazonネットワーク内で外部に漏洩せず、データが公開インターネットに露出されることはありません。これにより、コンプライアンス要件が満たされます。
次のステップとして、アカウントでこのソリューションを試してフィードバックを共有してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「機械学習手法を用いたJava静的解析ツールレポートのトリアージに関する研究」
- 「Inside LlaVA GPT-4Vのオープンソースの最初の代替案」
- 「50以上の最新の最先端人工知能(AI)ツール(2023年11月)」
- 「思考伝搬:大規模言語モデルを用いた複雑な推論の類推的手法」
- このAI論文は、深層学習を用いて大規模な記録の神経活動を解読する人工知能フレームワーク、POYO-1を紹介しています
- 「GROOTに会おう:オブジェクト中心の3D先行条件と適応ポリシー汎化を備えたビジョンベースの操作のための堅牢な模倣学習フレームワーク」
- 「AutoMixを使用した計算コストの最適化 クラウドからの大規模言語モデルの活用に向けたAI戦略的アプローチ」