如何在 serverless.yml 中引用来自秘密管理器的对象值?

How can I reference a object value from secret manager in serverless.yml?

我正在通过 serverless 将应用程序部署到 AWS。并且需要在部署期间从 secretmanager 中读取值。我已阅读此文档:https://www.serverless.com/framework/docs/providers/aws/guide/variables/#reference-variables-using-the-ssm-parameter-store

它显示了如何阅读它:

custom: supersecret: ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager~true} 但是,它可用于从秘密管理器中读取字符串值。我的秘密是一个包含 key/value 对的对象。如何读取密文中的 key

我试过这样的方法:

custom: supersecret: ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager:MY_KEY~true}

custom: supersecret: ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager/MY_KEY~true}

但是 none 他们在工作。

Serverless 将为您解析对象。

假设您的 secret_ID_in_Secrets_Manager 内容如下所示:

{
  "foo": "foo",
  "bar": "bar"
}

然后,如果您在 serverless.yml 中这样定义自定义变量:

custom:
  supersecret: ${ssm:/aws/reference/secretsmanager/secret_ID_in_Secrets_Manager~true}

那么这将解析为:

custom:
  supersecret:
    foo: foo
    bar: bar

您可以使用 ${self:custom.supersecret.foo}${self:custom.supersecret.bar}serverless.yml 中引用它们。

查看 Serverless documentation 并搜索 变量也可以是对象,因为 AWS Secrets Manager 不仅可以以纯文本形式存储机密,还可以以 JSON.[=32 形式存储机密=].