Amazon S3 のゲートウェイエンドポイント - Amazon Virtual Private Cloud

Amazon S3 のゲートウェイエンドポイント

ゲートウェイ VPC エンドポイントを使用して、VPC から Amazon S3 にアクセスできます。ゲートウェイエンドポイントを作成したら、そのエンドポイントをルートテーブル内のターゲットとして、VPC から Amazon S3 に送信されるトラフィック用に追加できます。

ゲートウェイエンドポイントは追加料金なしで使用できます。

Amazon S3 は、ゲートウェイエンドポイントとインターフェイスエンドポイントの両方をサポートしています。ゲートウェイエンドポイントを使用して、VPC 用のインターネットゲートウェイや NAT デバイスを必要とせず、VPC から Amazon S3 にアクセスすることができます。ただし、ゲートウェイエンドポイントでは、オンプレミスネットワーク、他の AWS リージョンのピアリングされた VPC からのアクセス、またはトランジットゲートウェイ経由のアクセスは許可されません。このようなシナリオでは、追加料金で利用できるインターフェイスエンドポイントを使用する必要があります。詳細については、「Amazon S3 ユーザーガイド」の「Amazon S3 における VPC エンドポイントのタイプ」を参照してください。

考慮事項

  • ゲートウェイエンドポイントは、それを作成したリージョンでのみ使用できます。必ず S3 バケットと同じリージョンにゲートウェイエンドポイントを作成してください。

  • Amazon DNS サーバーを使用している場合は、VPC の DNS ホスト名と DNS 解決の両方を有効にする必要があります。独自の DNS サーバーを使用している場合は、Amazon S3 へのリクエストが AWS によって維持されている IP アドレスに正しく解決されることを確認してください。

  • ゲートウェイエンドポイントを通じて Amazon S3 にアクセスするインスタンスのセキュリティグループのルールは、Amazon S3 との間のトラフィックを許可する必要があります。Amazon S3 のプレフィックスリスト ID は、セキュリティグループルールで参照できます。

  • ゲートウェイエンドポイントを通じて Amazon S3 にアクセスするインスタンスのサブネットのネットワーク ACL は、Amazon S3 との間のトラフィックを許可する必要があります。ネットワーク ACL ルールでプレフィックスリストを参照することはできませんが、Amazon S3 の IP アドレス範囲は Amazon S3 のプレフィックスリストから取得できます。

  • S3 バケットへのアクセスが必要な AWS のサービス を使用しているかどうかを確認します。例えば、サービスがログファイルを含むバケットへのアクセスを必要とする場合や、ドライバーまたはエージェントを EC2 インスタンスにダウンロードする必要がある場合があります。その場合、AWS のサービス またはリソースが s3:GetObject アクションを使用してこれらのバケットにアクセスすることをエンドポイントポリシーが許可するようにします。

  • VPC エンドポイントを通過する Amazon S3 へのリクエストでは、アイデンティティポリシーおよびバケットポリシーで aws:SourceIp 条件を使用することはできません。代わりに aws:VpcSourceIp 条件を使用してください。ルートテーブルを使用して、VPC エンドポイントから Amazon S3 にアクセスできる EC2 インスタンスを制御することもできます。

  • ゲートウェイエンドポイントは、IPv4 トラフィックのみをサポートします。

  • Amazon S3 によって受信される、影響を受けるサブネットのインスタンスからのソース IPv4 アドレスは、パブリック IPv4 アドレスから VPC のプライベート IPv4 アドレスに変更されます。エンドポイントはネットワークルートを切り替え、開いている TCP 接続を切断します。パブリック IPv4 アドレスを使用した以前の接続は再開されません。エンドポイントの作成または変更は、重要なタスクが実行中でないときに行うことをお勧めします。または、接続の障害後に、ソフトウェアが Amazon S3 に自動的に再接続できることをテストするようお勧めします。

  • エンドポイントの接続を、VPC から延長することはできません。VPN 接続、VPC ピアリング接続、トランジットゲートウェイ、または VPC 内の AWS Direct Connect 接続の反対側のリソースは、ゲートウェイエンドポイントを使用して Amazon S3 と通信することはできません。

  • アカウントには、リージョンあたり 20 個のゲートウェイエンドポイントのデフォルトクォータがあり、調整可能です。また、VPC あたりのゲートウェイエンドポイントの数は 255 に制限されています。

プライベート DNS

Amazon S3 のゲートウェイエンドポイントとインターフェイスエンドポイントの両方を作成するときに、プライベート DNS を設定してコストを最適化できます。

Route 53 Resolver

Amazon は、「Route 53 Resolver」と呼ばれる VPC 用の DNS サーバーを提供しています。Route 53 Resolver は、プライベートホストゾーンのローカル VPC ドメイン名とレコードを自動的に解決します。ただし、VPC の外部から Route 53 Resolver を使用することはできません。Route 53 は、VPC の外から Route 53 Resolver を使用できるように、Resolver エンドポイントと Resolver ルールを提供します。インバウンド Resolver エンドポイントは、DNS クエリをオンプレミスネットワークから Route 53 Resolver に転送します。アウトバウンド Resolver エンドポイントは、Route 53 Resolver から DNS クエリをオンプレミスネットワークに転送します。

Amazon S3 のインターフェイスエンドポイントをインバウンド Resolver エンドポイントにのみプライベート DNS を使用するように設定すると、インバウンド Resolver エンドポイントが作成されます。インバウンド Resolver エンドポイントは、オンプレミスからの Amazon S3 への DNS クエリをインターフェイスエンドポイントのプライベート IP アドレスに解決します。また、Route 53 Resolver の ALIAS レコードを Amazon S3 のパブリックホストゾーンに追加して、VPC からの DNS クエリが Amazon S3 のパブリック IP アドレスに解決され、トラフィックがゲートウェイエンドポイントにルーティングされるようにします。

プライベート DNS

Amazon S3 のインターフェイスエンドポイントにはプライベート DNS を設定し、インバウンドの Resolver エンドポイントにのみプライベート DNS を設定しない場合、オンプレミスネットワークと VPC の両方からのリクエストは、インターフェイスエンドポイントを使用して Amazon S3 にアクセスします。そのため、追加料金なしでゲートウェイエンドポイントを使用する代わりに、VPC からのトラフィックにはインターフェイスエンドポイントを使用するため料金が発生します。

両方のエンドポイントタイプを伴う Amazon S3 リクエストルーティング。
インバウンド Resolver エンドポイント専用のプライベート DNS

インバウンドの Resolver エンドポイントのみにプライベート DNS を設定する場合、オンプレミスネットワークからのリクエストはインターフェイスエンドポイントを使用して Amazon S3 にアクセスし、VPC からのリクエストはゲートウェイエンドポイントを使用して Amazon S3 にアクセスします。そのため、ゲートウェイエンドポイントを使用できないトラフィックにのみインターフェイスエンドポイントの使用料を支払うので、コストを最適化できます。

プライベート DNS とインバウンド Resolver エンドポイントを伴う Amazon S3 リクエストルーティング。
プライベート DNS の設定

Amazon S3 のインターフェイスエンドポイントのプライベート DNS は、作成時または作成後に設定できます。詳細については、「VPC エンドポイントの作成 (作成中に設定)」または「プライベート DNS 名を有効にする (作成後に設定)」を参照してください。

ゲートウェイエンドポイントを作成する

次の手順を使用して、Amazon S3 に接続するゲートウェイエンドポイントを作成します。

コンソールを使用してゲートウェイエンドポイントを作成するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。

  3. [エンドポイントの作成] を選択します。

  4. [Service category] (サービスカテゴリ) で、AWS のサービス を選択します。

  5. [サービス] で、[タイプ] = [ゲートウェイ] でフィルタリングし、com.amazonaws.region.s3 を選択します。

  6. [VPC] で、エンドポイントを作成する先の VPC を選択します。

  7. [Route tables] (ルートテーブル) で、エンドポイントで使用するルートテーブルを選択します。サービス宛てのトラフィックをエンドポイントのネットワークインターフェイスにポイントするルートが自動的に追加されます。

  8. [Policy] (ポリシー) で [Full access] (フルアクセス) を選択して、すべてのリソースに対するすべてのプリンシパルによる VPC エンドポイント経由のすべてのオペレーションを許可します。それ以外の場合は、[Custom] (カスタム) を選択して、VPC エンドポイント経由でリソースに対してアクションを実行するためにプリンシパルが持つ許可を制御する VPC エンドポイントポリシーをアタッチします。

  9. (オプション) タグを追加するには、[新しいタグを追加] を選択し、そのタグのキーと値を入力します。

  10. [エンドポイントの作成] を選択します。

コマンドラインを使用してゲートウェイエンドポイントを作成するには

バケットポリシーを使用してアクセスを制御する

バケットポリシーを使用して、特定のエンドポイント、VPC、IP アドレス範囲、および AWS アカウント からバケットへのアクセスを制御できます。これらの例では、ユースケースに必要なアクセスを許可するポリシーステートメントがあることを前提としています。

例: 特定のエンドポイントへのアクセスを制限する

aws:sourceVpce 条件キーを使用して、特定のエンドポイントへのアクセスを制限するバケットポリシーを作成できます。次のポリシーは、指定されたゲートウェイエンドポイントが使用された場合を除き、指定されたアクションでの指定バケットへのアクセスを拒否します。このポリシーは、指定されたアクションでの AWS Management Console を介した指定バケットへのアクセスをブロックすることに注意してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPCE", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }
例: 特定の VPC へのアクセスを制限する

aws:sourceVpc 条件キーを使用して、特定の VPC へのアクセスを制限するバケットポリシーを作成できます。これは、同じ VPC で複数のエンドポイントを設定済みである場合に便利です。次のポリシーは、リクエストが指定された VPC からのものである場合を除き、指定されたアクションでの指定バケットへのアクセスを拒否します。このポリシーは、指定されたアクションでの AWS Management Console を介した指定バケットへのアクセスをブロックすることに注意してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::example_bucket", "arn:aws:s3:::example_bucket/*"], "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-111bbb22" } } } ] }
例: 特定の IP アドレス範囲へのアクセスを制限する

aws:VpcSourceIp 条件キーを使用して、特定の IP アドレス範囲へのアクセスを制限するポリシーを作成できます。次のポリシーは、リクエストが指定された IP アドレスからのものである場合を除き、指定されたアクションでの指定バケットへのアクセスを拒否します。このポリシーは、指定されたアクションでの AWS Management Console を介した指定バケットへのアクセスをブロックすることに注意してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC-CIDR", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "NotIpAddress": { "aws:VpcSourceIp": "172.31.0.0/16" } } } ] }
例: 特定の AWS アカウント のバケットへのアクセスを制限する

s3:ResourceAccount 条件キーを使用して、特定の AWS アカウント の S3 バケットへのアクセスを制限するポリシーを作成できます。次のポリシーは、指定された AWS アカウント によって S3 バケットが所有されている場合を除き、指定されたアクションでの S3 バケットへのアクセスを拒否します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-bucket-in-specific-account", "Effect": "Deny", "Principal": "*", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "s3:ResourceAccount": "111122223333" } } } ] }

ルートテーブルを関連付ける

ゲートウェイエンドポイントに関連付けられているルートテーブルを変更できます。ルートテーブルを関連付けると、サービス宛てのトラフィックをエンドポイントのネットワークインターフェイスにポイントするルートが自動的に追加されます。ルートテーブルの関連付けを解除すると、エンドポイントルートはルートテーブルから自動的に削除されます。

コンソールを使用してルートテーブルを関連付けるには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。

  3. ゲートウェイエンドポイントを選択する

  4. [Actions]、[Manage route tables] の順に選択します。

  5. 必要に応じて、ルートテーブルを選択または選択解除します。

  6. [Modify route tables] (ルートテーブルを変更) を選択します。

コマンドラインを使用してルートテーブルを関連付けるには

VPC エンドポイントポリシーを編集する

ゲートウェイエンドポイントのエンドポイントポリシーを編集して、VPC から Amazon S3 へのエンドポイント経由のアクセスを制御できます。デフォルトポリシーでは、フルアクセスを許可します。詳細については、「エンドポイントポリシー」を参照してください。

コンソールを使用してエンドポイントポリシーを変更するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。

  3. ゲートウェイエンドポイントを選択する

  4. [Actions] (アクション)、[Manage policy] (ポリシーを管理) の順に選択します。

  5. [Full Access] (フルアクセス) を選択してサービスへのフルアクセスを許可するか、[Custom] (カスタム) を選択してカスタムポリシーをアタッチします。

  6. [Save] を選択します。

Amazon S3 にアクセスするためのエンドポイントのポリシーの例は次のとおりです。

例: 特定のバケットへのアクセスを制限する

特定の S3 バケットへのアクセスを制限するポリシーを作成できます。これは、VPC で S3 バケットを使用する他の AWS のサービス がある場合に便利です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-bucket", "Effect": "Allow", "Principal": "*", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*" ] } ] }
例: 特定の IAM ロールへのアクセスを制限する

特定の IAM ロールへのアクセスを制限するポリシーを作成できます。aws:PrincipalArn を使用してプリンシパルへのアクセスを許可する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-IAM-role", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name" } } } ] }
例: 特定のアカウントのユーザーへのアクセスを制限する

特定のアカウントへのアクセスを制限するポリシーを作成できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-callers-from-specific-account", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

ゲートウェイエンドポイントを削除する

不要になったゲートウェイエンドポイントは、削除することができます。ゲートウェイエンドポイントを削除すると、エンドポイントルートがサブネットルートテーブルから削除されます。

プライベート DNS が有効になった場合、ゲートウェイエンドポイントを削除することはできません。

コンソールを使用してゲートウェイエンドポイントを削除するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。

  3. ゲートウェイエンドポイントを選択する

  4. [Actions] (アクション)、[Delete VPC endpoints] (VPC エンドポイントを削除) の順に選択します。

  5. 確認を求められたら、delete をクリックします。

  6. [削除] を選択します。

コマンドラインを使用してゲートウェイエンドポイントを削除するには