问题描述
我在 VPC 中有一个 lambda 函数可以轮换 rds 密码。 当我使用秘密管理器 vpc 端点测试 lambda 函数时,如下所示:
- 案例 1. 公有子网中的 Lambda - VPC 端点附加公有子网 => 轮换正常
- 案例 2. 私有子网中的 Lambda - VPC 终端节点附加公有子网 => 尽管 cloudwatch 有一个错误,但轮换是可以的。
- 案例 3. 公有子网中的 Lambda - VPC 端点与私有子网 连接 => 由于 lambda 函数超时而导致轮换失败
- 案例 4. 私有子网中的 Lambda - VPC 端点附加私有子网 => 轮换正常
我知道我不应该将 lambda 函数放入公共子网,但我想知道子网中的 lambda 函数如何与 vpc 端点配合使用。
谁能解释为什么 情况 2 没问题,尽管 lambda 和 vpc 端点位于不同的子网中。
解决方法
为什么情况 2 没问题
VPC interface endpoints 具有 vpc 范围,而不是子网范围。这解释了为什么情况 2,1 和 4 有效。因此,情况 3 也应该有效。因此,问题是为什么情况 3 不起作用?
可能的原因是您在测试中犯了一些配置错误(例如错误的安全组),或者将 lambda 放入错误的 VPC,没有为终端节点启用私有 DNS。因此,我建议仔细检查案例 3 的所有配置并重新运行实验。