有没有办法读取基于 FARGATE 的 ECS JSON 环境部分中的参数存储安全变量

Is there a way to read the parameter store secure variables inside the ECS JSON environment sections based on FARGATE

我正在设置 ECS 服务以启动与 RDS 数据库服务器通信的应用程序。我需要将数据库访问属性(如用户名、密码、dbname 等)传递给 FARGATE 实例中的应用程序代码 运行。因此,为了传递它们,我在参数存储中创建了这些参数,但我需要找到一种方法从参数存储中获取它们并将其传递给 ECS 任务定义环境变量属性?

在 ECS 任务定义中,我尝试使用 "name: and "valueFrom" 等参数修改 JSON 文件环境 属性,但似乎 "valueFrom:" 在 JSON 文件中未被接受,它会弹出一条错误消息 "Cannot read property 'replace' of undefined"

        "environment": [
            {
                "name": "POSTGRES_DB",
                "valueFrom": "PROD_POSTGRES_DB"
            }
        ],

我希望 POSTGRES_DB 参数从 AWS

的参数存储中定义的 PROD_POSTGRES_DB 中读取值

当您在 valueFrom 环境变量的 ECS 任务定义中使用 SSM Parameter Store 时,它​​会在 containerDefinitions 下创建单独的 secrets 部分。因此,它将如下所示。

"containerDefinitions": [
    {
        "secrets": [
            {
                "name": "POSTGRES_DB",
                "valueFrom": "PROD_POSTGRES_DB"
            }
        ],
        "environment": [
            {
                "valueFrom": "myKey",
                "name": "myValue"
            }
        ],
    }
]

对于正常的 value 环境变量,它将是通常的 environment json 数组。

备注-

  1. 当您使用 SSM Parameter Store 时,您必须确保任务执行角色具有附加到角色的必要 SSM 权限。参考 - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html
  2. 此外,如果您的 ECS 区域与 SSM 区域不同,请尝试提供完整的 SSM 参数 ARN。