본문 바로가기
C.W.K.
Stream
Lesson 04 of 13 · published

클라우드 배포 — AWS

~12 min · aws, oidc, ecs, lambda

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

OIDC와 배포 액션

AWS 배포 패턴은 OIDC로 인증하고, 그다음 아래 방식 중 하나를 선택해.

  • ECS 롤링 배포aws-actions/amazon-ecs-deploy-task-definition
  • kubectl로 EKS 배포aws-actions/configure-aws-credentials + aws eks update-kubeconfig + kubectl apply.
  • Lambdaaws-actions/aws-lambda-deploy 또는 aws lambda update-function-code.
  • S3 / CloudFront 정적 사이트aws s3 sync + aws cloudfront create-invalidation.
  • App Runneraws-actions/amazon-app-runner-deploy.

AWS 측 일회성 설정

  1. token.actions.githubusercontent.com 용 IAM Identity Provider 생성.
  2. repo:my-org/my-repo:ref:refs/heads/main 키로 trust policy를 가진 IAM Role 생성.
  3. Role의 permissions policy가 특정 배포 액션을 허용하도록 설정 (예: 특정 service ARN에 ecs:UpdateService 권한 부여).

설정을 마치면, 모든 워크플로 실행 시 범위가 제한된 1시간짜리 자격 증명을 새로 받게 돼. 정적 키는 필요 없어.

Code

S3 + CloudFront에 정적 사이트 배포·yaml
  deploy:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    environment:
      name: production
      url: https://www.example.com
    steps:
      - uses: actions/checkout@v4
      - uses: actions/download-artifact@v4
        with: { name: dist, path: dist }
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::111222333444:role/gha-deploy-prod
          aws-region: us-east-1
      - run: |
          aws s3 sync dist/ s3://www-example-com/ --delete
          aws cloudfront create-invalidation \
            --distribution-id ${{ vars.CLOUDFRONT_ID }} \
            --paths '/*'

External links

Exercise

AWS 워크로드가 있다면 IAM Identity Provider와 role을 설정하고, 배포 하나를 정적 키에서 OIDC로 마이그레이션해 봐. Trust Relationship JSON이 좀 까다로운데, 단일 저장소와 브랜치로 범위를 제한하는 게 핵심이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.