[AWS] awscli를 사용하여 로컬 복수 파일 S3에 업로드

Squirrel·2021년 10월 16일
1

AWS

목록 보기
2/5
post-thumbnail

로컬에서 여러 파일을 S3에 업로드하고자 와일드카드(*)를 사용하여 cp 명령어를 시도하니 Unknown options 에러가 발생하였다.

확인해보니 aws cli를 사용하여 S3로 여러 파일을 업로드하려면 recursive 및 include, exclude 필터를 사용해주어야 한다. (UNIX 스타일의 와일드카드 사용은 지원되지 않는다.)

recursive를 사용하면 지정된 디렉토리 또는 접두사 아래의 모든 파일 및 객체에 대해 명령이 수행된다.

이 때, exclude 옵션이 include 옵션보다 우선해야 정상적으로 동작하는데

exclude 파라미터로 먼저 모든 파일을 선택하고 include 파라미터를 사용하여 copy를 원하는 객체의 특정 문자를 포함하는 파일만 추출하여 업로드하는 형태가 된다.

$ aws s3 cp [source(로컬 디렉토리 경로)] [target(s3 url)] --recursive --exclude "*" --include "image-*"

여기서는 "image-"를 포함하는 파일만 S3로 업로드해보도록 한다.
$ aws s3 cp /Users/squirrel/Desktop/Images s3://test-s3-squirrel/cp-test/ --recursive --exclude "*" --include "image-*"
upload: ./image-1.jpg to s3://test-s3-squirrel/cp-test/image-1.jpg 
upload: ./image-4.jpg to s3://test-s3-squirrel/cp-test/image-4.jpg 
upload: ./image-2.jpg to s3://test-s3-squirrel/cp-test/image-2.jpg 
upload: ./image-3.png to s3://test-s3-squirrel/cp-test/image-3.png

아래와 같이 test-s3-squirrel 버킷의 cp-test 폴더 안에 "image-*"에 해당하는 파일만 업로드 된 것을 확인할 수 있다.


현재 작업 디렉토리에서 Amazon S3 버킷으로 단일 파일을 복사하기 위한 aws cp 명령어는 아래와 같다.
$ aws s3 cp <source> <target> [--options]

$ aws s3 cp filename.txt s3://bucket-name

[참고 링크]

[1] https://docs.aws.amazon.com/cli/latest/reference/s3/
[2] https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-services-s3-commands.html

0개의 댓글