AWS CLI から S3 インターフェイスエンドポイント経由で S3 に HTTPS アクセスする際、endpoint-url オプションに設定する正しい DNS 名を教えてください

S3 インターフェイスエンドの DNS 名の「*」はバケット名に置き換えてはいけません。あくまで「bucket」という単語そのものに置き換える必要があります。
2023.03.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS CLI から S3 インターフェイスエンドポイント経由で S3 に HTTPS アクセスしたいと考えています。

S3 インターフェイスエンドポイントの DNS 名は以下です。

*.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com

DNS 名の「*」をバケット名に置き換えて以下のコマンドを実行したところ、「SSL validation failed for ~」エラーが発生しました。

$ aws s3 ls s3://my-bucket-20230313/ --endpoint-url https://my-bucket-20230313.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com --region ap-northeast-1

SSL validation failed for https://vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com/ hostname 'vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com' doesn't match either of 's3.ap-northeast-1.amazonaws.com', 'bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1d.s3.ap-northeast-1.vpce.amazonaws.com', '*.control.vpce-1a2b3c4d-5e6f-ap-northeast-1d.s3.ap-northeast-1.vpce.amazonaws.com', '*.bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1c.s3.ap-northeast-1.vpce.amazonaws.com', '*.accesspoint.vpce-1a2b3c4d-5e6f-ap-northeast-1c.s3.ap-northeast-1.vpce.amazonaws.com', 'bucket.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com', '*.bucket.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com', '*.control.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com', '*.accesspoint.vpce-1a2b3c4d-5e6f-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com', '*.s3.ap-northeast-1.amazonaws.com', '*.bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1d.s3.ap-northeast-1.vpce.amazonaws.com', 'bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1c.s3.ap-northeast-1.vpce.amazonaws.com', '*.accesspoint.vpce-1a2b3c4d-5e6f-ap-northeast-1d.s3.ap-northeast-1.vpce.amazonaws.com', '*.bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com', '*.control.vpce-1a2b3c4d-5e6f-ap-northeast-1c.s3.ap-northeast-1.vpce.amazonaws.com', '*.accesspoint.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com', '*.s3-accesspoint.ap-northeast-1.amazonaws.com', '*.s3-control.ap-northeast-1.amazonaws.com', 'bucket.vpce-1a2b3c4d-5e6f-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com', '*.control.vpce-1a2b3c4d-5e6f-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com'

エラーメッセージから DNS 名が正しく設定できていないように見受けられました。
endpoint-url オプションに設定する正しい DNS 名を教えてください

どう対応すればいいの?

S3 インターフェイスエンドの DNS 名の「*」は、バケット名に置き換えてはいけません。あくまで「bucket」という単語そのものに置き換える必要があります。

Amazon S3 用の AWS PrivateLink | S3 インターフェイスエンドポイントからのバケットおよび S3 アクセスポイントへのアクセス

次の図は、VPC コンソールの [Details] (詳細) タブを示しています。ここでは、VPC エンドポイントの DNS 名を確認できます。この例では、VPC エンドポイント ID (vpce-id) は vpce-0e25b8cdd720f900e で、DNS 名は *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com です。DNS 名を使用するときに、* を忘れずに置き換えてください。例えば、バケットにアクセスするには、bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com のような DNS 名を使用します。

endpoint-url オプションに正しい DNS 名を設定後、実行してみた結果は以下です。

$ aws s3 ls s3://my-bucket-20230313/ --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com --region ap-northeast-1

2023-03-13 00:00:00          0 test.txt

参考資料