AWS Elastic Container Registry(ECR)를 사용할 때, MFA(Multi-Factor Authentication)가 활성화된 계정을 이용하는 경우에는 매번 임시 세션 토큰을 발급받아야만 인증이 가능합니다. 이 과정을 수동으로 반복하다 보면 번거롭고 비효율적일 수 있습니다. 특히 Docker로 이미지를 푸시하거나 풀(Pull)하는 작업이 잦은 경우에는 인증 절차를 자동화하는 것이 큰 도움이 됩니다.
이 글에서는 Windows 환경에서 배치 파일(.bat)을 사용하여 AWS CLI와 Docker 로그인을 자동화하는 방법을 소개합니다. 사용자로부터 MFA 코드를 입력받아 임시 자격 증명을 발급받고, 해당 자격 증명을 사용해 ECR에 로그인하는 과정을 자동화합니다.
사전 준비 사항
자동화 스크립트를 실행하기 위해서는 다음과 같은 항목들이 준비되어야 합니다.
- Windows 운영체제
- AWS CLI가 설치되어 있고, 프로파일이 설정되어 있어야 합니다 (
aws configure
) - Docker가 설치되어 있으며 실행 중이어야 합니다
- MFA가 활성화된 IAM 사용자 계정
- 해당 계정의 MFA 디바이스 ARN 정보
자동화 배치 파일(.bat) 코드
다음은 MFA 코드를 입력받아 AWS 임시 세션을 생성하고, Docker를 통해 ECR에 로그인하는 기능을 수행하는 .bat
파일 코드입니다. 이 코드는 PowerShell 명령어를 내부에서 호출하여 AWS CLI와 연동합니다.
@echo off
set AWS_PROFILE=default
set REGION=ap-northeast-2
set MFA_SERIAL=arn:aws:iam::123456789012:mfa/사용자이름
:: MFA 코드 입력
set /p MFA_CODE=Enter MFA code:
:: PowerShell로 AWS 세션 생성 및 Docker 로그인 실행
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$ErrorActionPreference = 'Stop'; ^
$json = (aws sts get-session-token --serial-number '%MFA_SERIAL%' --token-code '%MFA_CODE%' --duration-seconds 3600 --profile '%AWS_PROFILE%' | Out-String); ^
$session = $json | ConvertFrom-Json; ^
$env:AWS_ACCESS_KEY_ID = $session.Credentials.AccessKeyId; ^
$env:AWS_SECRET_ACCESS_KEY = $session.Credentials.SecretAccessKey; ^
$env:AWS_SESSION_TOKEN = $session.Credentials.SessionToken; ^
$accountId = (aws sts get-caller-identity --query Account --output text); ^
aws ecr get-login-password --region '%REGION%' | docker login --username AWS --password-stdin $accountId.dkr.ecr.%REGION%.amazonaws.com; ^
Write-Host 'Docker login complete with MFA-authenticated session.'"
pause
코드 설명
set /p MFA_CODE
명령어를 통해 사용자로부터 MFA 코드를 입력받습니다.aws sts get-session-token
명령어를 통해 임시 자격 증명을 발급받습니다. 이때 MFA 디바이스의 ARN과 입력한 MFA 코드를 함께 전달합니다.- PowerShell 내에서 JSON 형식의 응답을 문자열로 변환한 후
ConvertFrom-Json
을 사용하여 파싱합니다. - 발급받은 자격 증명을 PowerShell 환경 변수에 설정하고, 해당 자격으로 Docker 로그인을 수행합니다.
pause
명령어를 통해 결과를 확인할 수 있도록 화면을 일시 정지합니다.
사용 방법
- 위 코드를 메모장에 복사하여
aws_ecr_login.bat
등의 이름으로 저장합니다. - MFA 디바이스 ARN, AWS 프로파일 이름, 리전 값을 본인의 환경에 맞게 수정합니다.
- 저장한
.bat
파일을 Windows 환경에서 실행하면, MFA 코드를 입력한 후 자동으로 AWS 세션이 생성되고 Docker로 ECR에 로그인됩니다.
활용 방안
이 배치 파일은 반복적인 인증 과정을 자동화하여 개발 및 운영 환경에서 효율적인 이미지 관리 작업을 가능하게 합니다. 필요하다면 Windows 작업 스케줄러에 등록하여 주기적으로 실행하거나, GUI 환경을 추가하여 사용성을 높일 수도 있습니다.
에러가 발생할 경우
저는 Visual Studio Code 편집기를 통해 작성했습니다. 배치파일 실행 시 줄바꿈을 뜻하는 ^ 문자가 들어갔을 때 제대로 인식하지 못하는 오류가 있어서 -Command
이후의 모든 명령어를 한 줄로 합쳤습니다. 이후 정상 작동을 확인했습니다.
'개발 (Development) > AWS' 카테고리의 다른 글
[AWS] AWS 환경에서 모델 학습 API 호출 시 Broken pipe 에러 해결 과정 (0) | 2025.06.28 |
---|---|
[AWS] S3 객체 권한 변경 - PutObjectAcl (0) | 2025.04.12 |
[AWS] AWS S3 버킷이 데이터 레이크인지 데이터 웨어하우스인지 확인하는 방법 (0) | 2025.04.10 |