首页 > 解决方案 > aws fargate 为环境变量添加参数

问题描述

我正在尝试自动化我们的 Fargate 实例的 Cloudformation 部署。如果我硬设置环境变量条目,我已经成功部署了 cloudformation,但是如果我尝试添加为参数,键入字符串,它会抱怨它不是字符串。

这是参数

"EnvVariables": { "Description": "Docker 运行的所有环境变量", "Type": "String" },

在我的任务定义中,我对容器定义有以下设置

     "Environment": [
      {
        "Name": "JAVA_OPTS",
        "Value": "-Djdbc.url=jdbc:dbdriver://xxxx.eu-west-1.rds.amazonaws.com:xxxx/xxxxxxxxx -Djdbc.user=xxxxx -Djdbc.password=xxxxx" 
      }
    ]

如果我通过 gui 在参数字段中输入以下内容

"-Djdbc.url=jdbc:dbdriver://xxxx.eu-west-1.rds.amazonaws.com:xxxx/xxxxxxxxx -Djdbc.user=xxxxx -Djdbc.password=xxxxx"

它抱怨它不是一个字符串。

我如何编辑它以被接受为参数?

标签: amazon-web-servicesamazon-cloudformationamazon-ecs

解决方案


使用任务定义(门户或 JSON),您可以在将从机密管理器检索"secrets"的部分内定义。"containerDefinitions"

注意:在撰写本文时,Fargate 仅支持作为单个值的密钥,不支持 JSON 或键值密钥。因此,在创建密钥时选择 OTHER 并在其中放置一个文本值。

{ 
    "ipcMode": null,
    "executionRoleArn": "arn:aws:iam::##:role/roleName",
    "containerDefinitions": [
      {
         ...
        "secrets": [{
          "name": "SomeEnvVariable",
          "valueFrom": "arn:aws:secretsmanager:region:###:secret:service/secretname"
        }],
        ...
     }
    ],
    "requiresCompatibilities": [
      "FARGATE"
    ],
    "networkMode": "awsvpc",
    ...
}

注意:任务中定义的执行角色需要附加策略,例如SecretsManagerReadWrite

文档中的更多信息


推荐阅读