Amazon VPC エンドポイントを使用して DynamoDB にアクセスする - Amazon DynamoDB

Amazon VPC エンドポイントを使用して DynamoDB にアクセスする

セキュリティ上の理由から、多くの AWS ユーザーがアプリケーションを Amazon Virtual Private Cloud 環境 (Amazon VPC) 内で実行しています。Amazon VPC を使用すると、Amazon EC2 インスタンスを仮想プライベートクラウドで作成できます。そのため、パブリックインターネットなどの他のネットワークから論理的に分離されます。Amazon VPC を使用すると、IP アドレスの範囲、サブネット、ルーティングテーブル、ネットワークゲートウェイ、セキュリティ設定を適切に管理できます。

注記

2013 年 12 月 4 日以降に AWS アカウントを作成した場合は、各 AWS リージョンにデフォルトの VPC が用意されています。デフォルトの VPC は、使用できる状態になっています。追加で設定手順を実行することなく、すぐに利用開始できます。

デフォルト VPC の詳細については、Amazon VPC ユーザーガイドの「デフォルト VPC とデフォルトサブネット」を参照してください。

パブリックインターネットにアクセスするには、VPC にインターネットゲートウェイ (VPC をインターネットに接続する仮想ルーター) が必要です。これにより、VPC 内の Amazon EC2 で実行されているアプリケーションで、Amazon DynamoDB などのインターネットリソースにアクセスすることが可能になります。

デフォルトでは、DynamoDB との通信において、SSL/TLS 暗号化を使用してネットワークトラフィックを保護する HTTPS プロトコルが使用されます。次の図は、VPC 内の Amazon EC2 インスタンスから DynamoDB にアクセスするために、VPC エンドポイントではなくインターネットゲートウェイを使用する例を示しています。

ルーター、インターネットゲートウェイ、およびインターネットを経由して DynamoDB にアクセスする Amazon EC2 インスタンスを示すワークフロー図。

多くのお客様が、パブリックインターネット間のデータ送受信に関して、プライバシーとセキュリティに関する正当な懸念を抱いています。これらの懸念を解決するために、仮想プライベートネットワーク (VPN) を使用して、すべての DynamoDB ネットワークトラフィックをお客様の企業ネットワークのインフラストラクチャ経由でルーティングできます。ただし、このアプローチでは、帯域幅や可用性の課題が生じる場合があります。

DynamoDB 用の VPC エンドポイントでは、これらの課題は軽減されます。DynamoDB 用の VPC エンドポイントを使用すると、VPC 内の Amazon EC2 インスタンスがパブリックインターネットにさらされることなく、プライベート IP アドレスを使用して DynamoDB にアクセスできるようになります。EC2 インスタンス にパブリック IP アドレスは必要ありません。また、VPC にインターネットゲートウェイ、NAT デバイス、仮想プライベートゲートウェイは不要です。DynamoDB へのアクセスを制御するには、エンドポイントのポリシーを使用します。VPC と AWS サービス間のトラフィックは、Amazon ネットワークを離れません。

注記

パブリック IP アドレスを使用する場合でも、AWS でホストされているインスタンスとサービスの間で発生するすべての VPC 通信は、AWS ネットワーク内でのプライベートな通信となります。AWS ネットワークから発信され、送信先が AWS ネットワーク上のパケットは、AWS 中国リージョンとの送受信されるトラフィックを除き、AWS グローバルネットワークに残ります。

DynamoDB 用の VPC エンドポイントを作成する際、リージョン内の DynamoDB エンドポイント (例: dynamodb.us-west-2.amazonaws.com) に対するリクエストはすべて、Amazon ネットワーク内のプライベートの DynamoDB エンドポイントにルーティングされます。VPC 内の EC2 インスタンスで実行されているアプリケーションを変更する必要はありません。エンドポイント名は変わりませんが、DynamoDB へのルートは Amazon ネットワーク内に完全にとどまります。パブリックインターネットにアクセスすることはありません。

次の図は、VPC 内の EC2 インスタンスが VPC エンドポイントを使用して DynamoDB にアクセスする様子を示しています。

ルーターと VPC エンドポイントのみを経由して DynamoDB にアクセスする EC2 インスタンスを示すワークフロー図。

詳細については、「チュートリアル: DynamoDB 用の VPC エンドポイントを使用する」を参照してください。

Amazon VPC エンドポイントと DynamoDB の共有

VPC サブネットのゲートウェイエンドポイントから DynamoDB サービスにアクセスできるようにするには、その VPC サブネットに対する所有者アカウントのアクセス許可が必要です。

VPC サブネットのゲートウェイエンドポイントに DynamoDB へのアクセスを許可すると、そのサブネットへのアクセス権を持つすべての AWS アカウントが DynamoDB を使用できます。つまり、VPC サブネット内のすべてのアカウントユーザーは、アクセス権が付与されている対象のすべての DynamoDB テーブルを使用できます。これには、VPC サブネットとは異なるアカウントに関連付けられた DynamoDB テーブルが含まれます。ただし、VPC サブネットの所有者は、独自の裁量により、サブネット内の特定のユーザーに対して、ゲートウェイエンドポイント経由での DynamoDB サービスの使用を制限できます。

チュートリアル: DynamoDB 用の VPC エンドポイントを使用する

このセクションでは、DynamoDB 用の VPC エンドポイントの設定および使用について説明します。

ステップ 1: Amazon EC2 インスタンスを起動する

このステップでは、デフォルトの Amazon VPC で Amazon EC2 インスタンスを起動します。その後、DynamoDB 用の VPC エンドポイントを作成して使用できます。

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. [Launch Instance] (インスタンスを起動) を選択して、以下を実行します。

    ステップ 1: Amazon マシンイメージ (AMI) を選択する

    • AMI のリストの上部で [Amazon Linux AMI] に移動し、[選択] を選びます。

    ステップ 2: インスタンスタイプを選択する

    • インスタンスタイプのリストの上部で、[t2.micro] を選択します。

    • [Next: Configure Instance Details] (次のステップ: インスタンスの詳細の設定) を選択します。

    ステップ 3: インスタンスの詳細を設定する

    • [ネットワーク] に移動し、デフォルトの VPC を選択します。

      [Next: Add Storage] (次の手順: ストレージの追加) をクリックします。

    ステップ 4: ストレージを追加する

    • [Next: Tag Instance] を選択してこのステップをスキップします。

    ステップ 5: インスタンスをタグ付けする

    • [Next: Configure Security Group] (次のステップ: セキュリティグループの設定) を選択してこのステップをスキップします。

    ステップ 6: セキュリティグループを設定する

    • [Select an existing security group] (既存のセキュリティグループの選択) を選択します。

    • セキュリティグループのリストで、[default (デフォルト)] を選択します。これは VPC のデフォルトのセキュリティグループです。

    • [Next: Review and Launch] (次のステップ: 確認と起動) を選択します。

    ステップ 7: インスタンス起動の確認

    • [Launch] (起動する) を選択します。

  3. [Select an existing key pair or create a new key pair] (既存のキーペアを選択するか、新しいキーペアを作成する) ウィンドウで、次のいずれかを実行します。

    • Amazon EC2 キーペアがない場合は、[Create a new key pair] (新しいキーペアの作成) を選択して指示に従います。プライベートキーファイル (.pem ファイル) をダウンロードするよう求められます。このファイルは、後で Amazon EC2 インスタンスにログインする際に必要になります。

    • 既存の Amazon EC2 キーペアがすでにある場合は、[Select a key pair] (キーペアの選択) を選択して、リストからキーペアを選択します。Amazon EC2 インスタンスにログインするには、既にプライベートキーファイル (.pem ファイル) が利用可能になっている必要があります。

  4. キーペアを設定してある場合は、[Launch Instances] (インスタンスの起動) を選択します。

  5. Amazon EC2 コンソールのホームページに戻り、起動したインスタンスを選択します。下のペインの [Description] (説明) タブで、インスタンスの [Public DNS] (パブリック DNS) を見つけます。例: ec2-00-00-00-00.us-east-1.compute.amazonaws.com

    このパブリック DNS 名をメモします。パブリック DNS 名は、このチュートリアル (ステップ 2: Amazon EC2 インスタンスを設定する) の次のステップで必要になります。

注記

Amazon EC2 インスタンスが使用できるようになるまで数分かかります。次のステップに行く前に、[Instance State] (インスタンスの状態) が running で、その [Status Checks] (ステータスチェック) がすべてパスしていることを確認します。

ステップ 2: Amazon EC2 インスタンスを設定する

Amazon EC2 インスタンスが使用できるようになったら、そのインスタンスにログインして、最初に使用できるように準備できます。

注記

次の手順は、Linux を実行するコンピュータから Amazon EC2 インスタンスに接続していることを想定しています。その他の接続方法については、「Amazon EC2 ユーザーガイド」の「Linux インスタンスへの接続」を参照してください。

  1. Amazon EC2 インスタンスへのインバウンド SSH トラフィックを認証する必要があります。これを行うには、新しい EC2 セキュリティグループを作成し、そのセキュリティグループを EC2 インスタンスに割り当てます。

    1. ナビゲーションペインで、セキュリティグループ] を選択します。

    2. [Create Security Group (セキュリティグループの作成)] を選択します。[セキュリティグループの作成] ウィンドウで、以下を行います。

      • [Security group name] (セキュリティグループ名) — セキュリティグループの名前を入力します。例: my-ssh-access

      • [Description] (説明) — セキュリティグループの簡単な説明を入力します。

      • VPC — デフォルトの VPC を選択します。

      • [Security group rules] (セキュリティグループのルール) セクションで、[Add Rule] (ルールの追加) を選択して、次の操作を行います

        • [Type] (タイプ) — SSH を選択します。

        • [Source] (ソース) — My IP を選択します。

      すべての設定が正しいことを確認したら、[作成] を選択します。

    3. ナビゲーションペインで、[インスタンス] を選択します。

    4. ステップ 1: Amazon EC2 インスタンスを起動する で起動した Amazon EC2 インスタンスを選択します。

    5. [Actions] (アクション)、[Networking] (ネットワーキング)、[Change Security Groups] (セキュリティグループの変更) の順に選択します。

    6. [Change Security Groups] (セキュリティグループの変更) で、この手順で先に作成したセキュリティグループを選択します (例: my-ssh-access)。既存の default のセキュリティグループも選択する必要があります。すべての設定が正しいことを確認したら、[Assign Security Groups] (セキュリティグループの割り当て) を選択します。

  2. 次の例のように、ssh コマンドを使用して Amazon EC2 インスタンスにログインします。

    ssh -i my-keypair.pem ec2-user@public-dns-name

    プライベートキーファイル (.pem ファイル) とインスタンスのパブリック DNS 名を指定する必要があります。(「ステップ 1: Amazon EC2 インスタンスを起動する」を参照してください)。

    ログイン ID は ec2-user です。パスワードは不要です。

  3. 次に示すように、AWS 認証情報を設定します。プロンプトが表示されたら、AWS アクセスキー ID、シークレットキー、デフォルトのリージョン名を入力します。

    aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]:

これで、DynamoDB 用の VPC エンドポイントを作成する準備ができました。

ステップ 3: DynamoDB 用の VPC エンドポイントを作成する

このステップでは、DynamoDB 用の VPC エンドポイントを作成し、テストを行い正常に動作することを確認します。

  1. 開始する前に、パブリックエンドポイントを使用して DynamoDB と通信できることを確認します。

    aws dynamodb list-tables

    出力では、現在所有している DynamoDB テーブルのリストが表示されます。(テーブルがない場合、リストは空になります。)。

  2. DynamoDB が、現在の AWS リージョンで VPC エンドポイントを作成するために利用可能なサービスであることを確認します。(コマンドは太字で示され、その後に出力例が続きます。)

    aws ec2 describe-vpc-endpoint-services { "ServiceNames": [ "com.amazonaws.us-east-1.s3", "com.amazonaws.us-east-1.dynamodb" ] }

    出力例では、DynamoDB が利用可能なサービスの 1 つであるため、VPC エンドポイントの作成を続行できます。

  3. VPC 識別子を決定します。

    aws ec2 describe-vpcs { "Vpcs": [ { "VpcId": "vpc-0bbc736e", "InstanceTenancy": "default", "State": "available", "DhcpOptionsId": "dopt-8454b7e1", "CidrBlock": "172.31.0.0/16", "IsDefault": true } ] }

    出力例では、VPC ID は vpc-0bbc736e です。

  4. VPC エンドポイントを作成します。--vpc-id パラメータで、前のステップの VPC ID を指定します。--route-table-ids パラメータを使用して、エンドポイントをルートテーブルに関連付けます。

    aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [ "rtb-11aa22bb" ], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }
  5. VPC エンドポイント経由で DynamoDB にアクセスできることを確認します。

    aws dynamodb list-tables

    必要に応じて、DynamoDB 用の他の AWS CLI コマンドを試すことができます。詳細については、AWS CLI コマンドリファレンスを参照してください。

ステップ 4: (オプション) クリーンアップする

このチュートリアルで作成したリソースを削除する場合は、次の手順に従ってください。

DynamoDB 用の VPC エンドポイントを削除するには
  1. Amazon EC2 インスタンスにログインします。

  2. VPC エンドポイント ID を決定します。

    aws ec2 describe-vpc-endpoints { "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }

    出力例では、VPC エンドポイント ID は vpce-9b15e2f2 です。

  3. VPC エンドポイントを削除します。

    aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2 { "Unsuccessful": [] }

    空の配列 [] は成功を示します (失敗したリクエストはありませんでした)。

Amazon EC2 インスタンスを終了するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. Amazon EC2 インスタンスを選択します。

  4. [Actions]、[Instance State]、[Terminate] の順に選択します。

  5. 確認ウィンドウで、[Yes, Terminate] (はい、終了します) を選択します。