汎用バケットのアクセスポイントを作成するときに、そのアクセスポイントをインターネットからアクセス可能にするか、特定の仮想プライベートクラウド (VPC) からのリクエストにのみアクセスを制限するかを指定できます。インターネットからアクセス可能なアクセスポイントは、Internet
をネットワークオリジンとすると言います。この種のアクセスポイントは、インターネット上のどこからでも利用できます。ただし、このアクセスポイントや、基となるバケット、関連リソース (リクエストされたオブジェクトなど) に関する他のすべてのアクセス制限に従うことを条件とします。指定された VPC からのみアクセス可能なアクセスポイントは VPC
をネットワークオリジンとします。Amazon S3 は、アクセスポイントに対するその VPC からのリクエストを除いて、他のすべてのリクエストを拒否します。
重要
アクセスポイントのネットワークオリジンは、アクセスポイントの作成時にのみ指定できます。アクセスポイントの作成後は、そのネットワークオリジンを変更できません。
アクセスポイントを VPC からのアクセスにのみ制限するには、アクセスポイントを作成するリクエストに VpcConfiguration
パラメータを含めます。VpcConfiguration
パラメータには、アクセスポイントを使用できるようにする VPC ID を指定します。アクセスポイントを介してリクエストが行われた場合、リクエストは VPC から発信されている必要があり、そうでない場合、Amazon S3 はそれを拒否します。
アクセスポイントのネットワークオリジンを取得するには、AWS CLI、AWS SDK、または REST API を使用します。アクセスポイントに VPC 設定が指定されている場合、そのネットワークオリジンは VPC
です。それ以外の場合、アクセスポイントのネットワークオリジンは Internet
です。
例: VPC アクセスに制限されたアクセスポイントを作成する
次の例では、アカウント 123456789012
のバケット
に対して amzn-s3-demo-bucket
vpc-1a2b3c
VPC からのアクセスのみを許可する example-vpc-ap
という名前のアクセスポイントを作成します。次に、新しいアクセスポイントのネットワークオリジンが VPC
であることを確認します。
aws s3control create-access-point --name example-vpc-ap --account-id 123456789012 --bucket
amzn-s3-demo-bucket
--vpc-configuration VpcId=vpc-1a2b3c
aws s3control get-access-point --name example-vpc-ap --account-id 123456789012 { "Name": "example-vpc-ap", "Bucket": "
amzn-s3-demo-bucket
", "NetworkOrigin": "VPC", "VpcConfiguration": { "VpcId": "vpc-1a2b3c" }, "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "IgnorePublicAcls": true, "BlockPublicPolicy": true, "RestrictPublicBuckets": true }, "CreationDate": "2019-11-27T00:00:00Z" }
VPC でアクセスポイントを使用するには、VPC エンドポイントのアクセスポリシーを変更する必要があります。VPC エンドポイントは、VPC から Amazon S3 へのトラフィックフローを許可します。これらのエンドポイントには、VPC 内のリソースに対して Amazon S3 とのやり取りを許可する方法を制御するアクセスコントロールポリシーがあります。アクセスポイントを経由した VPC から Amazon S3 へのリクエストが成功するのは、VPC エンドポイントポリシーがアクセスポイントおよび基となるバケットの両方へのアクセスを許可した場合のみです。
注記
VPC 内でのみリソースにアクセスできるようにするには、VPC エンドポイントエンドポイントに対してプライベートホストゾーンを必ず作成してください。プライベートホストゾーンを使うには、VPC 設定を変更して、VPC のネットワーク属性 enableDnsHostnames
と enableDnsSupport
を true
に設定してください。
次のポリシーステートメントの例では、awsexamplebucket1
という名前のバケットと example-vpc-ap
という名前のアクセスポイントに対する GetObject
の呼び出しを許可するように VPC エンドポイントを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::awsexamplebucket1/*",
"arn:aws:s3:us-west-2:123456789012:accesspoint/example-vpc-ap/object/*"
]
}]
}
注記
この例の "Resource"
宣言では、Amazon リソースネーム (ARN) を使用してアクセスポイントを指定します。アクセスポイントの ARN の詳細については、「汎用バケットでの Amazon S3 アクセスポイントの使用」を参照してください。
VPC エンドポイントポリシーの詳細については、VPC ユーザーガイドの「Amazon S3 のエンドポイントポリシーの使用」を参照してください。
VPC エンドポイントを使用してアクセスポイントを作成するチュートリアルについては、「Managing Amazon S3 access with VPC endpoints and access points