【发布时间】:2016-11-27 02:04:42
【问题描述】:
我们有 2 个 VPC:1 个用于暂存/测试,一个用于生产。
我有一个 lambda 可以很好地执行暂存或生产——唯一的区别是配置。不幸的是,当我在暂存 VPC 中执行 prod 触发器时遇到 DNS 查找错误;这是有道理的。
问题是:如何才能让我的 lambda 可以访问两个 VPC?请不要告诉我我必须复制并粘贴 lamdba 并更改角色。
澄清
我的 lamdba 由周期性触发器驱动。它只是进行 Web 服务调用并检查有效负载的结果并将值作为 cloudwatch 指标提交;相同的服务在 staging 和 prod 中运行,唯一的区别是(应该是)url http://service.prod 和 http://service.stage
这 2 个 VPC 不需要相互交谈。我可以从我的桌面访问这两个 URL;我需要同样的功能
【问题讨论】:
-
只是为了确认...您是否希望同一个 Lambda 函数同时在两个环境中运行(调用两个 VPC 中的资源)?通常建议将这些环境完全分开,以确保测试环境无法访问您的生产环境。如果您可以扩展您的情况和用例,我们将能够更好地提供解决方案。 (脑海中浮现出几个想法,但这取决于您的需要。)
-
有些人会争辩说,让 prod 和 staging 能够交叉连接并不是最佳设计。但是,如果这是目标,您是否考虑过peering the VPCs?从问题中不清楚哪种 DNS 查找失败,或者确切原因。是否涉及私有托管区域?
-
为清晰起见已更新
-
不幸的是 lambda 只能访问 1 个 VPC 中的资源。为了支持您的用例,您可以执行以下操作: 创建 2 个 lambda 函数,每个 VPC 1 个。创建 1 个接受触发器并充当“主”函数的 lambda。它需要能够访问这两个 VPC 功能。然后在您的代码中只在需要时调用每个函数。
标签: amazon-web-services lambda