기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 상위 수준 (s3) 명령 사용 AWS CLI
이 주제에서는 AWS CLI에서 aws s3
aws s3
상위 수준 aws s3
명령은 Amazon S3 객체 관리를 간소화합니다. 이 명령을 사용하면 명령 자체 내에서와 로컬 디렉터리를 사용하여 Amazon S3의 내용을 관리할 수 있습니다.
사전 조건
s3
명령을 실행하려면 다음을 수행해야 합니다.
AWS CLI를 설치하고 구성합니다. 자세한 내용은 의 최신 버전으로 설치 또는 업데이트 AWS CLI 및 에 대한 인증 및 액세스 자격 증명 AWS CLI 단원을 참조하세요.
-
사용하는 프로필에는 예제에서 수행되는 AWS 작업을 허용하는 권한이 있어야 합니다.
-
다음 Amazon S3 용어를 이해하세요.
-
버킷 - 최상위 Amazon S3 폴더입니다.
-
접두사 - 버킷의 Amazon S3 폴더입니다.
-
객체 - Amazon S3 버킷에서 호스팅되는 모든 항목입니다.
-
시작하기 전에
이 섹션에서는 aws s3
명령을 사용하기 전에 주의해야 할 몇 가지 사항에 대해 설명합니다.
대용량 객체 업로드
aws s3
명령을 사용하여 Amazon S3 버킷에 대용량 객체를 업로드하면 AWS CLI 에서 자동으로 멀티파트 업로드를 수행합니다. 이러한 aws s3
명령을 사용할 때는 실패한 업로드를 재개할 수 없습니다.
제한 시간으로 인해 멀티파트 업로드가 실패하거나 에서 수동으로 취소한 경우 AWS CLI는 업로드를 AWS CLI 중지하고 생성된 파일을 정리합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.
kill 명령이나 시스템 오류로 인해 멀티파트 업로드 또는 정리 프로세스가 취소되면 생성된 파일은 Amazon S3 버킷에 남아 있습니다. 멀티파트 업로드를 정리하려면 s3api abort-multipart-upload
멀티파트 복사의 파일 속성 및 태그
aws s3
네임스페이스의 AWS CLI 버전 1 버전의 명령을 사용하여 한 Amazon S3 버킷 위치에서 다른 Amazon S3 버킷 위치로 파일을 복사하고 해당 작업에서 멀티파트 복사 를 사용하는 경우 소스 객체의 파일 속성은 대상 객체로 복사되지 않습니다.
기본적으로 멀티파트 복사본을 수행하는 s3
네임스페이스의 AWS CLI 버전 2 명령은 모든 태그와 , content-type
, content-language
, content-encoding
, expires
, content-disposition
cache-control
및 속성 세트를 소스에서 대상 복사본으로 전송합니다metadata
.
이로 인해 AWS CLI 버전 1을 사용했을 때 수행되지 않았을 Amazon S3 엔드포인트에 대한 추가 AWS API 호출이 발생할 수 있습니다. 여기에는 HeadObject
, GetObjectTagging
및 PutObjectTagging
이 포함됩니다.
AWS CLI 버전 2 명령에서 이 기본 동작을 변경해야 하는 경우 --copy-props
파라미터를 사용하여 다음 옵션 중 하나를 지정합니다.
-
default - 기본값입니다. 소스 객체에 연결된 모든 태그와 비 멀티파트 복사에 사용되는
--metadata-directive
파라미터에 포함된 속성(content-type
,content-language
,content-encoding
,content-disposition
,cache-control
,expires
및metadata
)이 복사에 포함되도록 지정합니다. -
metadata-directive - 비 멀티파트 복사에 사용되는
--metadata-directive
파라미터에 포함된 속성만 복사에 포함되도록 지정합니다. 태그는 복사하지 않습니다. -
none - 소스 객체의 속성이 복사에 포함되지 않도록 지정합니다.
버킷 만들기
s3 mb
버킷 이름에는 소문자, 숫자, 하이픈, 마침표가 포함될 수 있습니다. 버킷 이름은 문자나 숫자로만 시작하고 끝날 수 있으며 하이픈이나 다른 마침표 옆에 마침표가 포함될 수 없습니다.
구문
$
aws s3 mb <target> [--options]
다음 예제에서는 s3://amzn-s3-demo-bucket
버킷을 생성합니다.
$
aws s3 mb s3://
amzn-s3-demo-bucket
버킷 및 객체 나열
버킷, 폴더 또는 객체를 나열하려면 s3 ls
구문
$
aws s3 ls <target> [--options]
이 명령과 함께 사용할 몇 가지 일반적인 옵션 및 예제는 s3 명령에 자주 사용되는 옵션 섹션을 참조하세요. 사용 가능한 옵션의 전체 목록은 AWS CLI 명령 참조에서 s3 ls
다음 예제에서는 모든 Amazon S3 버킷을 나열합니다.
$
aws s3 ls
2018-12-11 17:08:50 amzn-s3-demo-bucketamzn-s3-demo-bucket1 2018-12-14 14:55:44 amzn-s3-demo-bucket2
다음 명령은 버킷에 있는 모든 객체와 접두사를 나열합니다. 이 예제 출력에서 접두사 example/
에는 MyFile1.txt
라는 이름의 파일이 하나 있습니다.
$
aws s3 ls
s3://amzn-s3-demo-bucket
PRE example/ 2018-12-04 19:05:48 3 MyFile1.txt
명령에 특정 접두사를 포함하여 출력을 필터링할 수 있습니다. 다음 명령은 의 객체를 나열합니다.bucket-name/example/
(즉, 의 객체 bucket-name
접두사로 필터링됨 example/
).
$
aws s3 ls
s3://amzn-s3-demo-bucket/example/
2018-12-06 18:59:32 3 MyFile1.txt
버킷 삭제
버킷을 삭제하려면 s3 rb
구문
$
aws s3 rb <target> [--options]
다음 예제에서는 s3://amzn-s3-demo-bucket
버킷을 제거합니다.
$
aws s3 rb
s3://amzn-s3-demo-bucket
기본적으로 작업에 성공하려면 버킷이 비어 있어야 합니다. 비어 있지 않은 버킷을 제거하려면 --force
옵션을 포함시켜야 합니다. 이전에 삭제했지만 보관된 객체가 포함되어 있는 버전 지정된 버킷을 사용할 경우 이 명령을 사용하여 버킷을 제거할 수 없습니다. 먼저 모든 내용을 제거해야 합니다.
다음 예제에서는 버킷의 모든 객체와 접두사를 삭제한 다음 버킷을 삭제합니다.
$
aws s3 rb
s3://amzn-s3-demo-bucket
--force
객체 삭제
버킷이나 로컬 디렉터리의 객체를 삭제하려면 s3 rm
구문
$
aws s3 rm <target> [--options]
이 명령과 함께 사용할 몇 가지 일반적인 옵션 및 예제는 s3 명령에 자주 사용되는 옵션 섹션을 참조하세요. 전체 옵션 목록은 AWS CLI 명령 참조에서 s3 rm
다음 예제에서는 filename.txt
에서 s3://amzn-s3-demo-bucket/example
파일을 삭제합니다.
$
aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt
다음 예제에서는 s3://amzn-s3-demo-bucket/example
옵션을 사용하여 --recursive
에서 모든 객체를 삭제합니다.
$
aws s3 rm s3://amzn-s3-demo-bucket/example --recursive
객체 이동
s3 mv
s3 mv
명령은 소스 객체 또는 파일을 지정된 대상으로 복사한 다음 소스 객체 또는 파일을 삭제합니다.
구문
$
aws s3 mv <source> <target> [--options]
이 명령과 함께 사용할 몇 가지 일반적인 옵션 및 예제는 s3 명령에 자주 사용되는 옵션 섹션을 참조하세요. 사용 가능한 옵션의 전체 목록은 AWS CLI 명령 참조에서 s3 mv
주의
Amazon S3 소스 ARNs 또는 대상 에서 모든 유형의 액세스 포인트 또는 액세스 포인트 별칭을 사용하는 경우 소스 및 대상 Amazon S3가 다른 기본 버킷으로 URIs 확인되도록 각별히 주의해야 URIs합니다. 소스 버킷과 대상 버킷이 동일한 경우 소스 파일 또는 객체를 자체로 이동할 수 있으므로 소스 파일 또는 객체가 실수로 삭제될 수 있습니다. 소스 버킷과 대상 버킷이 동일하지 않은지 확인하려면 --validate-same-s3-paths
파라미터를 사용하거나 환경 변수를 AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS
로 설정합니다true
.
다음 예제에서는 s3://amzn-s3-demo-bucket/example
에서 모든 객체를 s3://amzn-s3-demo-bucket/
으로 이동합니다.
$
aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
다음 예제에서는 s3 mv
명령을 사용하여 현재 작업 디렉터리에서 Amazon S3 버킷으로 로컬 파일을 이동합니다.
$
aws s3 mv filename.txt s3://amzn-s3-demo-bucket
다음 예제에서는 Amazon S3 버킷에서 현재 작업 디렉터리로 파일을 이동합니다. 여기서 ./
는 현재 작업 디렉터리를 지정합니다.
$
aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./
객체 복사
s3 cp
구문
$
aws s3 cp <source> <target> [--options]
표준 입력(stdin
) 또는 표준 출력(stdout
)으로의 파일 스트리밍을 위해 dash 파라미터를 사용할 수 있습니다.
주의
를 사용하는 경우 PowerShell쉘이 의 인코딩을 변경하거나 파이프 입력 CRLF 또는 출력, 리디렉션된 출력CRLF에 를 추가할 수 있습니다.
s3 cp
명령은 다음 구문을 사용하여 stdin
에서 지정된 버킷으로 파일 스트림을 업로드합니다.
구문
$
aws s3 cp - <target> [--options]
s3 cp
명령은 다음 구문을 사용하여 stdout
에 대한 Amazon S3 파일 스트림을 다운로드합니다.
구문
$
aws s3 cp <target> [--options] -
이 명령과 함께 사용할 몇 가지 일반적인 옵션 및 예제는 s3 명령에 자주 사용되는 옵션 섹션을 참조하세요. 전체 옵션 목록은 AWS CLI 명령 참조에서 s3 cp
다음 예제에서는 s3://amzn-s3-demo-bucket/example
에서 s3://amzn-s3-demo-bucket/
으로 모든 객체를 복사합니다.
$
aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
다음 예제에서는 s3 cp
명령을 사용하여 현재 작업 디렉터리에서 Amazon S3 버킷으로 로컬 파일을 복사합니다.
$
aws s3 cp filename.txt s3://amzn-s3-demo-bucket
다음 예제에서는 Amazon S3 버킷에서 현재 작업 디렉터리로 파일을 복사합니다. 여기서 ./
는 현재 작업 디렉터리를 지정합니다.
$
aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./
다음 예제에서는 echo를 사용하여 "hello world" 텍스트를 s3://bucket-name/filename.txt
파일로 스트리밍합니다.
$
echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt
다음 예제에서는 s3://amzn-s3-demo-bucket/filename.txt
파일을 stdout
으로 스트리밍하고 내용을 콘솔로 인쇄합니다.
$
aws s3 cp s3://amzn-s3-demo-bucket/filename.txt -
hello world
다음 예제에서는 s3://bucket-name/pre
의 내용을 stdout
으로 스트리밍하고, bzip2
명령을 사용하여 파일을 압축하고 key.bz2
라는 새 압축 파일을 s3://bucket-name
에 업로드합니다.
$
aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2
객체 동기화
s3 sync
s3 sync
는 원본과 대상 간에 누락되거나 오래된 파일 또는 객체를 복사합니다. 하지만 --delete
옵션을 제공하여 원본에 없는 파일이나 객체를 대상에서 제거할 수도 있습니다.
구문
$
aws s3 sync <source> <target> [--options]
이 명령과 함께 사용할 몇 가지 일반적인 옵션 및 예제는 s3 명령에 자주 사용되는 옵션 섹션을 참조하세요. 전체 옵션 목록은 AWS CLI 명령 참조에서 s3 sync
다음 예제에서는 amzn-s3-demo-bucket이라는 버킷의 경로라는 Amazon S3 접두사의 내용을 현재 작업 디렉터리와 동기화합니다.
s3 sync
는 대상에 있는 동일한 이름의 파일과 크기 또는 수정 시간이 다른 모든 파일을 업데이트합니다. 출력에는 동기화 중에 수행된 특정 작업이 표시됩니다. 이 작업은 하위 디렉터리 MySubdirectory
와 해당 내용을 s3://amzn-s3-demo-bucket/path/MySubdirectory
와 반복적으로 동기화합니다.
$
aws s3 sync . s3://mamzn-s3-demo-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt
다음 예제에서는 이전 예제를 확장하여 --delete
옵션을 사용하는 방법을 보여줍니다.
// Delete local file
$
rm ./MyFile1.txt
// Attempt sync without --delete option - nothing happens
$
aws s3 sync . s3://amzn-s3-demo-bucket/path
// Sync with deletion - object is deleted from bucket
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --delete
delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket
$
aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA
--delete
옵션을 사용할 때 --exclude
및 --include
옵션은 s3
sync
작업 중에 삭제할 파일 또는 객체를 필터링할 수 있습니다. 이 경우 파라미터 문자열은 대상 디렉터리 또는 버킷의 맥락에서 삭제에서 제외하거나 삭제를 위해 포함할 파일을 지정해야 합니다. 다음은 그 한 예입니다.
Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt '''
// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt '''
// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MyFile2.rtf
s3 명령에 자주 사용되는 옵션
다음 옵션은 이 주제에서 설명하는 명령에 자주 사용됩니다. 명령에 사용할 수 있는 옵션의 전체 목록은 AWS CLI 버전 2 참조 가이드
- acl
-
s3 sync
및s3 cp
는--acl
옵션을 사용할 수 있습니다. 이렇게 하면 Amazon S3에 복사된 파일에 대한 액세스 권한을 설정할 수 있습니다.--acl
옵션에는private
,public-read
및public-read-write
값을 적용할 수 있습니다. 자세한 내용은 Amazon S3 사용 설명서의 사전 준비를 ACL 참조하세요.$
aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
- exclude
-
s3 cp
,s3 mv
,s3 sync
또는s3 rm
명령을 사용하는 경우--exclude
또는--include
옵션을 사용하여 결과를 필터링할 수 있습니다.--exclude
옵션은 명령에서 객체만 제외하도록 규칙을 설정하고 옵션은 지정된 순서대로 적용됩니다. 방법은 다음 예제와 같습니다.Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt
// Exclude all .txt files, resulting in only MyFile2.rtf being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt"
// Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt"
// Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
- 포함
-
s3 cp
,s3 mv
,s3 sync
또는s3 rm
명령을 사용하는 경우--exclude
또는--include
옵션을 사용하여 결과를 필터링할 수 있습니다.--include
옵션은 명령에 지정된 객체만 포함하도록 규칙을 설정하며 옵션은 지정된 순서대로 적용됩니다. 방법은 다음 예제와 같습니다.Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt
// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt"
// Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt"
// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
- 권한 부여
-
s3 cp
,s3 mv
및s3 sync
명령에는 지정된 사용자 또는 그룹에게 객체에 대한 권한을 부여하기 위해 사용할 수 있는--grants
옵션이 포함됩니다. 다음 구문을 사용하여--grants
옵션을 권한 목록으로 설정합니다.Permission
,Grantee_Type
및Grantee_ID
를 사용자의 값으로 바꿉니다.구문
--grants
Permission
=Grantee_Type
=Grantee_ID
[Permission
=Grantee_Type
=Grantee_ID
...]각 값에는 다음 요소가 포함됩니다.
-
Permission
- 부여된 권한을 지정합니다.read
,readacl
,writeacl
또는full
로 설정할 수 있습니다. -
Grantee_Type
- 수혜자를 식별하는 방법을 지정합니다.uri
,emailaddress
또는id
로 설정할 수 있습니다. -
Grantee_ID
- 다음을 기반으로 권한 부여자를 지정합니다.Grantee_Type
.-
uri
- 그룹의 입니다URI. 자세한 내용은 피부여자란?을 참조하세요. -
emailaddress
- 계정의 이메일 주소입니다. -
id
- 계정의 정식 ID입니다.
-
Amazon S3 액세스 제어에 대한 자세한 내용은 액세스 제어를 참조하세요.
다음 예제에서는 버킷에 객체를 복사합니다. 여기서는 모든 사람에게 객체에 대한
read
권한을 부여하고full
과 연결된 계정에read
권한(readacl
,writeacl
및user@example.com
)을 부여합니다.$
aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants
read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com
Amazon S3에 업로드하는 객체에 대해 기본값이 아닌 스토리지 클래스(
REDUCED_REDUNDANCY
또는STANDARD_IA
)를 지정할 수도 있습니다. 이렇게 하려면--storage-class
옵션을 사용합니다.$
aws s3 cp file.txt s3://amzn-s3-demo-bucket/
--storage-class REDUCED_REDUNDANCY
-
- recursive
-
이 옵션을 사용하면 지정된 디렉터리 또는 접두사 아래의 모든 파일 또는 객체에 대해 명령이 수행됩니다. 다음 예제에서는
s3://amzn-s3-demo-bucket/path
및 모든 내용을 삭제합니다.$
aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
리소스
AWS CLI 참조:
서비스 참조:
-
Amazon S3 사용 설명서의 Amazon S3 버킷 작업 Amazon S3
-
Amazon S3 사용 설명서의 Amazon S3 객체 작업 Amazon S3
-
Amazon S3 사용 설명서의 접두사와 구분자를 사용하여 계층적으로 키 나열
-
Amazon S3 사용 설명서의 AWS SDK for .NET (하위 수준)를 사용하여 S3 버킷에 대한 멀티파트 업로드를 중단합니다. Amazon S3