Amazon Virtual Private Cloud (Amazon VPC) から Amazon Simple Storage Service (Amazon S3) バケットへのプライベート接続を作成したいです。しかし、AWS Identity and Access Management (IAM) 認証情報などの認証を使用したくありません。このタイプのプライベート接続を作成するにはどうすればよいですか?
簡単な説明
Amazon Virtual Private Cloud(Amazon VPC)からバケットにアクセスする場合、認証なしでS3バケットにプライベートにアクセスできます。ただし、使用する VPC エンドポイントが Amazon S3 を指していることを確認してください。
S3 バケットへの VPC エンドポイントアクセスを設定するには、次の手順通りに進めてください:
1. Amazon S3 の VPC エンドポイントを作成します。
2. VPC エンドポイントからのアクセスを許可するバケットポリシーを追加します。
解決方法
開始する前に、バケットにアクセスする VPC を作成する必要があります。
Amazon S3 の VPC エンドポイントを作成する
1. Amazon VPC コンソールを開きます。
2. ナビゲーションバーのリージョンセレクターを使用して、AWS リージョンを S3 バケットと同じリージョンに設定します。
3. ナビゲーションペインから、[エンドポイント] を選択します。
4. [エンドポイントを作成] を選択します。
5. [Service category] (サービスカテゴリ) で、「AWS サービス」が選択されていることを確認します。
6. [ サービス名 ] で、「s3」サービス名と「ゲートウェイ」タイプを選択します。例えば、米国東部 (バージニア北部) リージョンのサービス名は com.amazonaws.us-east-1.s3 です。
7. [ VPC ] で、VPC を選択します。
8. [Configure route tables] (ルートテーブルの構成) で、エンドポイントにアクセスできるようにする関連サブネットに基づいてルートテーブルを選択します。
9. [Policy] (ポリシー) で、[Full Access] (フルアクセス) が選択されていることを確認します。
10. [エンドポイントを作成] を選択します。
11. VPC エンドポイント ID をメモします。このエンドポイント ID は、後の手順で必要になります。
VPC エンドポイントからのアクセスを許可するバケットポリシーを追加する
作成した VPC エンドポイントからのリクエストである場合、ユーザーが S3 バケットにアクセスできるようにする条件でバケットポリシーを更新します。
これらのユーザーがオブジェクト(s3:GetObject) をダウンロードできるようにするには、次のようなバケットポリシーを使用できます。
{
"Version": "2012-10-17",
"Id": "Policy1415115909152",
"Statement": [
{
"Sid": "Access-to-specific-VPCE-only",
"Principal": "*",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"],
"Condition": {
"StringEquals": {
"aws:sourceVpce": "vpce-1a2b3c4d"
}
}
}
]
}
aws:sourceVpce の値には、作成したエンドポイントの VPC エンドポイント ID を入力してください。
重要: このポリシーは VPC エンドポイントからのアクセスを許可しますが、エンドポイントの外部からのすべてのアクセスを拒否するわけではありません。同じアカウントのユーザーが認証されている場合でも、このポリシーにより、ユーザーは VPC エンドポイントの外部からバケットにアクセスできます。より制限的なバケットポリシーについては、エンドポイントの外部からのリクエストへのアクセスを明示的に拒否するポリシーを使用してください。
関連情報
Amazon S3 のゲートウェイエンドポイント