#
ドキュメント

Document

自分のための備忘録です。

プライベートサブネットでECSを実行

ECSはタスク実行時にVPC外のリソースにアクセスする必要があります。
パブリックサブネットに配置する場合は特に必要ありませんが、プライベートサブネットに配置する場合は、それらリソースへのアクセス手段が必要になります。

前提

  • ECRのイメージを使用
  • コンテナのログドライバーとしてawslogsを使用

タスク実行時にアクセスするリソース

接続手段

  • NATゲートウェイを使用
  • VPC エンドポイントを使用

今回はVPC エンドポイントを使用する例を記載します。

VPC エンドポイント

サービス名 タイプ 内容
com.amazonaws.ap-northeast-1.ecr.dkr Interface 「ECRへdocker pullやdocker pushを実行する時に利用されるエンドポイント」(エンドポイントを使用してプライベートサブネットでECSを使用する
com.amazonaws.ap-northeast-1.ecr.api Interface ECRのAPI
com.amazonaws.ap-northeast-1.s3 Gateway S3のエンドポイント
com.amazonaws.ap-northeast-1.logs Interface CloudWatchのエンドポイント

InterfaceタイプのVPCエンドポイントはENIなのでセキュリティグループを割り当てます。
セキュリティグループはステーフルですが、タスク実行時にエンドポイント側発信のHTTPSアクセスがあるのでHTTPSを許可する必要があります。

タスクからVPC外のリソースにアクセス

SQS

VPCエンドポイントが設定されていない状況。

Error executing "SendMessage" on "https://sqs.xxxxx"; AWS HTTP error: cURL error 6: Could not resolve host: sqs.ap-northeast-1.amaz (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://sqs.xxxxx

参考