我们在具有托管 NAT 网关的私有子网中有一个实例。在这种情况下,我们可以访问互联网:
$ curl https://www.google.com/
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head>...
但是,我们无法访问 cloudwatch 端点,例如以下超时:(编辑:我的错误,不是 cloudwatch 端点,而是存储 cloudwatch 监控脚本的站点。)
$ curl https://cloudwatch.s3.amazonaws.com
DNS不是问题:
$ dig cloudwatch.s3.amazonaws.com
cloudwatch.s3.amazonaws.com. 2303 IN CNAME s3-1-w.amazonaws.com.
s3-1-w.amazonaws.com. 1 IN A 54.231.72.59
关于可能发生的事情有什么想法吗?
我实际上遇到了同样的问题,并设法以与 JustinHK 下面相同的方式解决它。我已经联系 AWS 了解它发生的原因,因为我无法放手,所以这应该有助于解释这种行为。这是细分:
根据您正在运行的设置以及您是否真的需要 IGW 来处理除 S3 之外的其他任何事情,您可能会从公共子网中删除 IGW,或者删除私有子网和公共子网之间的 NAT 网关链接。这两个选项都应该在不破坏解决方案的情况下稍微清理一下路由表。
在私有子网中添加 S3 端点解决了该问题。
事实证明,我们的问题特定于访问 S3。我们当时的设置是:
似乎流量没有通过公共互联网或 S3 端点通过 NAT 路由到 S3。我仍然不知道为什么。
首先,很明显:
cloudwatch.s3.amazonaws.com
不是 Cloudwatch 端点之一。Cloudwatch 端点采用
monitoring.[aws-region].amazonaws.com
.例如,在
us-west-2
区域中,端点是https://monitoring.us-west-2.amazonaws.com
。http://docs.aws.amazon.com/general/latest/gr/rande.html#cw_region
此外,即使您的路由、NAT 或网络配置错误,DNS 解析也不会受到许多错误配置的影响,因为它在 VPC 中实施的方式......所以它工作的事实并不能告诉您是否有 Internet 连接, 一般来说。