You need to enable JavaScript to run this app. 如何使用AWS CDK为ECS任务定义注入Secrets Manager指定JSON键的密钥
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS CDK为ECS任务定义注入Secrets Manager指定JSON键的密钥

你之前的写法存在两处核心错误,按以下方案修改即可正常使用:

  1. ecs.Secret.from_secrets_manager 要求入参为 Secrets Manager 的ISecret实例,你调用secret_value_from_json后返回的是SecretValue值类型,不符合入参要求
  2. 带field参数时报错是因为之前的调用逻辑错误,正确调用from_secrets_manager时不会将Secrets Manager资源识别为SSM参数,不会触发该报错

正确代码示例

# 先加载完整的 Secrets Manager 密钥实例
db_secret = sm.Secret.from_secret_complete_arn(
    self, 
    'secret-db',
    'arn:aws:secretsmanager:eu-west-1:accountid:secret:secret-name'
)

# 构造ECS密钥配置,通过field参数直接提取密钥内的对应JSON键
secrets = {
    "DBUSER": ecs.Secret.from_secrets_manager(
        secret=db_secret,
        field="DBUSER"
    )
}

# 容器定义部分无需修改
container: ecs.ContainerDefinition = task_definition.add_container(
    "reports",
    image=ecs.RepositoryImage.from_ecr_repository(
        ecr.Repository.from_repository_name(self, "container", "container"), tag=image_tag,
    ),
    memory_limit_mib=2048, logging=ecs.LogDriver.aws_logs(stream_prefix="container-"),
    secrets=secrets
)

逻辑说明

ecs.Secret.from_secrets_manager的field参数原生支持提取Secrets Manager密钥中JSON结构的指定键值,不需要手动提前调用secret_value_from_json取值。该写法生成的CloudFormation模板会自动匹配ECS任务定义的密钥格式要求,不会出现误识别为SSM参数的问题。

内容的提问来源于stack exchange,提问作者NiRR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 12:27:03