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