/aws/install
필자는 젠킨스를 로컬로 관리하기에 로컬에 도커를 설치하고 도커안에 젠킨스를 설치했다.
해당 오류는 무엇인가?
현재 Jenkins Docker 컨테이너 내에서 AWS CLI를 실행할 때 발생하는 rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2 오류는 아키텍처 불일치로 인해 발생하는 문제.
이는 AWS CLI가 x86_64 아키텍처용으로 설치되었지만, 컨테이너가 ARM 아키텍처에서 실행되고 있기 때문에 발생한다. Rosetta 2는 macOS에서만 동작하며, Linux 기반 Docker 컨테이너 내에서는 사용할 수 없습니다.
그러기에 x86_64에서 ARM로 다시 설치해야 한다.
Mac 기준
apt-get remove -y awscli
기존에 있던 AWS CLI 제거
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
AWS CLI를 공식적으로 제공하는 ARM 아키텍처용 설치 파일을 다운로드하고 설치한다.
apt-get install -y unzip # unzip이 설치되어 있지 않다면 설치
unzip awscliv2.zip
압축 파일 받고 압축 파일을 푼다.
기존에 파일이 있으면 교체해야하는지 물어본다.
전부 교체할거면 대문자 A 를 입력하면된다. 그러면 해당 사진처럼 압축이 풀어진다.
/aws/install
AWS CLI 설치
해당 명령어로 입력하면 해당 파일에 실행되었다고 표시된다.
aws --version
버전 확인
이러면 linux x84_64에서 ARM으로 버전이 변경된 모습을 보이고 있다.
aws configure
해당 명령어를 통해
aws access key ID: aws IAM 엑세스키
aws secret key ID: aws IAM 시크릿키
Default region name: 지금 적용한 지역(리전)
Default output format: 출력할 포멧(보통은 json을 많이 사용한다.)
만일 해당 명령어을 입력했는데 불구하고 해당 오류가 발생하면 rosetta가 설치되어 있지 않다는 이유이기에 로컬 터미널에서 rosetta를 설치해주면된다.
softwareupdate --install-rosetta --agree-to-license
해당 내용이 뜨면서 성공적으로 설치 되었다고 뜨면 다음 순서로 진행하면 된다.
다시 ECR에 푸쉬하기 위해 ECR 측에서 제공한 레지스트리 인증 방법을 통해 순서대로 진행하면 된다.
다시 로그인을 하면 당신의 비밀번호가 해당 파일에 저장되어 있다고 위험 문구를 날려주고 로그인이 성공 되었다고 알려준다.
docker build -t <자신의 레지스트리 이름>
이미지 빌드가 정상적으로 처리되었음을 알려준다.
도커 태그 후 푸쉬를 해주면 도커에 이미지 빌드 해놓은 것들이 ECR로 푸쉬가 성공적으로 되었음을 알려준다.
AWS ECR에서도 푸쉬된 이미지들이 저장되었다고 알려준다.
'AWS > AWS 트러블 슈팅' 카테고리의 다른 글
aws s3 yml 오류 (3) | 2024.10.11 |
---|