如何验证 EC2 中的应用程序正在使用 VPC 端点与 Dynamodb 通信?

How to verify that application in EC2 is using VPC endpoint to communicate with Dynamodb?

我有一个 Java 应用程序,它部署在 EC2 中并与 Dynamodb 通信。我为 Dynamodb 启用了 VPC 端点(网关端点)。但是我没有注意到此更改有任何性能改进。理论上,与 public 访问相比,我应该看到通过 VPC 端点的延迟更少。 同样基于 tcpdump,我可以看到我们的应用程序仍在使用 dynamodb 的 public IP 进行通信。

这里52.119.232.38是dynamodb publicIP。 我如何验证我们在 EC2 中的应用程序是否正在使用 VPC 端点与 Dynamodb 通信?

您可以使用 AWS cloudtrail 来验证这一点。如果您仅从托管在具有关联 VPC 网关端点的 AWS 网络上的应用程序连接到 DynamoDB,那么您应该只能在 Cloudtrail 日志的源 IP 字段中看到私有 IP。如果您看到其他 public 个 IP,则表示正在通过 Internet 访问 DyanmoDB。

  • 转到 AWS Cloudtrail 并筛选 EventSource dynamodb.amazonaws.com
  • 如果您没有看到任何 cloudtrail 事件,请确保您选择的时间段是您希望应用程序访问 DynamoDB 或手动通过 ssh 进入 EC2 实例和 运行 一些 cli 命令 aws dynamodb list-tables然后等待 10-15 分钟让这个新事件出现。
  • 单击设置图标以显示事件的 Source IP address
  • 事件的 Source IP address 应该来自您的 VPC 的 CIDR 范围(在本例中是 EC2 实例的私有 IP)
  • 您可以单击事件名称并查看原始事件,该事件的键 vpcEndpointId 的值与 VPC 端点的 ID 相同

如果源 IP 不是 EC2 实例的私有 IP,请按照 link [=17] 的 To add or remove route tables used by a gateway endpoint 部分确保使用网关端点条目更新适用的路由表=]

您可以简单地为 dynamodb 的端点执行 nslookup,它应该 return 私有 IP 地址,来自 vpc 内的一个实例。