java - 如何验证 EC2 中的应用程序正在使用 VPC 端点与 Dynamodb 通信?
问题描述
我有一个部署在 EC2 中并与 Dynamodb 通信的 Java 应用程序。我为 Dynamodb 启用了 VPC 端点(网关端点)。但是我没有注意到这种变化对性能有任何改善。从理论上讲,与公共访问相比,我应该通过 VPC 端点看到更少的延迟。同样基于 tcpdump,我可以看到我们的应用程序仍在使用 dynamodb 的公共 IP 进行通信。
这52.119.232.38
是 dynamodb 公共 IP。如何验证我们在 EC2 中的应用程序是否使用 VPC 端点与 Dynamodb 通信?
- EC2 和 VPC 端点都为同一个 VPC 启用。
解决方案
您可以使用 AWS cloudtrail 来验证这一点。如果您仅从托管在 AWS 网络上且具有关联的 VPC 网关终端节点的应用程序连接到 DynamoDB,那么您应该只会在 Cloudtrail 日志的源 IP 字段中看到私有 IP。如果您看到其他公共 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,请按照此处To add or remove route tables used by a gateway endpoint
的链接部分确保使用网关端点条目更新适用的路由表
推荐阅读
- ansible - Cocpit-ceph-ansible url 未加载
- angular - 如何在 Angular 的 forEach 循环中进行下一次迭代之前等待订阅中的代码完成
- visual-studio-code - 在 Visual Studio Code 中查看、设置或更改目标 CPU?
- windows - Windows 服务 :: 每个间隔执行和处理多个事务
- python - 使用持久连接抓取纯 HTML 内容
- sql - 接收 DB2 中列 SUM 的不同输出
- python - 如果有多个可能的返回值,pyright 是否应该根据传递的参数自动推断正确的返回值?
- javascript - 我对 React Native 中内容的位置有疑问。如何将 hello world 语句移动到屏幕中间
- c# - OAuth 检测是否正在使用用户或客户端凭据
- html - 如何将 youtube 嵌入视频放置在另一个部分下,因为它在响应后覆盖了整个页面横幅?