Github actions - 传递秘密变量以渲染 ECS 任务定义操作

问题描述 投票:0回答:4

为了将新任务部署到 ECS,请使用 amazon-ecs-render-task-definition GitHub 操作。 此操作接收 task-definition.json 作为参数。这个 JSON 包含我不想推送的秘密,有没有办法向这个 JSON 注入一些参数?也许来自 aws Secret Manager?

例如 - task-definition.json

{
 "containerDefinitions": [
  {
   "name": "wordpress",
   "links": [
     "mysql"
   ],
  "image": "wordpress",
  "essential": true,
  "portMappings": [
    {
      "containerPort": 80,
      "hostPort": 80
    }
  ],
  "memory": 500,
  "cpu": 10
},
{
  "environment": [
    {
      "name": "MYSQL_ROOT_PASSWORD",
      "value": ****"password"**** // ITS A SECRET!
    }
  ],
  "name": "mysql",
  "image": "mysql",
  "cpu": 10,
  "memory": 500,
  "essential": true
}], 
 "family": "hello_world" }
amazon-web-services amazon-ecs github-actions
4个回答
5
投票

显然有一个使用 aws-scrent-manager 机密的内置解决方案:

"secrets": [
    {
      "name": "DATABASE_PASSWORD",
      "valueFrom": "arn:aws:ssm:us-east-1:awsExampleAccountID:parameter/awsExampleParameter"
    }
  ]

https://aws.amazon.com/premiumsupport/knowledge-center/ecs-data-security-container-task/


5
投票

另一个解决方案是使用

sed
插入你的秘密

所以你的工作流程变得像 -

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Add secrets to Task Definition
        run: |
          sed -i "s/<jwt_secret>/$JWT_SECRET/g" task.json 
          sed -i "s/<mongo_password>/$MONGO_PASSWORD/g" task.json 
        env:
          JWT_SECRET: ${{secrets.JWT_SECRET}}
          MONGO_PASSWORD: ${{secrets.MONGO_PASSWORD}}

然后编辑到 task.json 以包含 sed 将用于替换的占位符

{
  "ipcMode": null,
  "executionRoleArn": null,
  "containerDefinitions": [
    {
      ...
      "environment": [
        {
          "name": "JWT_SECRET",
          "value": "<jwt_secret>"
        },
        {
          "name": "MONGO_PASSWORD",
          "value": "<mongo_password>"
        },
      ]
      ...
   }
  ]
}

0
投票

所有存储库都有一个存储其秘密的地方,请参阅创建和使用加密的秘密。至于编辑 .json,预安装的

jq
看起来是一个明显的选择,或者如果您更熟悉的话,可能是
powershell
(只需记住调整 -Depth)。


0
投票

您可以使用 amazon-ecs-render-task-definition

传递环境值

直接

© www.soinside.com 2019 - 2024. All rights reserved.