AWSのインターフェース型VPCエンドポイントの注意点

注意点

インターフェース型VPCエンドポイントを作成する際に配置するサブネットを複数選択できるのですが、VPCエンドポイント経由で通信したいサブネットを全部紐付けて、 terraform apply したら下記のようなエラーが出てしまいました。

creating EC2 VPC Endpoint (com.amazonaws.ap-northeast-1.ecr.dkr): DuplicateSubnetsInSameZone: Found another VPC endpoint subnet in the availability zone of subnet-hoge. VPC endpoint subnets should be in different availability zones supported by the VPC endpoint service.

インターフェイスエンドポイントで選択できるサブネットは、アベイラビリティーゾーンあたり 1 つのみです

引用元: インターフェイス VPC エンドポイント (AWS PrivateLink) - Amazon Virtual Private Cloud

1AZにつき1つのサブネットしか紐付けられないようです。

対応

各AZにつき1つのサブネットを代表として選び、制約を満たす必要があります。 エンドポイントのプライベートDNSにルーティング可能であればどこのサブネットにVPCエンドポイントを作成しても動作するようです。 実際に検証してみましたが、動作しました。

構成としては、zennで会川さんが紹介しているようなVPCエンドポイント用のサブネットを作成するのが1番シンプルだと思います。

引用元: 同じAZ内の複数subnetからECR PrivateLinkを利用する方法

合わせて読みたい