본문 바로가기
DevOps/AWS

AWS S3 CLI upload & download

by Ligion 2022. 8. 16.

 

서론

보통은 CLI가 불편하고 GUI가 편한데 S3를 사용하다보니

AWS 콘솔(GUI)에서 S3 파일 업로드 및 다운로드가 불편하고 오히려 CLI가 익숙해지면 훨씬 편한듯하다.

콘솔이 불편해서 알게 된 S3 cli 접속 및 업다운로드하는 방법을 기록해보자.

 

※ macOS 기준으로 작성함.

 

이외에 필요한 내용은 공식 홈페이지에 다 나와있으니 참고해보자.

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-welcome.html

 

AWS Command Line Interface이란 무엇인가요? - AWS Command Line Interface

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

1. 설치

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

 

2. 설치확인

aws --version
# aws-cli/2.4.5 Python/3.8.8 Darwin/18.7.0 botocore/2.4.5

 

3. configure 설정

IAM 엑세스키 발급 : AWS console → IAM → 사용자 → 사용할 계정 → 보안자격증명 탭 → 액세스키 만들기

※ Secret Access Key는 다시 확인할 수 없으니 확실히 백업해놔야함!

# IAM 엑세스 키 발급 후 

aws configure

AWS Access Key ID : myAccessKeyID
AWS Secret Access Key : mySecretAccessKey
Default region name : ap-northeast-2 # -> 서울
Default output format : #그냥 엔터

 

3-1. 세션토큰얻기 (MFA 설정했을 경우, 안했으면 4번으로)

디바이스 시리얼 넘버 확인 : AWS console → IAM → 사용자 → 사용할 계정 → 보안자격증명 탭 → 할당된 MFA 디바이스

# 공식
# aws sts get-session-token \
#     --serial-number <serial number> \
#     --token-code <code> # OTP code

aws sts get-session-token \
  --serial-number 'arn:aws:iam::111111111111:mfa/wr-nood.tistory.com' \
  --token-code 222555

# {
#     "Credentials": {
#         "AccessKeyId": "AAAAAAAAAAAAA",
#         "SecretAccessKey": "AAAAAAAAAAAAABBBBBBBBBBBBB",
#         "SessionToken": "AAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCC",
#         "Expiration": "2022-08-08T13:30:59+00:00"
#     }
# }

 

3-2. 토큰 셋팅

# 한줄씩 입력
export AWS_ACCESS_KEY_ID=AAAAAAAAAAAAA
export AWS_SECRET_ACCESS_KEY=AAAAAAAAAAAAABBBBBBBBBBBBB
export AWS_SESSION_TOKEN=AAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCC

 

4. 연결확인

aws s3 ls

 

5. 다운로드

# [파일다운]
# 공식 : aws s3 cp <s3 fiel url> <local file path>
aws s3 cp s3://wr-nood/web/aaa.html ./

# [폴더다운]
# 공식 : aws s3 cp --recursive <s3 url> <local path>
aws s3 cp --recursive s3://wr-nood/web/ ./

 

6. 업로드

# cp = 교체, sync = 바뀐것만(오래걸림)
# 공식 : aws s3 (cp or sync) <local path> <s3 path> --acl <권한>

aws s3 cp aaa.html s3://wr-nood/web/aaa.html --acl public-read
aws s3 sync ./ s3://wr-nood/web/ --acl public-read

권한 종류 : https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object-acl.html#options

 

7. 다음에 다시 연결 시 (MFA 사용일 경우만)

unset AWS_SESSION_TOKEN AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY

# 그다음 3-1번부터 시작

 

 

 

'DevOps > AWS' 카테고리의 다른 글

GitLab + Jenkins + S3  (0) 2022.08.31

댓글