ECSはタスク実行時にVPC外のリソースにアクセスする必要があります。
パブリックサブネットに配置する場合は特に必要ありませんが、プライベートサブネットに配置する場合は、それらリソースへのアクセス手段が必要になります。
awslogs
を使用ECRにはイメージのマニフェスト情報が配置されており、実際のコンテナレイヤー情報はS3に配置されている観点から必要 ref. エンドポイントを使用してプライベートサブネットでECSを使用する
awslogs
を設定している場合今回は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エンドポイントが設定されていない状況。
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