fly*_*ade 5 amazon-web-services amazon-route53 amazon-vpc aws-lambda elastic-load-balancer
我想设置一个在私有 VPC 上运行的 EC2 实例。它可以从私有 VPC 连接到 Internet,但不能从外部访问。并且有一个 lambda 函数来触发 EC2 启动与外部资源(S3、Dynamo、Internet)的一些交互。
我已经设置了一个 VPC,如下所示:
这是问题所在。lambda 函数可以通过 HTTPs 连接到 Internet,但是当它通过私有 Hostzone 记录(“abcd.internal”)HTTPs GET 到 ALB 失败时。
我的理解是我的 ALB、EC2、lambda、NAT 网关和 Route53 配置在同一个 VPC 中,它们应该能够使用私有 DNS 名称相互通信。我不知道为什么它失败了。
注意:在设置内部 ALB 之前,我确实尝试在公共子网中设置面向 Internet 的 ALB,然后为此 ALB 配置一个公共 Hostzone 记录集“abcd.public”。它可以与 EC2 实例通信,并且 EC2 实例可以通过 NAT 网关与 Internet 交互。所以“EC2 to Internet”部分正在发挥作用。
更新:我终于在 lambda 日志中挖掘了一些错误消息,如下所示:
错误:主机名/IP 与证书的替代名称不匹配:“主机:abcd.internal。不在证书的替代名称中:DNS:.public”] 原因:'主机:abcd.internal。不在证书的替代名称中:DNS: .public',主机:'abcd.internal.',
这太有趣了。我确实有一个公共主机区与私有主机区共存,但公共主机区用于其他目的。我不知道为什么 lambda 函数使用公共 DNS 而不是私有 DNS,因为它是在私有子网中配置的。
感谢所有发表评论和提出建议的人。
为了解决这个问题,我几乎在网上找到了所有可能的解决方案。我把一切都放在了正确的位置。Lambda 函数、ELB 和 EC2 位于同一 VPC 私有子网中。Route53、NAT 和 IGW 已正确设置。我尝试过设置 DHCP 选项,但没有成功。也许我不完全理解这个DHCP,也找不到例子。
事实证明 HTTPS 协议不起作用。在迁移到私有 VPC 之前,我在公共 VPC 中进行了相同的设置,并且资源使用 HTTPS 进行通信。例如,lambda 函数将 GET/POST 到 EC2 实例或 ELB。当我将内容移至私有 VPC 后,HTTPS 命令无法使用内部 DNS 名称。
但是,如果我使用HTTP协议,资源最终可以通过内部DNS名称找到彼此。
我仍然不知道为什么 HTTPS 不能在私有 VPC 中使用,但我可以接受这个解决方案。
| 归档时间: |
|
| 查看次数: |
5859 次 |
| 最近记录: |