如何在 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 形式存储机密=].
我正在通过 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 形式存储机密=].