본문 바로가기
CS/AWS

[AWS S3] 업로드한 이미지 파일 URL 한번에 저장하는 법

by Hyeri.dev 2024. 8. 25.

최근 회사에서 S3에 업로드된 이미지 파일 URL 전체가 필요한 일이 생겼다.

업로드 된 파일이 한두개가 아니기 때문에 하나하나 복붙하기에는 무리가 있어 한번에 저장하는 방법을 찾게 되었다.

 

아래 작성된 내용은 추후에 또 이런 일이 발생했을 때 참고하기 위해 작성된 것이다.

AWS CLI 설치 (+ Mac 기준)

Mac os는 homebrew를 통해 간단하게 설치가 가능하다.

~ brew install awscli  // Homebrew를 통해 설치
~ aws --version        // 설치 후 버전 확인

버전 확인 명령어로 버전이 확인된다면 정상적으로 설치가 완료된 것이다.

 

AWS CLI Configure

AWS Cli를 사용하기 위해서는 AWS에서 발급한 IAM 사용자의 Access Key ID, Secret Access Key가 필요하다.

~ aws configure
AWS Access Key ID [None] : [발급받은 IAM의 Access Key ID]
AWS Secret Access Key [None] : [발급받은 IAM의 Secret Access Key]
Default region name [None] : ap-northeast-2[서울 리전]
Default output format [None] : text / json / table 중 선택, 해당 글에선 text를 선택하였다.

1. 원하는 폴더의 파일명을 txt 파일로 저장

~  aws s3 ls [S3 URI 주소] --recursive --output text --query "Contents[].Key" > [저장할 파일명].txt

위 명령어를 실행하면 현재 명령어를 실행한 장소에 파일이 저장되어 있다.

2. 파일명.txt 를 URL로 변환

1번의 명령어를 실행하면 위 이미지와 같이 저장된다. 여기서 중요한 것은 단순 텍스트 파일이라 '공백'을 기준으로 섹션이 나뉘기 때문에 파일명에 띄어쓰기가 있을 경우 URL로 변환할 때 텍스트가 누락될 수 있다.

~  awk '{print "[파일명 앞에 붙어야하는 주소]"$4}' [변환이 필요한 파일명].txt > [변환 후 저장할 파일명].txt

명령어에 $4는 텍스트 파일에서의 섹션을 의미하기 때문에 사용해야 하는 텍스트가 몇번 섹션인지 알고 있어야 한다.  

 

위 명령어를 통해 변환된 파일을 열어보면 아래와 같이 저장된 것을 알 수 있다.