CDK - 使用 Parameter Store 中的密钥配置 ECS Fargate 容器,而无需创建 Cloudformation 参数

问题描述 投票:0回答:1

我正在尝试将现有 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
输出?

amazon-web-services aws-cloudformation amazon-ecs aws-cdk aws-parameter-store
1个回答
0
投票

您使用的是安全字符串参数,而不是常规字符串参数,因此您应该使用

StringParameter.fromSecureStringParameterAttributes()
而不是
StringParameter.fromStringParameterName()

© www.soinside.com 2019 - 2024. All rights reserved.