如何解决从使用 VPC 编辑 1 (2021/02/13):
我有一个 EC2 实例在带有 VPC 的 ECS 集群中运行。
在实例上,我需要运行一个需要访问 DynamoDB 的 ECS 任务。
当我尝试使用 Fargate 运行相同的任务时,我可以使用 assignPublicIp = 'ENABLED'
选项来允许我的任务访问其他 AWS 服务,并且一切正常。
但是,assignPublicIp
选项不适用于 EC2 启动类型,我无法弄清楚如何允许我的 EC2 实例访问其他 AWS 服务。
我阅读了 AWS 文档并按照 this one 等指南为 DynamoDB 设置了 VPC 端点。
我还确保我的 NACL 的入站/出站规则和 VPC 的安全组的入站/出站规则是完全开放的(至少是为了测试),从而确保没有任何网络访问限制。
NACL 和我的安全组的规则如下所示:
最后,我使用 VPC > Reachability Analyzer
来检查 AWS 是否可以检测到有关我的 EC2 实例和 DynamoDB 之间的连接路径的任何问题,但分析报告了 Reachable
状态。
它基本上告诉我沿着以下路径建立连接没有问题:
- 我的 EC2 实例的网络接口(来源)
- VPC 的安全组
- VPC 的 NACL
- VPC 的路由表
- 其中包括由 VPC 终端节点为 DynamoDB 添加的以下路由
- 目的地:pl-02cd2c6b(com.amazonaws.us-east-1.dynamodb、3.218.182.0/24、3.218.180.0/23、52.94.0.0/22、524.119/2 20)
-
目标:端点 ID(例如,
vpce-foobar
)
- DynamoDB 的 VPC 端点(目的地)
尽管 AWS 告诉我我处于“可访问”状态,但我仍然认为这可能是网络可达性问题,因为当我运行任务时,我正在运行的脚本在对 DynamoDB 进行 GetItem 调用后立即卡住.
如果是权限错误或无效参数问题,我会立即收到错误消息,但一切都只是“挂起”在那里,直到任务最终超时。
任何有关我在这里可能遗漏的内容或其他解决方法的指示将不胜感激。
谢谢。
编辑 1 (2021/02/13):
因此,我返回 AWS 文档,查看在设置 VPC 端点时是否遗漏了任何内容。我最初为 DynamoDB 设置了一个设置,但由于我还需要在我的服务中使用 S3,我继续为 S3 设置了一个网关 VPC 端点(我还想看看我遇到的问题是否是一个通用的网络问题,或特定于 DynamoDB)。
然后,我对脚本进行了一些更改,以尝试调用 S3(为了简单起见,获取存储桶的位置)作为第一件事。我知道调用最终会超时,所以我想在开始执行脚本时立即触发错误。
我一直等到我的任务最终因为超时而失败,这一次我注意到了一些有趣的事情。
这是我在任务失败时得到的错误日志:
我的任务尝试访问的 IP 地址是 52.85.146.194:443
。
这里是我在 S3 的托管前缀列表中找到的 IP 地址,我在 VPC 控制台中找到了:
我收到超时错误的 IP 地址不在列表中。这是否可以暗示问题的原因?还是我遗漏了什么,实际上并没有什么问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。