我很久以前就知道,如果您希望 EC2 实例能够与 SQS、Kinesis 等 AWS 服务通信,则该实例必须具有公共 IP 地址,或者 VPC 内需要有某些东西执行 NAT。
当我第一次听说VPC 终端节点今年早些时候,它似乎改变了游戏规则——一种从只有私有 IP 的实例访问这些服务的方法。但事实上,唯一支持的服务是 S3,这似乎真的很有限。我目前管理的每个 EC2 实例都依赖于非 S3 AWS 资源,这些资源需要通过公共 IP 进行流量传输。
我很好奇,在了解堆栈的其余部分仍将依赖公共 IP 且会持续一段时间的情况下,使用 VPC Endpoint for S3 是否还有其他好处。速度/吞吐量是否有任何可衡量的改进,或者是否有任何其他可以抵消管理开销的好处?
答案1
这是一个老话题,但他们刚刚发布DynamoDB 的 VPC 终端节点。我希望他们为 SQS 添加它们。目前,由于在 VPC 中运行的 Lambda 函数无法访问互联网,因此它们无法在不设置 NAT 网关的情况下访问任何公共 AWS 服务。因此,如果您希望 Lambda 函数访问 VPC 中的资源(例如 RDS),并将某些内容发送到 SQS、SNS、SES 或任何其他没有 VPC 端点的公共 AWS 服务或调用另一个 Lambda 函数,则无法实现。
如果他们为 SQS 添加了 VPC 端点,您可以使用 VPC lambda 函数访问您的 VPC 资源,将结果发送到 SQS 队列,然后让公共 Lambda 函数监视并使用队列消息,根据需要访问任何公共 AWS 服务 (SNS、SES)。目前,我只能“监视” S3/DynamoDB,因为我不想承担托管 NAT 网关的费用。
答案2
没有公共 IP 的 VPC 节点必须遍历 NAT 网关实例或 NAT 服务才能到达 S3(暂时忽略 VPC 端点)。前者是可用性和带宽限制,后者是按字节计算的成本。
有了 VPC 端点,您的私有主机不需要遍历就可以到达 S3,并且可以更便宜、更快地完成。
答案3
VPC 端点的优势主要在于安全性。在封闭的私有 VPC 中将数据存储/检索到 S3 中的能力对于那些不使用 AWS 面向公众的用户来说非常有吸引力。