从 AWS lambda 函数命中另一个账户中的 EC2 实例

Hit an EC2 instance in another account from an AWS lambda function

我们在一个帐户中有一个 Lambda 函数,我们想访问另一个 VPC 中的 EC2 实例(通过 HTTP),该实例附加了 public IP。我想知道执行此通信的最佳方式是什么。我是 Lambda 的新手,我刚刚了解 VPC lambda。我需要在 EC2 实例的安全组上打开哪些 CIDR?我能否在源 VPC 中选择一组特定的 public IP - 这样我就可以在 SG 中将该范围列入白名单?

对于这种情况,VPC 对等似乎是一种开销还是唯一可能的解决方案?

这一切都取决于您的 requirements.However,对等连接这些 VPC 是将流量保留在您信任的私有子网中的最佳方式,这些子网位于满足安全最佳实践的内部信任边界中(Threat/Security 模型和 Cloud/Network 架构)。

如果有严格规定通信不得通过 DMZ/Public Internet 路由并且必须将内容保持在内部路由的受信任边界内的企业策略,我看不到任何其他选择但要与 VPC 对等互连:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/peer-with-vpc-in-another-account.html

但是,如果要求不那么严格并且您可以使用 Public Internet 通过 DMZ 转发您的流量,则可以在不牺牲太多安全性的情况下实现这一点(假设您的 EC2 具有 public 其他帐户上的 IP 通过 SSL/TLS 提供服务,您的 lambda 可以在验证 EC2 证书的同时通过加密通信通道与其通信)。

这可以通过让 Lambda 与您的 VPC 的内部子网相关联以与具有 Public IP 的其他帐户的 EC2 对话来实现。 https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

是的,您仍然可以将 Lambda 保留在内部子网中。但是您需要一个 NAT 网关并更新 Lambda 内部子网的路由 Table 以指向 NAT 网关(应该分配一个 EIP),即它随后将指向您的互联网网关。通过这种方式,您将确保位于您的 VPC 私有子网中的 LAMBDA 可以与外部通信,即与位于另一个帐户中具有 Public IP 的 EC2 实例通信。因此,您可以在其他帐户的 EC2 的安全组中将一个 IP 列入白名单,这是您的 NATGATEWAY 的 EIP,Lambda 或该子网中的任何其他内部组件将使用它来找到通往互联网的出路。