Я пытаюсь перенести существующий кластер 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.
Глядя на сгенерированный шаблон, я вижу запись valueFrom
, как в исходном JSON, но также вижу сгенерированный параметр Cloudformation:
"SecretEnvVariable2A88BA98": {
"Type": "AWS::SSM::Parameter::Value<String>",
"Default": "/path/to/parameter"
}
Этот параметр Cloudformation нигде в шаблоне не упоминается, так есть ли способ добиться того же результата valueFrom
без проблемного параметра Cloudformation?
Вы используете параметры защищенной строки, а не обычный строковый параметр, поэтому вам следует использовать StringParameter.fromSecureStringParameterAttributes() вместо StringParameter.fromStringParameterName()