1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GenUを閉域モードで構築する

1
Last updated at Posted at 2026-04-16

はじめに

業務でGenU(Generative AI Use Cases)の閉域モードを触ることが多いので、記事にしてみました!
閉域モードを利用することで、インターネットを経由せずにGenUを利用することができます。
※オンプレ側とAWSが閉域でつなげる部分については記載していません。(DirectConnectやSite-to-Site等)

参考

AWS公式の資料です。一部文章を引用させていただいてます。
https://github.com/aws-samples/generative-ai-use-cases
https://aws-samples.github.io/generative-ai-use-cases/ja/CLOSED_NETWORK.html

閉域モードのアーキテクチャ

閉域モードを有効にするとフロントがCloudFrontからALB+Fargateに代わり、VPC内にデプロイされます。
各種AWSサービスにはVPCエンドポイントを経由して接続する構成です。

arch-closed-network.drawio.png

現状の制約(公式抜粋)

  • GenU自体は閉域ですが、デプロイはインターネットにつながる環境で行う必要があります。また、動作検証環境にはマネコンからアクセスするため、その場合もインターネット疎通が必要になります。
  • デプロイにはIAM権限の付与とNode.js,aws-cdk,dockerのインストールが必要です。
  • GenU がデプロイされるリージョンとモデルのリージョンは同一である必要があります。GenU を ap-northeast-1 にデプロイし、us-east-1 のモデルを利用するといったことは現状できません。
  • 様々なリソースを作成するため、既存の VPC をインポートする場合は可能な限り clean な環境を利用することを推奨します。
  • SAML 連携は利用できません。
  • Voice Chat のユースケースは現状利用できません。

クローン

下記のGithubURLにてプロジェクトフォルダにクローンを行います。
https://github.com/aws-samples/generative-ai-use-cases.git

閉域モード用のオプション

オプションは/generative-ai-use-cases/packages/cdk/cdk.jsonを編集して構築時のオプションを変更します。

閉域関連のオプションは次の部分です。(記載はデフォルト値)
closedNetworkModetrueにすることで閉域モードに変更できます。

"closedNetworkMode": false,
"closedNetworkVpcIpv4Cidr": "10.0.0.0/16",
"closedNetworkVpcId": null,
"closedNetworkSubnetIds": null,
"closedNetworkCertificateArn": null,
"closedNetworkDomainName": null,
"closedNetworkCreateTestEnvironment": true,
"closedNetworkCreateResolverEndpoint": true,

各オプションの詳細

パラメータ 説明
closedNetworkMode 閉域モードにするかどうか。true だと閉域モード。デフォルトは false。
closedNetworkVpcIpv4Cidr VPC を新規作成する場合に指定する IPv4 の CIDR。デフォルトでは 10.0.0.0/16。
closedNetworkVpcId VPC をインポートする場合の VPC ID。こちらを指定しないと VPC は新規作成になる。
closedNetworkSubnetIds GenU 関連のリソースをデプロイする Subnet の ID を複数指定。ALB、Fargate タスク、VPC Endpoint、Resolver Endpoint が作成される。こちらは指定しないと Isolated な Subnet が選択される。2 つ以上の Subnet ID を配列で指定する。
closedNetworkCertificateArn GenU にドメインを付与する場合に指定する ACM の ARN。ACM は手動で生成する。指定しない場合、GenU は Application Load Balancer のデフォルトのエンドポイントで公開される。
closedNetworkDomainName GenU のドメイン名。Private Hosted Zone は CDK が生成するため、手動作成不要。closedNetworkCertificateArnclosedNetworkDomainName は両方指定するか、両方指定しないかのどちらかである必要あり。
closedNetworkCreateTestEnvironment 検証環境を作成するかどうか。デフォルトで作成する。必要ない場合は false を指定する。検証環境は EC2 の Windows インスタンスとして作成し、Fleet Manager 経由でアクセスする。
closedNetworkCreateResolverEndpoint Route53 の Resolver Endpoint を生成するかどうか。デフォルトで true。

デプロイ

デプロイは通常と同様の手順で行います。

cd generative-ai-use-cases
npm ci
npx -w packages/cdk cdk bootstrap
npm run cdk:deploy

# 確認事項をスキップして高速デプロイ
npm run cdk:deploy:quick

DNSサーバの調整

閉域モードではオンプレNWのDNS調整が必要です。

フォワーダーを利用する場合

次の2つが前提条件になります。

  • オンプレから AWS に接続するルートはすでに確立している。(ClosedNetworkStack で作成した or にインポートした VPC の IP アドレスを指定すれば、その先のリソースにたどり着ける状態のことです。)
  • Route53 の Resolver Endpoint は作成済み。(Resolver Endpoint は closedNetworkCreateResolverEndpoint を true にしてデプロイすることで作成されます。このパラメータはデフォルトで true です。)

クライアントから名前解決が必要なエンドポイントは以下の通りです。<> で囲まれた箇所は実際の値に置き換えが必要です。

サービス名 役割 エンドポイント エンドポイントの確認方法
Application Load Balancer Web 静的ファイルのサーバー 独自ドメイン or internal-<aaa>.<region>.elb.amazonaws.com ClosedNetworkStack の出力の WebUrl で確認
API Gateway メインの API <xxx>.execute-api.<region>.amazonaws.com GenerativeAiUseCasesStack の出力の ApiEndpoint で確認
Cognito User Pool 認証 cognito-idp.<region>.amazonaws.com エンドポイントは固定
Cognito Identity Pool 一時認証情報の取得 cognito-identity.<region>.amazonaws.com エンドポイントは固定
Amazon S3 署名付き URL s3.<region>.amazonaws.com エンドポイントは固定
AWS Lambda ストリーミング出力 lambda.<region>.amazonaws.com エンドポイントは固定
Amazon Transcribe 文字起こし transcribe.<region>.amazonaws.com エンドポイントは固定
Amazon Transcribe Streaming リアルタイム文字起こし transcribestreaming.<region>.amazonaws.com エンドポイントは固定
Amazon Polly 文字の読み上げ polly.<region>.amazonaws.com エンドポイントは固定
Bedrock AgentCore Runtime AgentCore Runtime の実行 bedrock-agentcore.<region>.amazonaws.com エンドポイントは固定

■公式記載の注意
上の表のすべてのエンドポイントのリゾルバー (フォワーダー) として Resolver Endpoint の IP アドレスを指定するように DNS サーバーの設定を変更してください。
Resolver Endpoint の IP アドレスは、Route53 を開き、Inbound endpoints を選択して、作成したエンドポイントをクリックすることで確認できます。
なお、「Application Load Balancer に独自のドメインを設定している場合」を除き、すべてのエンドポイントは amazonaws.com ドメインです。
そのため、amazonaws.com のリゾルバーとして Resolver Endpoint の IP アドレスを指定する方法が最も簡略的な設定です。ただし、この設定は対象範囲が広く、副作用が大きいため、各エンドポイントの FQDN で設定をいれることを強く推奨いたします。

hostsファイルを設定して動作検証する場合

端末のhostsファイルに設定する場合はそれぞれのVPCエンドポイントのIPとFQDNを記載する必要があります。
IPが変更される可能性がある+冗長性もないのであくまで動作検証向きになります。

サービス名 役割 エンドポイント IP アドレスの確認方法
Application Load Balancer Web 静的ファイルのサーバー 独自ドメイン or internal-<aaa>.<region>.elb.amazonaws.com 方法1
API Gateway メインの API <xxx>.execute-api.<region>.amazonaws.com 方法2
Cognito User Pool 認証 cognito-idp.<region>.amazonaws.com 方法2
Cognito Identity Pool 一時認証情報の取得 cognito-identity.<region>.amazonaws.com 方法2
Amazon S3 署名付き URL <S3 バケット名>.s3.<region>.amazonaws.com 方法2
AWS Lambda ストリーミング出力 lambda.<region>.amazonaws.com 方法2
Amazon Transcribe 文字起こし transcribe.<region>.amazonaws.com 方法2
Amazon Transcribe Streaming リアルタイム文字起こし transcribestreaming.<region>.amazonaws.com 方法2
Amazon Polly 文字の読み上げ polly.<region>.amazonaws.com 方法2
Bedrock AgentCore Runtime AgentCore Runtime の実行 bedrock-agentcore.<region>.amazonaws.com 方法2

注意点

APIやS3などは利用されるS3毎にhostsを記載する必要があります。

例(自分が引っかかった所):
テキストファイルと音声ファイルではアップロード先のS3バケットが違うのでそれぞれでhostsを記載する必要あり

ファイルの種類 バケット名
テキストファイル等 generativeaiusecasesstack-apifilebucketxxxxxxxxx.s3.<region>.amazonaws.com
音声ファイル generativeaiusecasesstack-transcribeaudiobucketxxxxxxxxxxx.s3.<region>.amazonaws.com

終わりに

閉域モードのGenUデプロイについて紹介してみました!
現状色々と制限はありますが、インターネットに出ないので医療分野や自治体にマッチしやすいと感じています。(自治体向けAIサービス「源内」もGenUが元ですし!)
興味があればぜひ触ってみてください!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?