1

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

在 ECS 任务定义中,我尝试使用“名称:”和“valueFrom”等参数修改 JSON 文件环境属性,但似乎 JSON 文件中不接受“valueFrom:”,它弹出一个错误提示“无法读取未定义的属性‘替换’”

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

我希望 POSTGRES_DB 参数从 AWS 的参数存储中定义的 PROD_POSTGRES_DB 读取值

4

1 回答 1

2

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

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

对于普通的value环境变量,它将是通常的environmentjson 数组。

笔记 -

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