인프런 커뮤니티 질문&답변

chad님의 프로필 이미지

작성한 질문수

[2024] [DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기

1.9. ECR, AppRunner 소개 및 실습

App Runner 서비스 생성 시 실패

해결된 질문

작성

·

360

·

수정됨

2

1. 무엇을 하고 싶으신가요?

 App Runner 서비스 생성

2. 언제, 어떤 오류가 발생하시나요?

 생성 중 애플리케이션 배포 실패

3. 어떤 시도를 해보셨나요?

 도커 이미지 재생성 및 App Runner 서비스 재생성, App Runner 스펙업(cpu,mem), iam, root 계정에서 생성 시도(권한 문제는 아닌듯)

4. 작성한 코드를 공유해주세요.

이슈:
hands-on-fast-and-secure-cicd-pipeline 깃헙 클론 - 도커파일 경로에서 도커 이미지 생성 - ecr에 푸시 - ecr 이미지 url 이용하여 App Runner 서비스 생성 시 생성 실패하는 상황입니다.



의심 되었던 부분:
1. 컨테이너 이미지나 포트 설정에 문제가 있었다면 localhost:8080으로 접속해도 문제가 생겼을텐데 문제 없이 접속 가능하고요.
2. App Runner의 리소스 제한이 있었을까봐 cpu, mem을 스펙업하고 재생성 했는데도 상황은 동일합니다.
3. 계정 간 권한의 문제일까봐 iam, root 계정에서 생성해보았습니다. 상황은 동일합니다.

 

 

스샷:





에러 로그:
02-16-2024 06:37:27 PM [AppRunner] Deployment with ID : 7b4ba5a1c8f0433187d873df5bd1aa8c started. Triggering event : SERVICE_CREATE

02-16-2024 06:37:27 PM [AppRunner] Deployment Artifact: [Repo Type: ECR], [Image URL: 938923105461.dkr.ecr.us-east-1.amazonaws.com/chadtest], [Image Tag: latest]

02-16-2024 06:37:51 PM [AppRunner] Pulling image 938923105461.dkr.ecr.us-east-1.amazonaws.com/chadtest from ECR repository.

02-16-2024 06:37:54 PM [AppRunner] Successfully pulled your application image from ECR.

02-16-2024 06:38:05 PM [AppRunner] Provisioning instances and deploying image for publicly accessible service.

02-16-2024 06:38:15 PM [AppRunner] Performing health check on protocol TCP [Port: '8080'].

02-16-2024 06:39:06 PM [AppRunner] Your application stopped or failed to start. See logs for more information. Container exit code: 1

02-16-2024 06:39:28 PM [AppRunner] Deployment with ID : 7b4ba5a1c8f0433187d873df5bd1aa8c failed.



제가 겪은 이슈와 같은 상황을 겪고 있는 유저:
https://repost.aws/ko/questions/QU0lse8IEMSi-H4mlp5AAFWw/apprunner-failed-to-deploy
https://komodor.com/learn/exit-codes-in-containers-and-kubernetes-the-complete-guide/
이게 유력한 원인으로 보이는데요...
이게 아니라면 App Runner가 업데이트 되어 강의의 생성 내용과 달라져서 그런 것 인지...
흠...
혹시 App Runner 부분이 정상적으로 진행되지 않는다면 이후 강의에 차질이 생길까요??

답변 1

0

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요.

기본 값(제한시간 2초, 비정상 임계값 5요청, 간격 5초, 정상 임계값 1요청)으로 배포하셨다는 가정 하에 8080 포트 헬스체크가 실패한 것으로 보입니다.

제 환경에서 배포 성공했을 경우 아래와 같이 43초 정도 소요되는걸 확인했습니다.(매 경우 다를 수 있습니다.)
image

(내부 환경으로 인한 차이를 감안했을 때) 첨부해주신 이미지에서는 51초 정도 간격이 있는 것으로 보아 헬스체크를 수행하는 포트실제 어플리케이션 동작 포트가 다를 수 있을 것 같습니다.

정확한 원인을 파악하기 위해, 아래 정보도 제공해주시면 감사하겠습니다.

  1. Python 코드
    2. Dockerfile
    3. 배포로그
    4. 애플리케이션 로그

참고로 배포로그와 애플리케이션 로그는 "App Runner 이벤트 로그" 아래에 있습니다.
image

chad님의 프로필 이미지
chad
질문자

이슈 제현을 위해 10분 정도 소요될 것 같습니다...잠시만요..

chad님의 프로필 이미지
chad
질문자

  1. Python 코드
    image

    2. Dockerfile
    image

    도커 이미지 생성 및 로컬에서 확인

imageimageimage


ecr에 도커 이미지 푸시
imageimage

App Runner 서비스 생성
imageimage

App Runner 서비스 생성 실패
image


3. 배포로그
imageimage


4. 애플리케이션 로그
imageimage

천강민님의 프로필 이미지
천강민
지식공유자

앗..! mac을 사용중이시군요.

1.9. ECR, AppRunner 소개 및 실습에 13:45 부분 보시면,

docker build ... --platform=linux/amd64

위와 같이 platform 옵션을 통해 빌드를 진행합니다.

아마 사용중이신게 Mac의 M 시리즈일 것 같습니다. 해당 시리즈는 arm 기반의 운영체제이기 때문에 amd만 지원하는 AppRunner에서는 정상적으로 동작을 하지 않습니다.

참고로, 실무에서도 exec format error라는 문구를 보시면 높은 확률로 아키텍처가 달라서이니 참고 부탁드립니다.

--platform=linux/amd64옵션 추가하셔서 빌드하신 후에 다시 한 번 시도 부탁드리겠습니다!

chad님의 프로필 이미지
chad
질문자

아...
그럼 이미지 빌드부터 다시 진행하면 될까요?...
기존 ecr 이미지로는 어쨌든 진행을 못한다는 말씀이시죠?

천강민님의 프로필 이미지
천강민
지식공유자

맞습니다.

docker build . -t ...:latest --platform=linux/amd64 로 시도해봐주세요!

chad님의 프로필 이미지
chad
질문자

생성이 실패하는 바람에 영상을 진행하지 못하여 그 내용을 확인하지 못했는데...
이 부분은 공지에 추가되면 좋을 듯 합니다..

천강민님의 프로필 이미지
천강민
지식공유자

넵넵. 일단 시도해보시고 결과 알려주시면 감사하겠습니다.

chad님의 프로필 이미지
chad
질문자

네 잠시만요 진행 중입니다.

chad님의 프로필 이미지
chad
질문자

imageimageimage
정상적으로 생성 완료되었습니다.
amd만 지원한다니...

트러블 슈팅 같이 진행해 주셔서 감사합니다...

천강민님의 프로필 이미지
천강민
지식공유자

고생하셨습니다. 앞으로도 잘 안되는게 있으면 편하게 질문 부탁드리겠습니다.

chad님의 프로필 이미지

작성한 질문수

질문하기