https://dean83.tistory.com/370 에 이어서 ECR에 배포되어 있던 이미지를 이용하여 ECS를 구동하는 나머지 과정이다.
중요한것이, github 에서 x86으로 구동되므로 AWS의 ECS도 x86에서 구동되도록 해야 한다.
- ECS 에 구동중인 task definition을 가져온다.
- task definition 정보 중, 이미지 관련 정보를 수정한다
- 업로드한 이미지를 사용하도록 정보를 수정한다.
- 수정한 정보를 AWS에 업로드 한다.
- 오류가 발생했을때, 알림을 발생한다 (슬랙 등)
- 슬랙에서 설정하는 방법 등은 생략한다.
- 굳이 슬랙 말고, 디스코드 등 다양한 방법이 가능하다.
아래는 도커 빌드 후 이미지를 ECR에 업로드 한 이후 명령들 이다.
......
- name: Prework for ECS - task definition download
run: |
aws ecs describe-task-definition --task-definition ECS등록태스크이름 --query taskDefinition > task-definition.json
- name : change definition
id: render-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: json에_명시된_컨테이너이름
image: ${{env.ECR_REG}}${{env.ECR_REPO}}:${{env.IMAGE_TAG}}
- name: deploy changed task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v2
with:
task-definition: ${{steps.render-task-def.outputs.task-definition}}
service: ECS에_등록된_서비스이름
cluster: ECS에_등록된_클러스터이름
wait-for-service-stability: true #서비스 배포될때까지 대기
- name: verify
run: |
echo "Verifying deployment"
aws ecs describe-services --cluster ECS클러스터이름 --services ECS서비스이름
#실패시 슬랙으로 알람 발송.
notify-slack:
needs: build-and-push #이 명칭은 최초 jobs 이후에 명시된 이름을 적어주면 된다.
runs-on: ubuntu-latest
if: failure() # ❗ build-and-push가 실패했을 경우에만 실행
steps:
- name: Send Slack alert
uses: slackapi/slack-github-action@v1.27.0
with:
payload: |
{
"text": ":x: *GitHub Actions Failed!*\nRepository: `${{ github.repository }}`\nWorkflow: `${{ github.workflow }}`\nBranch: `${{ github.ref_name }}`\nCommit: `${{ github.sha }}`\nAuthor: `${{ github.actor }}`\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Details>"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}'Backend > 공통' 카테고리의 다른 글
| 쿠키 및 세션 보안 관련 (CSRF 등) (0) | 2025.12.12 |
|---|---|
| Github Action을 통한 AWS CI/CD (2) (0) | 2025.11.11 |
| Github Action을 통한 AWS CI/CD (1) (0) | 2025.11.11 |
| EC2, RDS 등 컴퓨팅 설정 및 ECS 설명 (0) | 2025.11.07 |
| REST API, RESTful API (0) | 2025.09.19 |