PrivateなEC2からセキュアにS3にアクセスする
PrivateなVPCの中にあるEC2から非公開なS3のファイルをダウンロードする。インターネットには全く出ることができない環境。
VPCにS3へのエンドポイントを作ることで、VPC内のEC2とS3が通信できるようになる。
この時、
- VPCからS3までAWSで通信が完結する(外部の経路を通らない)
- インターネット上に公開されるゲートウェイが作成されるわけではない
のでセキュアに通信できる。
EC2はWindows。
VPCにエンドポイントを作る
VPCとEC2が通信するためのエンドポイントを作る。
エンドポイントは、インターフェースエンドポイントとゲートウェイエンドポイントの2種類がある。今回はゲートウェイエンドポイントを作成する。
手順は以下のリンクから。
Amazon S3 のゲートウェイエンドポイント - Amazon Virtual Private Cloud
AWS CLI
WindowsのEC2はAWS CLIがインストールされていない。
EC2はインターネットに出られないようになっていたので、RDP経由でローカルのインストーラーをコピーした。
IAM
EC2のIAMでS3へのアクセスを許可する。以下のポリシーEC2に当たるように設定する。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Sid": "GetObjects",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:HeadObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
権限が適切に設定されてないとエラーが出る。
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
ダウンロードする
バケットの中を確認する。
aws s3 ls s3://my-bucket
2025-09-05 02:09:23 143486464 myData1
2025-09-04 07:04:23 3516037632 myData2
コピーを実行する。
aws s3 cp s3://my-bucket/myData1 ./
以下のように出ればダウンロード成功。
download: s3://my-bucket/myData1 to .\myData1
参考
おまけ
AIに相談している時に教えてもらった、AWSが公開しているIPアドレス調査ツール。調べてみるとAWS的には非公開のようだが、検索結果には情報がバンバン出てくる。
https://checkip.amazonaws.com