坚持使用 AWS Parameter Store 中的 SecureString。我试图将数据库密码称为:
DatabasePassword:
Type: AWS::SSM::Parameter::Value<SecureString>
NoEcho: 'true'
Default: /environment/default/database_password
Description: The database admin account password
这会引发错误:
调用 CreateStack 操作时发生错误(ValidationError):模板格式错误:无法识别的参数类型:SecureString
但是,如果我将此参数称为String
而不是SecureString
它会引发不同的错误:
调用 CreateStack 操作时发生错误 (ValidationError):模板引用的参数 [/environment/default/database_password] 具有 CloudFormation 不支持的类型。
我确实尝试过使用'{{resolve:ssm-secure:parameter-name:version}}'
它,它适用于数据库配置:
MasterUsername: !Ref DatabaseUsername
MasterUserPassword: '{{resolve:ssm-secure:/environment/default/database_password:1}}'
但是,我使用的是 AWS Fargate docker 容器,我将这些值作为环境变量提供:
Environment:
- Name: DATABASE_HOSTNAME
Value: !Ref DatabaseHostname
- Name: DATABASE_USERNAME
Value: !Ref DatabaseUsername
- Name: DATABASE_PASSWORD
Value: '{{resolve:ssm-secure:/environment/default/database_password:1}}'
这会引发错误:
调用 CreateStack 操作时发生错误 (ValidationError):[AWS::ECS::TaskDefinition/Properties/ContainerDefinitions/Environment] 中不支持 SSM 安全引用
无法在我的实现中使用安全字符串。这个问题有什么解决方法吗?SecureString
AWS去年宣布支持,但找不到文档。我发现的只是使用resolve
它只在某些情况下有效。
参考: