我正在尝试将现有 ECS 集群迁移到 CDK,但遇到了机密问题。
在我原来的定义 JSON 中,它是使用
valueFrom
配置的,如下所示:
"secrets": [
{
"name": "SECRET_ENV_VARIABLE",
"valueFrom": "arn:aws:ssm:us-east-2:XXXXXXXX:parameter/path/to/parameter"
}
]
其中
/path/to/parameter
是一个 SecureString 参数,但是当我尝试在 CDK (C#) 中复制它时,如下所示:
var definition = new FargateTaskDefinition(this, "TaskDefinition", new FargateTaskDefinitionProps
{
Cpu = 256,
MemoryLimitMiB = 512,
Family = "definition-family",
});
definition.AddContainer("ServiceTask", new ContainerDefinitionOptions
{
...
Secrets = new Dictionary<string, Secret>
{
{ "SECRET_ENV_VARIABLE", Secret.FromSsmParameter(StringParameter.FromStringParameterName(this, "SecretEnvVariable", "/path/to/parameter")) }
}
});
我明白了
Parameters [/path/to/parameter] referenced by template have types not supported by CloudFormation.
查看生成的模板,我看到了原始 JSON 中的
valueFrom
条目,但我还看到了生成的 Cloudformation 参数:
"SecretEnvVariable2A88BA98": {
"Type": "AWS::SSM::Parameter::Value<String>",
"Default": "/path/to/parameter"
}
此 Cloudformation 参数未在模板中的任何位置引用,因此有没有办法可以在没有有问题的 Cloudformation 参数的情况下实现相同的
valueFrom
输出?
您使用的是安全字符串参数,而不是常规字符串参数,因此您应该使用
StringParameter.fromSecureStringParameterAttributes()
而不是 StringParameter.fromStringParameterName()