AWS cdk Fargate 任务定义与 python - 如何使用 add_container(secrets=[Mapping[str, Secret]])?

问题描述

我正在用 python 编写 AWS Fargate 任务定义,如 https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_ecs/FargateTaskDefinition.html?highlight=fargatetaskdefinition

我想向 Fargate 添加数据库机密,但我对 secrets (Optional[Mapping[str,Secret]]) 感到困惑,因为不清楚应如何将机密传递给此参数。我尝试使用字典但得到 jsii.errors.JSIIError: Expected object reference

有人用过这个吗,能告诉我“映射”是如何工作的吗?

谢谢!

解决方法

刚遇到这个问题并弄清楚它在寻找什么。 它需要一个字典格式,以环境变量的名称(即秘密的名称)作为键(str)和一个 IParameter 作为值(秘密)。

# Create Task definition
task_def = _ecs.FargateTaskDefinition(
    self,"task definition",cpu=256,memory_limit_mib=1024
    )

# Create StringParameter
parameter = _ssm.StringParameter.from_secure_string_parameter_attributes(
    self,id="blah",version=1,parameter_name="/Fully/Qualified/Name"
    )
    
secret_object = _ecs.Secret.from_ssm_parameter(parameter)
container = task_def.add_container(
    "container",image=_ecs.ContainerImage.from_ecr_repository(repo,"latest-test"),secrets={
        "var name": secret_object,...
    }                    
)    

相关文档链接: [字符串参数][1] [ECS秘密][2]

[1]:https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_ssm/StringParameter.html [2]:https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_ecs/Secret.htm