AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)

2023. 10. 30. 00:30·AWS/CodePipeline, CICD
반응형

이번에는 PRE_BUILD 단계에서 발생한 빌드오류를 해결해 보자

 


 

1. 빌드 오류 파악하기


1-1. 오류 파악

  • 열심히 S3 관련 문제를 해결했더니 이번에는 아래와 같은 PRE_BUILD 단계에서 에러가 발생했다.

PRE_BUILD에러 발생
PRE_BUILD에러 발생

COMMAND_EXECUTION_ERROR: Error while executing command: aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin {ecr 리포지토리 주소}. Reason: exit status 1

 

1-2. 빌드 로그 분석하기

  • 조금 더 정확히 보기위해 빌드 로그를 확인했다. 아무래도 이번에는 IAM 권한관련 에러인것 같다. (ECR 권한에러) 
[Container] 2023/10/28 11:15:48.610669 Running command echo Logging in to Amazon ECR...
Logging in to Amazon ECR...

[Container] 2023/10/28 11:15:48.615475 Running command aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::473709498430:assumed-role/codebuild-recipia-member-build-nvpc-service-role/AWSCodeBuild-a96f8b53-10e3-4bdb-a7f9-109378a51781 is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action
Error: Cannot perform an interactive login from a non TTY device

[Container] 2023/10/28 11:16:03.103564 Command did not exit successfully aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository exit status 1
[Container] 2023/10/28 11:16:03.107195 Phase complete: PRE_BUILD State: FAILED
[Container] 2023/10/28 11:16:03.107211 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository. Reason: exit status 1

 

1-3. CodeBuild에 연결된 정책 파악하고 수정하러 가기

  • 이전 포스트에서도 봤지만 "codebuild-recipia-member-build-nvpc-service-role" 이거였다.
  • "IAM > 역할"로 가서 "codebuild-recipia-member-build-nvpc-service-role"를 검색한 후 아래에 나오는 일치하는 역할이름을 클릭해서 들어가자

IAM > 역할 검색
IAM > 역할 검색

 

1-4. 권한 추가하기

  • 들어온 역할의 요약 하단의 "권한"을 클릭하고 우측의 “권한 추가” 버튼을 클릭한다.

권한 추가하기
권한 추가하기

 

  • 아래와 같이 권한을 지정하는 화면이 나올텐데 처음에는 JSON이 선택되어있지않아서 아무것도 안보일것이다.

권한 지정
권한 지정

 

  • 정책 편집기에 아래에 적어놓은 정책 내용(JSON코드)을 적고 “다음”을 누른다.
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "AllowCodeBuildAccess",
			"Effect": "Allow",
			"Action": [
				"ecr:GetDownloadUrlForLayer",
				"ecr:BatchGetImage",
				"ecr:BatchCheckLayerAvailability",
				"ecr:PutImage",
				"ecr:InitiateLayerUpload",
				"ecr:UploadLayerPart",
				"ecr:CompleteLayerUpload",
				"ecr:GetAuthorizationToken",
				"ecr:DescribeRepositories",
				"ecr:GetRepositoryPolicy",
				"ecr:ListImages",
				"ecr:DeleteRepository",
				"ecr:BatchDeleteImage",
				"ecr:SetRepositoryPolicy",
				"ecr:DeleteRepositoryPolicy"
			],
			"Resource": "*"
		}
	]
}

 

  • 이제 아래와 같이 "검토 및 생성" 페이지가 나올것이다. 여기서 정책 이름을 설정하고 하단의 “정책 생성”버튼을 누른다. 여기서 나는 정책 이름을 "codebuild-pre-build-error-handler"라고 설정해 줬다.

검토 및 생성
검토 및 생성

 

  • 정책 생성이 완료되면 아래와 같이 방금 넣은 권한 정책이 생긴것을 볼수가 있다.

권한 정책 확인
권한 정책 확인

 

1-5. 이제 ECR 관련 권한을 추가했으니 다시 빌드를 했다.

  • 이전의 "PRE_BUILD"에 나왔던 ECR에 접근하지 못했던 에러는 해결되어서 통과하고 다음으로 넘어갔다. 왜냐하면 방금 정책에 ECR 접근 권한들을 전부 넣어주었기 때문이다. 근데 이번에는 또 다음 BUILD 단계에서 에러가 발생했다.

에러 발생
에러 발생

 

 

에러를 해결하니까 또 에러가 발생했다. 실패는 성공의 어머니라고 실패를 거듭하면서 더 많은 지식들을 알게되어 기쁜마음도 있다. 당연히 스트레스도 받지만 새로운 지식을 얻어가는 과정이 재밌다. 다음 포스트는 새롭게 발생한 BUILD 단계의 에러를 해결해보겠다.




 

2023.10.30 - [AWS] - AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)

 

AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)

저번 포스트에서는 PRE_BUILD단계의 오류를 해결했다. 이번 포스트에서는 그 다음 BUILD 단계에서 발생한 오류를 해결해 보자 1. BUILD단계의 오류 파악하기 1-1. 오류 파악 PRE_BUILD오류를 해결했더니

curiousjinan.tistory.com

 

2023.10.29 - [AWS] - AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)

 

AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)

이번에는 3편에서 만든 CodePipeline을 실행하면 발생하는 오류를 해결해보도록 하자 1. 빌드 오류사항 파악 1-1. 오류 발생 잘 만들어서 동작시켰더니 빌드에서 오류가 발생했다. 이를 파악하기 위

curiousjinan.tistory.com

 

반응형

'AWS > CodePipeline, CICD' 카테고리의 다른 글

AWS CI/CD: CodePipeline 배포 오류 수정 (7편)  (1) 2023.10.30
AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)  (1) 2023.10.30
AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)  (2) 2023.10.29
AWS CI/CD: CodePipeline 배포 및 검토 (3편)  (1) 2023.10.29
AWS CI/CD: CodePipeline 빌드 스테이지 추가 (2편)  (2) 2023.10.29
'AWS/CodePipeline, CICD' 카테고리의 다른 글
  • AWS CI/CD: CodePipeline 배포 오류 수정 (7편)
  • AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)
  • AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)
  • AWS CI/CD: CodePipeline 배포 및 검토 (3편)
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (240)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (5)
      • MSA (14)
      • DDD (7)
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)
상단으로

티스토리툴바