无服务器框架机密错误 - 调用一项 AWS 依赖项服务时发生错误

atr*_*een 10 amazon-web-services serverless-framework

我正在尝试以这种方式使用无服务器秘密框架访问秘密管理器:

  • 方法1(旧)

    超级秘密:${ssm(us-east-1, raw):/aws/reference/secretsmanager/secret-name~true}

  • 方法2(新)

    变量解析模式:serverless.yaml 中的 20210326

    超级秘密:${ssm(us-east-1, raw):/aws/reference/secretsmanager/secret-name}

Approach1 工作正常,但我在无服务器部署上使用 Approach2 时收到以下错误 -

Cannot resolve serverless.yml: Variables resolution errored with:
  - Cannot resolve variable at "custom.lambdas.test.custom.supersecret": An error occurred while calling one AWS dependency service.
Run Code Online (Sandbox Code Playgroud)

无服务器版本 - 框架核心:2.69.1(本地)插件:5.5.1 SDK:4.3.0 组件:3.18.1

这些秘密不会被复制,仅存在于 us-east-1 中。知道我可能做错了什么吗?

小智 8

昨天,我也遇到了同样的错误。嗯,错误来自我使用的无服务器版本。在我的本地环境中,我有版本 2.3,并且它与~true我的 ID 后面的标志一起工作正常secret_name,但在我的 CD 中我有版本 3.*,这会生成错误。阅读文档后,我搜索了:

注意:下面描述的方法在 Serverless v3 中默认有效,但需要variablesResolutionMode: 20210326v2 中的选项。

因此,如果您使用的是 v3,请使用:

ssm:/aws/reference/secretsmanager/my_secret_name
Run Code Online (Sandbox Code Playgroud)

或者

ssm:/aws/reference/secretsmanager/my_secret_name~true
Run Code Online (Sandbox Code Playgroud)

反而