1. 아키텍처의 기본적인 차이:
- x86_64: Intel/AMD의 전통적인 컴퓨터 프로세서 아키텍처
- ARM64: 모바일 기기에서 시작해서 서버까지 확장된, 전력 효율적인 RISC 기반 아키텍처
2. AWS Lambda의 환경:
- AWS는 비용 효율성과 성능을 위해 Graviton2/3 프로세서(ARM64 기반)를 많이 사용
- Lambda 실행 환경이 ARM64인데 x86_64로 빌드된 이미지를 실행하려고 하면 CPU 명령어 세트가 달라서 실행 불가
3. 실패 원인:
```
RequestId: 9f3fce15-e2b9-47ab-b906-47c9aa5eceb6 Error: fork/exec /lambda-entrypoint.sh: exec format error
```
이 에러는 바이너리가 현재 CPU 아키텍처에서 실행될 수 없다는 것을 의미합니다.
4. 해결 방법:
```dockerfile
# 빌드 시 플랫폼 명시
docker build --platform linux/arm64/v8 ...
```
이렇게 하면 ARM64용 바이너리가 생성되어 Lambda 환경에서 정상 실행됩니다.
반응형
'꺼내먹어요' 카테고리의 다른 글
CompletableFuture - http 호출 병렬처리 (0) | 2023.04.20 |
---|---|
bash grep, cut, >(Redirection) 활용 (0) | 2023.01.31 |
Java List를 Map으로 변경 (0) | 2023.01.25 |
AWS SES Java SDK 여러명 Email 전송 로직 (0) | 2023.01.01 |
Collectors.groupingBy() - Java List 특정 기준으로 그룹 나누기 (0) | 2023.01.01 |