[英]Github actions - pass secret variables to render ECS task definition action
為了使用amazon-ecs-render-task-definition GitHub 操作將新任務部署到 ECS im。 此操作接收一個 task-definition.json 作為參數。 這個 JSON 包含我不想推送的秘密,有沒有辦法向這個 JSON 注入一些參數? 也許來自aws secrets manager?
例如 -任務定義.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" }
顯然有一個使用 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/
另一種解決方案是使用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>"
},
]
...
}
]
}
所有 repos 都有一個地方來存儲他們的秘密,請參閱創建和使用加密的秘密。 至於編輯 .json,預安裝的jq
在這里看起來是一個明顯的選擇,或者如果您更熟悉它,也可以使用powershell
(請記住調整-Depth )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.