GiitHub Actions에서 ECS를 개발할 때 task-definition.외부에서 json으로 기밀 정보 주입
6915 단어 AWSGitHubGitHub ActionsECStech
개요
GiitHub Actions가 ECS를 설계하려고 할 때 Task-definition 하드코딩 비밀 정보에 난감해 미리 해법을 기록한 것이다.
결론
task-definition.json에 특정한 문자열을 미리 쓰고,sed 명령으로GiitHub에서 관리하는 시크릿으로 대체합니다.
task-definition
샘플인 만큼 AWS 계정은 기밀 정보로 간주하고 이번에는'SED TARGET AWS ACCOUNT ID'다.
※ 필자는 로그를 그라파나의 루키로 전송할 때 기밀 정보를 하드코딩해야 해 곤란합니다.
{
"executionRoleArn": "arn:aws:iam::SED_TARGET_AWS_ACCOUNT_ID:role/sample-TaskExecution",
"taskRoleArn": "arn:aws:iam::SED_TARGET_AWS_ACCOUNT_ID:role/sample-TaskExecution",
"family": "sample-app",
// ....
"containerDefinitions": [
{
"name": "nginx",
"image": "SED_TARGET_AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:latest",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
},
],
// ....
}
]
}
GiitHub Action의 Workflow
Deploy 처리 전에 sed 명령을 사용하여 기밀 정보를 주입할 수 있습니다.
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout
uses: actions/checkout@v2
# ....
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
# Rewrite task-definition(秘密情報を注入する)
- name: rewrite task-definition
run: sed -i -e s/SED_TARGET_AWS_ACCOUNT_ID/${{ secrets.AWS_ACCOUNT_ID }}/g .aws/ecs/task-definition.json
# ...
# Deploy
- name: Render Amazon ECS task definition for first container
id: render-web-container
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: .aws/ecs/task-definition.json
container-name: nginx
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:latest
주의 사항
용기의 환경 변수에 기밀 정보를 보유하게 하려면 시스템 관리자의 파라미터를 이용하여 저장하는 것이 편리하다.
Reference
이 문제에 관하여(GiitHub Actions에서 ECS를 개발할 때 task-definition.외부에서 json으로 기밀 정보 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nagi125/articles/754347b9f0a13154c957텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)