EC2 が VPC エンドポイント経由で DynamoDB にアクセスできることを確認する方法
困っていた内容
VPC エンドポイント経由で EC2 が DynamoDB に接続していることを確認する方法があったら教えてください。
どう対応すればいいの?
VPC エンドポイントを利用して接続を行なっているかどうかは CloudTrail をもとに確認することが可能です。
確認方法
公式チュートリアルをもとに EC2 インスタンスを起動して SSH 接続を行います。
※ 今回の VPC の IPv4 CIDR は 10.0.0.0/16 としています。
そして、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 で検索して対象のイベントをクリックします。
イベントレコードの sourceIPAddress が先ほど作成した EC2 インスタンスのパブリック IP アドレスと同じという結果になりました。
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 エンドポイント経由で接続が行われていることを確認できました!