我正在尝试通过 SSM(Systems Manager- https://aws.amazon.com/secrets-manager/ )(即 AWS 参数存储)访问在 key 管理器( https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html )中创建的 key ,并将其存储在 serverless.yml 文件中的自定义 YAML 变量中? 我正在尝试通过无服务器框架( https://serverless.com/ )实现云形成,并且我正在尝试在云形成中实现嵌套 if 语句,以使用下面的代码实现上述内容。
stage: &stage 'dev' #Hardcoded for now
rdsMasterPassword:
!If
- !Equals [*stage,"prod"]
- ${ssm:/aws/reference/secretsmanager/cred-prod~true:rdsMasterPassword}
- !If
- !Equals [*stage,"staging"]
- ${ssm:/aws/reference/secretsmanager/cred-staging~true:rdsMasterPassword}
- ${ssm:/aws/reference/secretsmanager/cred-dev~true:rdsMasterPassword}
我已经尝试过云形成固有函数 Fn::If 为此但面临这个错误:
Fn::If 需要一个列表参数,第一个元素是条件
最佳答案
只是想指出,如果您希望根据环境加载不同的 SSM 路径,可以通过多种方式实现,outlined here
例如,我在通过 json 文件加载时度过了一段愉快的时光
-- serverless-staging.json --
{
"ssm_path": "/path/to/staging/ssm/parameter"
}
-- serverless-prod.json --
{
"ssm_path": "/path/to/prod/ssm/parameter"
}
-- serverless.yml --
...
stage: ${opt:stage, 'dev'}
environment:
SSM_PATH: ${file(serverless-${self:provider.stage}.json):ssm_path}
... etc etc
希望这对通过搜索到达这里的其他人有所帮助
关于amazon-web-services - 如何使用 yaml 格式文件在 serverless.yml 中编写嵌套 IF,同时使用它进行云形成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56319766/