티스토리 뷰

AI 모델 학습을 위해 S3에 저장중인 이미지 500장 이상을 전달해야 하는 업무가 있었다.

 

정확히는 DB에서 전달할 데이터 조회 → 메타데이터.csv 파일로 생성 → S3 이미지를 일괄 다운로드 → 압축 → 전달까지 하나의 데이터셋으로 만드는 작업이었다.

이번 글에서 AWS CLI를 활용해 S3 이미지를 일괄 다운로드하는 과정을 정리해보았다.

 

 

AWS CLI(Command Line Interface)란?
터미널에서 AWS 서비스를 명령어로 제어할 수 있는 도구이다. GUI 대신 명령어를 사용해 다양한 작업을 자동화할 수 있습니다.
반복 작업을 스크립트로 처리할 수 있어 대량의 데이터를 다루는 업무에서 특히 유용하다.

 

 

 

 

 

🗂️ 데이터셋 구성 (참고)

최종 전달 구조는 아래와 같다. 이렇게 구성하면 이미지와 메타데이터를 쉽게 매핑할 수 있다. (images의 파일명은 user_id로 저장)

데이터를 균등하게 샘플링하여 DB 조회 결과는 CSV로 Export 했다.

student_dataset/
├── metadata.csv
└── images/
    ├── 1.jpeg
    ├── 203.png
    └── ...

 

 

 
 

1. AWS CLI 설치

macOS에서는 Homebrew를 이용해 설치할 수 있다.

brew install awscli
 

설치 확인

aws --version

 

 

 

2. AWS 인증 설정

AWS CLI 인증 설정을 해준다.

aws configure
 

입력값 예시

AWS Access Key ID: 회사에서 받은 키
AWS Secret Access Key: 회사에서 받은 시크릿 키
Default region name: ap-northeast-2
Default output format: json

*Access Key는 AWS IAM에서 관리하고 Secret Access Key는 생성시에만 확인 가능하다.

*만약 정보가 없다면 사내 관리자에게 요청한다.

 

 

 

3. S3 이미지 일괄 다운로드

500장 이상의 이미지를 일괄 다운로드하기 위해 CSV 전체를 돌리는 스크립트를 작성한다.

#!/bin/bash

mkdir -p student_dataset/images

tail -n +2 metadata.csv | while IFS=',' read -r user_id name school_id school_name college_id college_name subjct_id department_name img_key img_url
do
    ext="${img_key##*.}"

    aws s3 cp \
        "s3://버킷명/${img_key}" \
        "student_dataset/images/${user_id}.${ext}"
done

*파일명에 유저 ID를 쓰면 나중에 metadata.csv랑 매칭하기 쉬울 것이다.

 

 

 

4. 실행

download_images.sh 파일이 있는 위치에서 실행한다.

cd student_dataset
./download_images.sh
 

권한이 없다면 다운로드 실행에 실패할 수 있다. zsh: permission denied: ./download_images.sh

아래 명령어로 다시 시도한다.

cd student_dataset
chmod +x download_images.sh   # 처음 한 번만(실행 권한 주기)
./download_images.sh

 

 

 

 

 

처음에 500장 넘는 이미지를 어떻게 한번에 받지? 생각하다가 방법을 찾아보니 AWS CLI로 몇 분 만에 다운로드할 수 있었다.

역시 개발엔 안되는 것보다 아직 모르는 방법이 더 많다는걸 또 한번 느꼈다.

오늘 업무도 무사히 마무으리~💪

 

 

 

참고 https://aws.amazon.com/ko/cli/

 

 

 

Total
Today
Yesterday