PaaS/CI CD

Gitlab-CI) AWS CLI 사용을 위한 인증 방법

armyost 2024. 3. 11. 22:33
728x90

ECR에 이미지를 Push하거나 할때 AWS Configure가 미리 선행되어 있어야 한다. Gitlab CI는 관련한 Action을 이미 정형화 해서 서비스 제공을 하는데...

 

1. AWS IAM에서 사용자를 추가한다. 그리고 Access Token을 발행한다.

 

 

2. 위 사용자에 Policy를 부여한다.

해당 Poilcy는 아래의 JSON과 같이 정의한다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CompleteLayerUpload",
                "ecr:GetAuthorizationToken",
                "ecr:UploadLayerPart",
                "ecr:InitiateLayerUpload",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage"
            ],
            "Resource": "*"
        }
    ]
}

 

3. 해당 Repository의 Settings - CI/CD - Variables에 아래의 내용을 등록한다.

 

AWS_ACCESS_KEY_ID Your Access key ID.
AWS_SECRET_ACCESS_KEY Your secret access key.
AWS_DEFAULT_REGION Your region code

 

4. 그 다음 gitlab-ci.yml에서 

아래와 같이 Gitlab에서 이 기능을 위해 제공하는 Image만 잘 사용하면 된다. 

build-push-docker:
  stage: build
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  script:
    - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_PIPELINE_ID