Amazon DynamoDB のゲートウェイエンドポイント
ゲートウェイ VPC エンドポイントを使用して、VPC から Amazon DynamoDB にアクセスできます。ゲートウェイエンドポイントを作成したら、そのエンドポイントをルートテーブル内のターゲットとして、VPC から DynamoDB に送信されるトラフィック用に追加できます。
ゲートウェイエンドポイントは追加料金なしで使用できます。
DynamoDB は、ゲートウェイエンドポイントとインターフェイスエンドポイントの両方をサポートしています。ゲートウェイエンドポイントを使用して、VPC 用のインターネットゲートウェイや NAT デバイスを必要とせず、VPC から DynamoDB にアクセスすることができます。ただし、ゲートウェイエンドポイントでは、オンプレミスネットワーク、他の AWS リージョンのピアリングされた VPC からのアクセス、またはトランジットゲートウェイ経由のアクセスは許可されません。このようなシナリオでは、追加料金で利用できるインターフェイスエンドポイントを使用する必要があります。詳細については、「Amazon DynamoDB デベロッパーガイド」の「Amazon DynamoDB で使用される Amazon VPC エンドポイントのタイプ」を参照してください。
考慮事項
-
ゲートウェイエンドポイントは、それを作成したリージョンでのみ使用できます。必ず DynamoDB テーブルと同じリージョンにゲートウェイエンドポイントを作成してください。
-
Amazon DNS サーバーを使用している場合は、VPC の DNS ホスト名と DNS 解決の両方を有効にする必要があります。独自の DNS サーバーを使用している場合は、DynamoDB へのリクエストが AWS によって維持されている IP アドレスに正しく解決されることを確認してください。
-
ゲートウェイエンドポイントを通じて DynamoDB にアクセスするインスタンスのセキュリティグループのルールは、DynamoDB との間のトラフィックを許可する必要があります。DynamoDB のプレフィックスリスト ID は、セキュリティグループルールで参照できます。
-
ゲートウェイエンドポイントを通じて DynamoDB にアクセスするインスタンスのサブネットのネットワーク ACL は、DynamoDB との間のトラフィックを許可する必要があります。ネットワーク ACL ルールでプレフィックスリストを参照することはできませんが、DynamoDB の IP アドレス範囲は DynamoDB のプレフィックスリストから取得できます。
-
AWS CloudTrail を使用して DynamoDB オペレーションをログに記録する場合、ログファイルにはサービスコンシューマー VPC の EC2 インスタンスのプライベート IP アドレスと、エンドポイントを通じて実行されるアクション用のゲートウェイエンドポイントの ID が含まれます。
-
ゲートウェイエンドポイントは、IPv4 トラフィックのみをサポートします。
-
影響を受けるサブネットのインスタンスからのソース IPv4 アドレスは、パブリック IPv4 アドレスから VPC のプライベート IPv4 アドレスに変更されます。エンドポイントはネットワークルートを切り替え、開いている TCP 接続を切断します。パブリック IPv4 アドレスを使用した以前の接続は再開されません。ゲートウェイエンドポイントの作成または変更は、重要なタスクが実行中でないときに行うことをお勧めします。または、接続が切断された場合にソフトウェアが DynamoDB に自動的に再接続できることを確認するためにテストしてください。
-
エンドポイントの接続を、VPC から延長することはできません。VPN 接続、VPC ピアリング接続、トランジットゲートウェイ、または VPC 内の AWS Direct Connect 接続の反対側のリソースは、ゲートウェイエンドポイントを使用して DynamoDB と通信することはできません。
-
アカウントには、リージョンあたり 20 個のゲートウェイエンドポイントのデフォルトクォータがあり、調整可能です。また、VPC あたりのゲートウェイエンドポイントの数は 255 に制限されています。
ゲートウェイエンドポイントを作成する
次の手順を使用して、DynamoDB に接続するゲートウェイエンドポイントを作成します。
コンソールを使用してゲートウェイエンドポイントを作成するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。
-
[エンドポイントの作成] を選択します。
-
[Service category] (サービスカテゴリ) で、AWS のサービス を選択します。
-
[サービス] で、[タイプ] = [ゲートウェイ] でフィルタリングし、com.amazonaws.
region
.dynamodb を選択します。 -
[VPC] で、エンドポイントを作成する先の VPC を選択します。
-
[Route tables] (ルートテーブル) で、エンドポイントで使用するルートテーブルを選択します。サービス宛てのトラフィックをエンドポイントのネットワークインターフェイスにポイントするルートが自動的に追加されます。
-
[Policy] (ポリシー) で [Full access] (フルアクセス) を選択して、すべてのリソースに対するすべてのプリンシパルによる VPC エンドポイント経由のすべてのオペレーションを許可します。それ以外の場合は、[Custom] (カスタム) を選択して、VPC エンドポイント経由でリソースに対してアクションを実行するためにプリンシパルが持つ許可を制御する VPC エンドポイントポリシーをアタッチします。
-
(オプション) タグを追加するには、[新しいタグを追加] を選択し、そのタグのキーと値を入力します。
-
[エンドポイントの作成] を選択します。
コマンドラインを使用してゲートウェイエンドポイントを作成するには
-
create-vpc-endpoint (AWS CLI)
-
New-EC2VpcEndpoint (Tools for Windows PowerShell)
IAM ポリシーを使用してアクセスを制御する
IAM ポリシーを作成して、特定の VPC エンドポイントを使用して DynamoDB テーブルにアクセスできる IAM プリンシパルを制御できます。
例: 特定のエンドポイントへのアクセスを制限する
aws:sourceVpce 条件キーを使用して、特定の VPC エンドポイントへのアクセスを制限するポリシーを作成できます。次のポリシーは、指定された VPC エンドポイントが使用されていない限り、アカウントの DynamoDB テーブルへのアクセスを拒否します。この例では、ユースケースに必要なアクセスを許可するポリシーステートメントがあることを前提としています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-from-specific-endpoint", "Effect": "Deny", "Principal": "*", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:
region
:account-id
:table/*", "Condition": { "StringNotEquals" : { "aws:sourceVpce": "vpce-11aa22bb" } } } ] }
例: 特定の IAM ロールからのアクセスを許可する
特定の IAM ロールを使用してアクセスを許可するポリシーを作成できます。次のポリシーは、指定された IAM ロールに対するアクセス権を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-from-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-access-from-account", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "
111122223333
" } } } ] }
ルートテーブルを関連付ける
ゲートウェイエンドポイントに関連付けられているルートテーブルを変更できます。ルートテーブルを関連付けると、サービス宛てのトラフィックをエンドポイントのネットワークインターフェイスにポイントするルートが自動的に追加されます。ルートテーブルの関連付けを解除すると、エンドポイントルートはルートテーブルから自動的に削除されます。
コンソールを使用してルートテーブルを関連付けるには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。
-
ゲートウェイエンドポイントを選択する
-
[Actions]、[Manage route tables] の順に選択します。
-
必要に応じて、ルートテーブルを選択または選択解除します。
-
[Modify route tables] (ルートテーブルを変更) を選択します。
コマンドラインを使用してルートテーブルを関連付けるには
-
modify-vpc-endpoint (AWS CLI)
-
Edit-EC2VpcEndpoint (Tools for Windows PowerShell)
VPC エンドポイントポリシーを編集する
ゲートウェイエンドポイントのエンドポイントポリシーを編集して、VPC から DynamoDB へのエンドポイント経由のアクセスを制御できます。デフォルトポリシーでは、フルアクセスを許可します。詳細については、「エンドポイントポリシー」を参照してください。
コンソールを使用してエンドポイントポリシーを変更するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。
-
ゲートウェイエンドポイントを選択する
-
[Actions] (アクション)、[Manage policy] (ポリシーを管理) の順に選択します。
-
[Full Access] (フルアクセス) を選択してサービスへのフルアクセスを許可するか、[Custom] (カスタム) を選択してカスタムポリシーをアタッチします。
-
[Save] を選択します。
コマンドラインを使用してゲートウェイエンドポイントを変更するには
-
modify-vpc-endpoint (AWS CLI)
-
Edit-EC2VpcEndpoint (Tools for Windows PowerShell)
DynamoDB にアクセスするためのエンドポイントのポリシーの例は次のとおりです。
例: 読み取り専用アクセスを許可する
アクセスを読み取り専用アクセスに制限するポリシーを作成できます。次のポリシーは、DynamoDB テーブルを一覧表示および説明するための許可を付与します。
{ "Statement": [ { "Sid": "ReadOnlyAccess", "Effect": "Allow", "Principal": "*", "Action": [ "dynamodb:DescribeTable", "dynamodb:ListTables" ], "Resource": "*" } ] }
例: 特定のテーブルへのアクセスの制限
特定の DynamoDB テーブルへのアクセスを制限するポリシーを作成できます。次のポリシーは、指定された DynamoDB テーブルへのアクセスを許可します。
{ "Statement": [ { "Sid": "Allow-access-to-specific-table", "Effect": "Allow", "Principal": "*", "Action": [ "dynamodb:Batch*", "dynamodb:Delete*", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Update*" ], "Resource": "arn:aws:dynamodb:
region
:123456789012
:table/table_name
" } ] }
ゲートウェイエンドポイントを削除する
不要になったゲートウェイエンドポイントは、削除することができます。ゲートウェイエンドポイントを削除すると、エンドポイントルートがサブネットルートテーブルから削除されます。
コンソールを使用してゲートウェイエンドポイントを削除するには
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
ナビゲーションペインで、[Endpoints] (エンドポイント) を選択します。
-
ゲートウェイエンドポイントを選択する
-
[Actions] (アクション)、[Delete VPC endpoints] (VPC エンドポイントを削除) の順に選択します。
-
確認を求められたら、
delete
をクリックします。 -
[削除] を選択します。
コマンドラインを使用してゲートウェイエンドポイントを削除するには
-
delete-vpc-endpoints (AWS CLI)
-
Remove-EC2VpcEndpoint (Tools for Windows PowerShell)