EC2 が VPC エンドポイント経由で DynamoDB にアクセスできることを確認する方法

VPC エンドポイントを利用して接続を行なっているかどうかは CloudTrail で確認できます。
2022.10.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

VPC エンドポイント経由で EC2 が DynamoDB に接続していることを確認する方法があったら教えてください。

どう対応すればいいの?

VPC エンドポイントを利用して接続を行なっているかどうかは CloudTrail をもとに確認することが可能です。

確認方法

公式チュートリアルをもとに EC2 インスタンスを起動して SSH 接続を行います。
※ 今回の VPC の IPv4 CIDR は 10.0.0.0/16 としています。

テストEC2

そして、aws configureコマンドで AWS 認証情報を設定します。

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

 

パブリックエンドポイントを使用した通信の場合

次にaws dynamodb list-tables コマンドでパブリックエンドポイントを使用して DynamoDB と通信できることを確認します。

$ aws dynamodb list-tables
{
    "TableNames": [
        "test-table"
    ]
}

CloudTrail コンソールを開き、イベント名 ListTables で検索して対象のイベントをクリックします。

ListTables-1

イベントレコードの sourceIPAddress が先ほど作成した EC2 インスタンスのパブリック IP アドレスと同じという結果になりました。

sourceIPAddress

 

VPC エンドポイントを使用した通信の場合

create-vpc-endpointコマンドを使用して DynamoDB の VPC エンドポイントを作成します。

aws ec2 create-vpc-endpoint --vpc-id vpc-xxxxxxxxxxxxxxxxx \
 --service-name com.amazonaws.us-west-2.dynamodb \
 --route-table-ids rtb-xxxxxxxxxxxxxxxxx

VPC エンドポイントが対象のルートテーブルに追加されたことを確認したら、 ルートテーブル

再びaws dynamodb list-tables コマンドを使用して VPC エンドポイント経由で DynamoDB と通信します。

$ aws dynamodb list-tables
{
    "TableNames": [
        "test-table"
    ]
}

再度 CloudTrail コンソールを開き、イベント名 ListTables で検索して対象のイベントをクリックをすると、イベントレコードに以下が記載されていることが確認できます。

  • sourceIPAddress に VPC の CIDR 範囲の IP アドレス
  • vpcEndpointIdに VPC エンドポイント ID

VPC エンドポイント ID

こうして、VPC エンドポイント経由で接続が行われていることを確認できました!

参照情報