「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アプリケーションを構築する際、お客様はパブリックインターネットを経由せずにレスポンスを生成したり、企業のデータベースに存在する独自のデータに基づいてレスポンスを生成したりしたいと考えています。

以下の図には、ジェネラティブAIアプリケーションからの製品関連のクエリに回答する際に、Amazon Relational Database Service(Amazon RDS)に存在する独自のデータを読み取るためのインフラストラクチャを設定するアーキテクチャが示されています。この図では説明の目的でAmazon RDSを使用していますが、この投稿に記載されている手順を使用して、Amazon Bedrock APIのプライベートアクセスをテストすることができます。

ワークフローは次のようになります:

  1. AWS Lambda(AWS ラムダ)は、プライベートVPCサブネットで実行されるため、ジェネラティブAIアプリケーションからのプロンプトリクエストを受け取ります。
  2. Lambdaは、プロプライエタリRDSデータベースに問い合わせを行い、プロンプトクエリコンテキストを補完し(たとえば、製品情報の追加など)、補完クエリリクエストでAmazon Bedrock APIを呼び出します。
  3. API呼び出しがAmazon Bedrock VPCエンドポイントにルーティングされます。このVPCエンドポイントは、Amazon Bedrock APIへのアクセスを許可するVPCエンドポイントポリシーに関連付けられています。
  4. Amazon BedrockサービスAPIエンドポイントは、PublicLinkを通じてAPIリクエストを受信します。
  5. Amazon Bedrock VPCエンドポイントポリシーをDeny権限に変更して、Amazon Bedrock APIの呼び出しが拒否されることを検証することができます。
  6. また、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間でのプライベートな接続を容易にします。

  1. Amazon VPCコンソールで、ナビゲーションペインのVirtual private cloudの下で、Endpointsを選択してください。
  2. Create endpointを選択してください。
  3. Name tagbedrock-vpceを入力してください。
  4. Servicesでbedrock-runtimeを検索し、com.amazonaws.<region>.bedrock-runtimeを選択してください。
  5. VPCで、前のセクションでCloudFormationスタックを作成したVPC Bedrock-GenAI-Project-vpcを指定してください。
  6. Subnetsセクションで、利用可能ゾーンを選択し、ドロップダウンメニューから該当するサブネットIDを選択してください。
  7. Security groupsで、グループ名がBedrock-GenAI-Stack-VPCEndpointSecurityGroup-で説明がAllow TLS for VPC Endpointとなるセキュリティグループを選択してください。

セキュリティグループは、インスタンスの仮想ファイアウォールとして機能し、インバウンドおよびアウトバウンドトラフィックを制御します。ただし、このVPCエンドポイントのセキュリティグループは、VPCプライベートサブネットに接続されたセキュリティグループからのトラフィックのみを許可し、保護の層を追加します。

  1. エンドポイントを作成を選択します。

  2. ポリシーセクションでカスタムを選択し、次の最小限の特権ポリシーを入力して、指定された基礎モデルリソース 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関数を構成します。

  1. Lambdaコンソールで、ナビゲーションペインで関数を選択します。
  2. 関数 gen-ai-lambda-stack-BedrockTestLambdaFunction-XXXXXXXXXXXX を選択します。
  3. 左のペインで設定タブを選択し、アクセス許可を選択します。
  4. 実行ロールの下にあるリンクから、ロール gen-ai-lambda-stack-BedrockTestLambdaFunctionRole-XXXXXXXXXXXX を選択します。

IAMコンソールにリダイレクトされます。

  1. 許可ポリシーセクションで許可を追加を選択し、インラインポリシーを作成を選択します。

  2. JSONタブで、ポリシーを次のように変更します:

    {    "Version": "2012-10-17",    "Statement": [        {            "Sid": "eniperms",            "Effect": "Allow",            "Action": [                "ec2:CreateNetworkInterface",                "ec2:DescribeNetworkInterfaces",                "ec2:DeleteNetworkInterface",                "ec2:*VpcEndpoint*"            ],            "Resource": "*"        }    ]}
  3. 次へを選択します。

  4. ポリシー名enivpce-policy を入力します。

  5. ポリシーを作成を選択します。

  6. 以下のインラインポリシー(ソース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>"                    ]                }            }        }    ]} 
  7. Lambda関数ページで、設定タブを選択し、左のペインでVPCを選択し、編集を選択します。

  8. VPCには Bedrock-GenAI-Project-vpc を選択します。

  9. サブネットにはプライベートサブネットを選択します。

  10. セキュリティグループには gen-ai-lambda-stack-SecurityGroup-(Amazon Bedrockのワークロードのプライベートサブネット用のセキュリティグループ)を選択します。

  11. 保存を選択します。

プライベートアクセス制御のテスト

今、プライベートアクセス制御(VPCエンドポイントを介したAmazon Bedrock API)をテストできます。

  1. ランバダコンソールで、ナビゲーションペインで関数を選択します。
  2. 関数gen-ai-lambda-stack-BedrockTestLambdaFunction-XXXXXXXXXXXXを選択します。
  3. コードタブでテストを選択します。

Amazon Bedrock APIの呼び出しから次の応答が表示されるはずです(ステータス:成功)。

  1. VPCエンドポイントを介したAmazon Bedrock APIへのアクセスを拒否するには、Amazon VPCコンソールに移動します。
  2. ナビゲーションペインで仮想プライベートクラウドの下にあるエンドポイントを選択します。
  3. ポリシーを選択し、ポリシータブに移動します。

現在、VPCエンドポイントポリシーはAllowに設定されています。

  1. アクセスを拒否するには、ポリシーの編集を選択します。
  2. AllowDenyに変更し、保存を選択します。

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"            }      }   ]}
  1. ランバダ関数ページに戻り、コードタブでテストを選択します。

次のスクリーンショットに示すように、VPCエンドポイントを介したAmazon Bedrockへのアクセス要求が拒否されました(ステータス:失敗)。

このテストプロセスを通じて、VPCからAmazon Bedrock APIエンドポイントへのトラフィックがインターネット接続ではなく、PrivateLink接続を介して移動していることを実証しました。

クリーンアップ

将来の料金発生を回避するために、次の手順に従ってクリーンアップを行ってください:

  1. VPCエンドポイントをクリーンアップします。
  2. VPCをクリーンアップします。
  3. 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!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

「サイバーセキュリティとAI、テキサスサイバーサミットの中心に」

「テキサスサイバーサミット2023のレビューに飛び込んでくださいAIがセキュリティに与える影響を知り、ゼロトラスト戦略につ...

機械学習

アーサーがベンチを発表:仕事に最適な言語モデルを見つけるためのAIツール

ニューヨーク市の通りでは、AIの新興スタートアップ「Arthur」が機械学習の世界で話題をさらっています。生成型AIに関するブ...

人工知能

「ビジネスを拡大するための25のChatGPTプロンプト」

「25個のChatGPTテンプレートのプロンプトをコピーして貼り付けすることで、あなたのビジネス(および収入)を次のレベルに引...

AI研究

アリババAI研究所が提案する「Composer」は、数十億の(テキスト、画像)ペアで訓練された、巨大な(50億パラメータ)コントロール可能な拡散モデルです

現在、テキストベースの生成画像モデルは、多様な写真のような画像を生成することができるようになりました。最近の多くの取...

機械学習

PyTorchを使った効率的な画像セグメンテーション:Part 2

これは、PyTorchを使用してディープラーニング技術を使ってゼロから画像セグメンテーションをステップバイステップで実装する...

機械学習

プロンプトエンジニアリングへの紹介

イントロダクション 自然言語処理は、基盤となる技術や手法を使用した実装の豊かな領域であります。近年、特に2022年の始まり...