Lambda 函数无法访问 Secrets Manager

Joe*_*Joe 7 amazon-web-services amazon-vpc aws-lambda secretsmanager aws-nat-gateway

我编写了一个 lambda 函数来访问数据库,因此第一步是从 AWS Secrets Manager 获取机密。我有一个私有 VPC 以及与 lambda 函数关联的子网、NAT 网关和安全组。我也有secretsmanager.Secret.grantRead(lambda_exec_role)所以 lambda 应该可以访问 Secrets Manager。

出于某种原因,当我在 API Gateway 中测试它时,我在 CloudWatch 中得到了 "errno": "ETIMEDOUT" 和 "code": "NetworkingError"。从我在 API 中打印的日志来看,获取机密失败了。

我也试图为秘密管理器添加VPC的端点在这里,但仍然得到了同样的错误。

感谢这里的任何人可以帮助我解决这个问题或提供一些提示。

非常感谢!

Ale*_*mon 13

我也遇到过 lambda 获取秘密内容的麻烦。

您可以尝试以下几件事:

#1 确保您有权获取秘密值,我会给您我的工作配置:

  • 允许:secretsmanager:GetSecretValue 对您的秘密
  • 允许:secretsmanager:DescribeSecret 在你的秘密上
  • 在所有资源上允许:secretsmanager:ListSecrets

#2 我的 VPC 和子网也遇到了问题。如果配置错误,您将无法调用 Secret Manager API。

  • 为您的 lambda 切换到无 VPC,并检查是否可以正常获取您的秘密。如果有效,则意味着您的 VPC/子网配置有问题。
  • 检查您的子网配置:
    • 在公共子网上,您可以为秘密管理器配置特定端点,但我无法使其工作,不知道为什么。
    • 在私有子网上,您需要配置 NAT 网关才能调用 Secret Manager API。

希望有一天它能帮助别人。:)

  • 我与 Secret Manager 的连接超时,没有错误。让我解开障碍的是,我需要为秘密管理器创建一个 VPC 端点。感谢您为我指明了正确的方向。 (3认同)

and*_*amm 6

如果其他人在解决Secrets Manager lambda 扩展问题时遇到这个问题,我想分享我在使用 Nodejs18.x 运行时(目前是全新的)实现时的经验。我正在利用这个新运行时的新顶级等待,并希望在 init 上(在处理程序之外)从 SM 检索我的秘密。我的所有尝试都失败了,我收到了来自扩展程序的响应

尚未准备好提供流量,请稍候

将 http 调用(到扩展的端口)移到我的处理程序函数内立即解决了该问题。