コンテンツにスキップ
Classmethod Cognito Cloudfront Vpc Origin Agentcore Websocket

CognitoとVPCオリジンでAgentCoreのインタラクティブシェル環境を構築してみた

詳細

全体アーキテクチャ

ブラウザー → CloudFront → VPC Origin → Internal ALB → ECS Fargate(WebShell中継)
→ NAT GW → AgentCore Runtime Shell API

認証の仕組み

  1. /login → Lambda → Cognito Hosted UI へ302リダイレクト
  2. ログイン成功 → /callback?code=xxx → CallbackLambdaがauthorization codeをtokenに交換
  3. CloudFront署名付きCookie(Policy/Signature/Key-Pair-Id)を発行(有効期間8時間)
  4. Cookie付きでリクエスト → CloudFront Trusted Key Groupで検証

CDKの実装ポイント

  • 署名鍵ペアはカスタムリソースでデプロイ時にRSA 2048bit生成
  • 秘密鍵はSSM Parameter Store(SecureString)保存、公開鍵はCloudFront Public Key + Key Group登録
  • Lambda関数URLはOAC(Origin Access Control)+ AWS_IAM 認証でCloudFront経由以外の直接アクセスを拒否

CloudFront VPC Origin(2026年5月GA)

  • WebSocketサポートが追加され、プライベートサブネットにあるWebSocketアプリをCloudFront経由で公開可能
  • デフォルトビヘイビアの設定ポイント: CACHING_DISABLED + ALL_VIEWER + ALLOW_ALL
  • CloudFront・VPC Origin側にWebSocket固有の追加設定は不要、HTTP Upgradeを透過的に中継

Regional NAT Gateway(2025年11月GA)

  • CDKのL2 VpcコンストラクトはRegional NAT Gatewayに非対応のため CfnNatGateway (L1) で作成
  • availabilityMode: 'regional' + vpcId を直接指定(従来のzonal NAT Gwと異なり subnetId 不要)
  • パブリックサブネットなしのVPCからAgentCore Shell APIへのアウトバウンドを実現