インターフェイス VPC エンドポイントと Route 53 で S3 アクセスを簡素化する
Route 53 のプライベートホストゾーンを使い、クライアントから `--endpoint-url` を指定せずに VPC エンドポイント経由で S3 へアクセスします。
2022 年当時、S3 のインターフェイス VPC エンドポイントを使って S3 にアクセスするには、--endpoint-url オプションの指定が必要です。Route 53 のプライベートホストゾーンを使って標準のリージョナル S3 ホスト名をエンドポイントに割り当てれば、このオプションを省略できます。

S3 VPC エンドポイント
インターフェイス VPC エンドポイントを作成します。
aws ec2 create-vpc-endpoint \ --vpc-id $YOUR_VPC_ID \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.$YOUR_REGION.s3 \ --subnet-ids $YOUR_PRIVATE_SUBNET_IDS \ --security-group-ids $YOUR_SECURITY_GROUP_IDSエンドポイントが作成されたことを確認し、DNS エントリを取得します。
aws ec2 describe-vpc-endpoints \ --filters Name=service-name,Values=com.amazonaws.$YOUR_REGION.s3 \ --query "VpcEndpoints[*].DnsEntries"[ [ { "DnsName": "*.vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com", "HostedZoneId": "xxxxxxxxxxxxxx" }, { "DnsName": "*.vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx-ap-northeast-1a.s3.ap-northeast-1.vpce.amazonaws.com", "HostedZoneId": "xxxxxxxxxxxxxx" } ]]VPC エンドポイントの URL を使って、S3 へのアクセスを確認します。
--region オプションを指定する必要があります。
aws s3 ls \ --region <YOUR_REGION> \ --endpoint-url http://vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.comRoute 53 のプライベートホストゾーン
Route 53 のプライベートホストゾーンを使うと、その URL を直接指定する必要がなくなります。
aws route53 create-hosted-zone \ --name s3.$YOUR_REGION.amazonaws.com \ --vpc VPCRegion=$YOUR_REGION,VPCId=$YOUR_VPC_ID \ --caller-reference "$(date)"Route 53 コンソールで、VPC エンドポイントを指す A(ALIAS) レコードを追加します。
Create record をクリックします。

レコードタイプとして A を、ルーティング先として Alias to VPC endpoint を選択します。

ホストゾーンを設定すると、--endpoint-url オプションを指定せずに S3 へアクセスできます。
--region オプションを指定する必要があります。
aws s3 ls --region ap-northeast-1まとめ
S3 のインターフェイス VPC エンドポイントと Route 53 のプライベートホストゾーンを組み合わせることで、--endpoint-url を指定せずに aws s3 ls をプライベートエンドポイント経由で実行できます。
s3.$YOUR_REGION.amazonaws.com 用のプライベートホストゾーンを作成し、インターフェイスエンドポイントを指す A(ALIAS) レコードを設定します。関連付けた VPC 内では、標準のリージョナル S3 ホスト名が VPC エンドポイントへ解決されます。カスタムエンドポイントを簡単に指定できないツールや SDK でも、クライアント側のコードを変更せずに利用できます。
ただし、プライベートホストゾーンを参照できるのは、関連付けた VPC に限られます。別の VPC から利用するにはホストゾーンとの関連付けが必要です。オンプレミスから利用する場合は、Route 53 Resolver のエンドポイントとルールなど、適切な DNS 転送経路を用意します。
関連記事
CloudFront 署名付き URL 経由で S3 にアップロードする
CloudFront の署名付き URL を使い、独自ドメイン経由で S3 にアップロードする方法を紹介します。S3 の署名付き URL を直接使えない場合に有用です。
Amazon S3 イベント通知の s3:TestEvent を処理する
Amazon S3 はイベント通知の設定時に s3:TestEvent メッセージを送信します。通常のイベント通知とは構造が異なるため、コンシューマー側で個別に処理する必要があります。
Athena と Kinesis Data Firehose で S3 のログをクエリする
Kinesis Data Firehose でログを S3 に配信し、Athena でクエリします。カスタムプレフィックスを使ってパーティションを自動登録する方法を解説します。
aws-vault から Granted に移行した話
aws-vault の開発終了をきっかけに Granted へ移行しました。ロールの切り替えやコンソールの開き方の違いと、認証情報や既存の設定を引き継ぐ際の注意点をまとめます。
Cognito User Pools と OIDC で Slack サインインを実装する
Cognito user pool を OIDC 経由で Slack と連携させ、"Sign in with Slack" を Amplify で Next.js アプリケーションに組み込みます。
