

# AWS CLI를 사용하여 Amazon S3 시작하기
AWS CLI에서 Amazon S3 사용

AWS Command Line Interface(AWS CLI)를 사용하여 버킷과 객체를 활용해 Amazon S3를 시작할 수 있습니다. 버킷은 객체에 대한 컨테이너입니다. 객체는 파일과 해당 파일을 설명하는 모든 메타데이터입니다.

Amazon S3에 객체를 저장하려면 버킷을 생성한 다음 버킷에 객체를 업로드합니다. 객체가 버킷에 있으면 객체를 열고 다운로드하고 이동할 수 있습니다. 객체나 버킷이 더 이상 필요하지 않은 경우 리소스를 정리할 수 있습니다.

Amazon S3에서는 사용한 만큼만 비용을 청구하며, Amazon S3 기능 및 요금에 대한 자세한 내용은 [Amazon S3](https://aws.amazon.com/s3/)를 참조하십시오. 신규 Amazon S3 고객인 경우 Amazon S3를 무료로 시작할 수 있습니다. 자세한 내용은 ‭[AWS 프리 티어‭](https://aws.amazon.com/free/)를 참조하십시오.

**참고**  
Amazon S3 Express One Zone 스토리지 클래스를 디렉터리 버킷과 함께 사용하는 방법에 대한 자세한 내용은 [튜토리얼: S3 Express One Zone 시작하기](s3-express-getting-started.md) 및 [디렉터리 버킷 작업](directory-buckets-overview.md) 섹션을 참조하세요.

## 설정


Amazon S3에서 AWS CLI를 사용하기 전에 다음 사항을 충족해야 합니다.
+ AWS 계정에 가입합니다. 지침은 [Amazon S3 설정](GetStartedWithS3.md#setting-up-s3) 섹션을 참조하세요.
+ `s3:*` 권한이 있는 사용자를 생성합니다. 지침은 [Amazon S3 설정](GetStartedWithS3.md#setting-up-s3) 섹션을 참조하세요.
+ AWS CLI를 설치하고 구성했습니다. 지침을 보려면 **AWS Command Line Interface 사용 설명서의 [AWS CLI의 최신 버전 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

AWS CLI가 제대로 구성되어 있는지 확인하려면 다음 명령을 실행합니다.

```
aws sts get-caller-identity
```

자세한 내용은 *AWS CLI Command Reference*의 [get-caller-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)를 참조하세요.

이 명령은 AWS CLI가 올바르게 설치 및 구성된 경우 사용 가능한 Amazon S3 명령 목록을 표시합니다.

## 1단계: 첫 번째 Amazon S3 버킷 생성


AWS CLI에 가입했다면 Amazon S3에 버킷을 만들 준비가 된 것입니다. Amazon S3의 모든 객체는 버킷에 저장됩니다. 데이터를 Amazon S3에 저장하기 전에 버킷을 만들어야 합니다.

**참고**  
버킷을 만드는 데는 요금이 청구되지 않습니다. 객체를 버킷에 저장하거나 객체를 버킷과 주고받은 경우에만 요금이 청구됩니다. 이 설명서의 예제를 수행하는 동안 1 USD 미만의 최소 요금이 발생합니다. 스토리지 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하십시오.

**버킷을 생성하려면**

1. `s3api create-bucket` 명령을 사용하여 버킷을 만듭니다. `amzn-s3-demo-bucket`을 고유한 버킷 이름으로 바꾸고 `us-east-1`을 원하는 리전으로 바꿉니다.

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1
   ```

   us-east-1 이외의 리전의 경우 위치 제약 조건을 지정해야 합니다.

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-west-2 --create-bucket-configuration LocationConstraint=us-west-2
   ```
**참고**  
버킷을 만든 후에는 리전을 변경할 수 없습니다.
지연 시간과 요금을 최소화하고 규제 요건을 충족하려면 가장 가까운 리전을 선택하십시오. 특정 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않습니다. Amazon S3 AWS 리전 목록은 *Amazon Web Services 일반 참조*의 [AWS 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)를 참조하세요.
버킷 이름은 다음과 같아야 합니다.  
파티션 내에서 고유해야 합니다. 파티션은 리전의 그룹입니다. AWS에는 `aws`(상용 리전), `aws-cn`(중국 리전) 및 `aws-us-gov`(AWS GovCloud (US) 리전), 이렇게 세 가지 파티션이 있습니다.
3\$163자 이내여야 합니다.
소문자, 숫자, 마침표(.) 및 하이픈(-)만 포함해야 합니다. 최상의 호환성을 위해 정적 웹 사이트 호스팅에만 사용되는 버킷을 제외하고 버킷 이름에 마침표(.)를 사용하지 않는 것이 좋습니다.
문자나 숫자로 시작하고 끝나야 합니다.
버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다.
버킷 이름에 민감한 정보가 포함되어서는 안 됩니다. 버킷 이름은 버킷의 객체를 가리키는 URL에 표시됩니다.

1. 모든 버킷을 나열하여 버킷이 생성되었는지 확인합니다.

   ```
   aws s3 ls
   ```

1. [객체 소유권](about-object-ownership.md)에서 ACL을 비활성화하거나 활성화하고 버킷에 업로드된 객체의 소유권을 제어할 수 있습니다.

   **ACL 비활성화됨**

   **버킷 소유자 적용**(기본값) 설정 - ACL이 비활성화되고 버킷 소유자가 범용 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다.

   ```
   aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
   ```
**참고**  
기본적으로 ACL은 비활성화되어 있습니다. Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없습니다. 각 객체에 대해 액세스를 개별적으로 제어해야 하는 상황을 제외하고는 ACL을 비활성화한 채로 두는 것이 좋습니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](about-object-ownership.md) 섹션을 참조하세요.

   **ACL 활성화됨**
   + **버킷 소유자 기본 설정** – `bucket-owner-full-control` 미리 준비된 ACL을 사용하여 다른 계정이 버킷에 작성하는 새 객체를 버킷 소유자가 소유하고 완전히 제어합니다.

     ```
     aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
     ```

     **버킷 소유자 기본 설정**을 적용하는 경우 모든 Amazon S3 업로드에 `bucket-owner-full-control` 미리 준비된 ACL을 포함하도록 요구하려면 이 ACL을 사용하는 객체 업로드만 허용하는 [Amazon S3 `PUT` 작업에 bucket-owner-full-control 미리 제공된 ACL 요구(버킷 소유자 기본)](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)를 수행할 수 있습니다.
   + **객체 라이터** 설정 – 객체를 업로드하는 AWS 계정이 객체를 소유하고 완전히 제어하며 ACL을 통해 다른 사용자에게 이에 대한 액세스 권한을 부여할 수 있습니다.

     ```
     aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=ObjectWriter}]"
     ```
**참고**  
기본 설정은 **버킷 소유자 적용**입니다. 기본 설정을 적용하고 ACL을 비활성화된 상태로 유지하려면 `s3:CreateBucket` 권한만 있으면 됩니다. ACL을 활성화하려면 `s3:PutBucketOwnershipControls` 권한이 있어야 합니다.

   버킷의 현재 객체 소유권 설정을 확인하는 방법:

   ```
   aws s3api get-bucket-ownership-controls --bucket amzn-s3-demo-bucket
   ```

1. **퍼블릭 액세스 차단**이 활성화되어 있는지 확인하는 방법(새 버킷에 대해 기본적으로 활성화되어 있음):

   ```
   aws s3api get-public-access-block --bucket amzn-s3-demo-bucket
   ```

   기본적으로, 신규 버킷에는 네 개의 **퍼블릭 액세스 차단** 설정이 모두 활성화되어 있습니다. 특정 사용 사례에 대해 하나 이상의 설정을 해제해야 하는 경우가 아니라면 모든 설정을 활성화된 상태로 유지하는 것이 좋습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 [Amazon S3 스토리지에 대한 퍼블릭 액세스 차단](access-control-block-public-access.md) 섹션을 참조하십시오.

   **퍼블릭 액세스 차단**을 활성화해야 하는 경우 다음 명령을 사용합니다.

   ```
   aws s3api put-public-access-block --bucket amzn-s3-demo-bucket --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
   ```
**참고**  
모든 퍼블릭 액세스 차단 설정을 활성화하려면 `s3:CreateBucket` 권한만 있으면 됩니다. 퍼블릭 액세스 차단 설정을 해제하려면 `s3:PutBucketPublicAccessBlock` 권한이 있어야 합니다.

1. 버킷의 버전 관리를 활성화하는 방법:

   ```
   aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket --versioning-configuration Status=Enabled
   ```

   기본적으로, 버킷 버전 관리는 비활성화되어 있습니다. 버전 관리는 동일 버킷 내에 여러 개의 객체 변형을 보유하는 것을 의미합니다. 버전 관리를 사용하여 버킷에 저장된 모든 버전의 객체를 모두 보존, 검색 및 복원할 수 있습니다. 또한, 의도치 않은 사용자 작업 및 애플리케이션 장애가 발생해도 쉽게 복구할 수 있습니다. 버전 관리에 대한 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하십시오.

1. Amazon S3 Object Lock을 사용하면 새 객체가 삭제되거나 덮어쓰이지 않도록 보호할 수 있습니다. 자세한 내용은 [Object Lock으로 객체 잠금](object-lock.md) 섹션을 참조하세요. [Object Lock으로 객체 잠금](object-lock.md)을 활성화하는 방법(버킷 버전 관리 필요):

   새 버킷의 경우:

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1 --object-lock-enabled-for-bucket
   ```

   기존 버킷의 경우:

   ```
   aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket --object-lock-configuration '{"ObjectLockEnabled": "Enabled"}'
   ```

   Object Lock 활성화와 함께 기본값인 [Object Lock으로 객체 잠금](object-lock.md)을 설정하려면 다음을 사용할 수 있습니다.

   ```
   aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket --object-lock-configuration '{"ObjectLockEnabled":"Enabled","Rule":{"DefaultRetention":{"Mode":"COMPLIANCE","Days":30}}}'
   ```

   덜 제한적인 모드의 경우 `"COMPLIANCE"`를 `"GOVERNANCE"`로 바꾸고 필요에 따라 일수를 조정할 수 있습니다.
**참고**  
Object Lock을 사용하는 버킷을 만들려면 `s3:CreateBucket`, `s3:PutBucketVersioning` 및 `s3:PutBucketObjectLockConfiguration` 권한이 있어야 합니다.

1. 버킷에 태그를 추가할 수 있습니다. AWS 비용 할당을 하면서 버킷 태그를 지정해 버킷 사용에 대한 요금 청구 주석을 달 수 있습니다. 태그는 버킷에 할당된 라벨을 나타내는 한 쌍의 키-값입니다. 자세한 내용은 [비용 할당 S3 버킷 태그 사용](CostAllocTagging.md) 섹션을 참조하세요.

   버킷에 태그를 추가하는 방법:

   ```
   aws s3api put-bucket-tagging --bucket amzn-s3-demo-bucket --tagging 'TagSet=[{Key=Purpose,Value=Testing},{Key=Environment,Value=Development}]'
   ```

1. 버킷과 새 객체는 Amazon S3 관리형 키(`SSE-S3`)를 암호화 구성의 기본 수준으로 사용하는 서버 측 암호화로 암호화됩니다. 버킷의 기본 암호화를 확인하려면 다음 명령을 사용합니다.

   ```
   aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket
   ```

   또한 AWS KMS 키(`SSE-KMS`)를 사용한 서버 측 암호화와 버킷의 AWS KMS 키(`DSSE-KMS`)를 사용한 이중 계층 서버 측 암호화를 구성할 수 있습니다. AWS 관리형 키(`aws/s3`)와 고객 관리형 키를 모두 `SSE-KMS` 및 `DSSE-KMS` 암호화 구성의 AWS KMS 키로 사용할 수 있습니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service* 개발자 안내서의 [ 고객 키 및 AWS 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)를 참조하십시오. AWS KMS 키 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)를 참조하세요.
**중요**  
AWS KMS 키는 Amazon S3 버킷과 동일한 AWS 리전에 있어야 합니다. 교차 리전 KMS 키는 Amazon S3 버킷 암호화에 지원되지 않습니다.

   SSE-KMS를 통해 기본 암호화를 사용하도록 버킷을 구성할 때 Amazon S3 버킷 키를 사용할 수도 있습니다. Amazon S3 버킷 키를 사용하면 Amazon S3에서 AWS KMS로의 요청 트래픽이 줄어 암호화 비용이 절감됩니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요. Amazon S3 버킷 키는 DSSE-KMS에서 지원되지 않습니다. AWS CLI에서는 새 버킷을 생성할 때 Amazon S3 버킷 키가 기본적으로 활성화되지 않습니다. 기본적으로 활성화되어 있는 콘솔과는 다릅니다.

   `SSE-KMS`를 구성하고 Amazon S3 버킷 키를 활성화하는 방법:

   ```
   aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration "{\"Rules\":[{\"ApplyServerSideEncryptionByDefault\":{\"SSEAlgorithm\":\"aws:kms\",\"KMSMasterKeyID\":\"YOUR-KMS-KEY-ARN\"},\"BucketKeyEnabled\":true}]}"
   ```

   버킷에 Amazon S3 버킷 키가 활성화되어 있는지 확인하는 방법:

   ```
   aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket
   ```

   출력에는 `true` 또는 `false`로 설정된 `BucketKeyEnabled` 필드가 포함됩니다.

   `DSSE-KMS`를 구성하려면 다음 명령을 사용합니다.

   ```
   aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms:dsse","KMSMasterKeyID":"YOUR-KMS-KEY-ARN"}}]}'
   ```

   기본 암호화에 대한 자세한 내용은 [Amazon S3 버킷에 대한 기본 서버 측 암호화 동작 설정](bucket-encryption.md) 섹션을 참조하십시오. SSE-S3에 대한 자세한 내용은 [Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 사용](UsingServerSideEncryption.md) 섹션을 참조하세요.
**중요**  
기본 암호화 구성으로 SSE-KMS 또는 DSSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 할당량이 적용됩니다. AWS KMS로 전송되는 요청 수를 줄이는 Amazon S3 버킷 키를 활성화하여 KMS API 직접 호출을 줄일 수 있습니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하십시오.

Amazon S3에 버킷을 만들었습니다. 다음 단계는 버킷에 객체를 업로드하는 것입니다.

## 2단계: 버킷에 객체 업로드


Amazon S3에 버킷을 생성했으면 버킷에 객체를 업로드할 준비가 된 것입니다. 텍스트 파일, 사진, 동영상 및 기타 모든 종류의 파일이 객체가 될 수 있습니다.

**버킷에 객체를 업로드하려면**

1. 업로드할 간단한 텍스트 파일을 생성합니다. 텍스트 편집기를 사용하거나 다음 명령을 실행할 수 있습니다.

   ```
   echo 'Hello, Amazon S3!' > example.txt
   ```

1. s3 cp 명령을 사용하여 파일을 버킷에 업로드합니다.

   ```
   aws s3 cp example.txt s3://amzn-s3-demo-bucket/
   ```

   업로드에 성공한 경우 다음과 유사한 출력 화면이 표시됩니다.

   ```
   upload: ./example.txt to s3://amzn-s3-demo-bucket/example.txt
   ```

1. 버킷의 콘텐츠를 나열하여 객체가 업로드되었는지 확인합니다.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

객체를 버킷에 성공적으로 업로드했습니다. 다음 단계는 객체를 다운로드하는 것입니다.

## 3단계: 객체 다운로드


버킷에 객체를 업로드한 후에는 객체에 대한 정보를 보고, 로컬 컴퓨터로 객체를 다운로드할 수 있습니다.

**Amazon S3 버킷에서 객체를 다운로드하는 방법**

1. 객체에 대한 정보를 가져오는 방법:

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key example.txt
   ```

   이 명령은 콘텐츠 유형, 콘텐츠 길이, 마지막으로 수정된 날짜 등 객체에 대한 메타데이터를 반환합니다.

1. 로컬 컴퓨터에 객체를 다운로드합니다.

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/example.txt downloaded-example.txt
   ```

   다운로드에 성공한 경우 다음과 유사한 출력 화면이 표시됩니다.

   ```
   download: s3://amzn-s3-demo-bucket/example.txt to ./downloaded-example.txt
   ```

1. 다운로드한 파일의 콘텐츠를 확인합니다.

   ```
   cat downloaded-example.txt
   ```

**참고**  
콘솔과 달리 AWS CLI는 와일드카드 또는 `--recursive` 플래그를 사용하여 한 번에 여러 객체를 다운로드할 수 있습니다.
AWS CLI를 사용하여 객체를 다운로드할 때 객체 키 이름 끝에 있는 마침표(.)가 보존됩니다(콘솔에서는 제거됨). 이는 객체 키가 마침표로 끝나는 경우에 중요합니다.

여러 객체를 다운로드하는 예:

특정 파일 확장자가 있는 Amazon S3 버킷에서 여러 객체를 다운로드하려면 예시와 같이 `exclude` 및 `include` 필터와 함께 재귀 복사 명령을 사용합니다.

```
aws s3 cp s3://amzn-s3-demo-bucket/ . --recursive --exclude "*" --include "*.txt"
```

객체를 성공적으로 다운로드했습니다. 다음 단계는 폴더에 객체를 복사하는 것입니다.

## 4단계: 폴더에 객체 복사


이미 버킷에 객체를 추가한 후 객체를 다운로드했습니다. 이제 폴더를 만들고 객체를 폴더에 복사합니다.

**객체를 폴더에 복사하려면**

1. Amazon S3에서 폴더는 객체 키 이름의 접두사로 표시됩니다. 접두사가 있는 객체를 복사하여 '폴더'를 생성합니다.

   ```
   aws s3 cp s3://amzn-s3-demo-source-bucket/example.txt s3://amzn-s3-demo-destination-bucket/favorite-files/example.txt
   ```

   복사에 성공한 경우 다음과 유사한 출력 화면이 표시됩니다.

   ```
   copy: s3://amzn-s3-demo-source-bucket/example.txt to s3://amzn-s3-demo-destination-bucket/favorite-files/example.txt
   ```

1. 폴더의 콘텐츠를 나열하여 객체가 복사되었는지 확인합니다.

   ```
   aws s3 ls s3://amzn-s3-demo-destination-bucket/favorite-files/
   ```

객체를 폴더에 성공적으로 복사했습니다. 다음 단계는 객체 및 버킷을 삭제하는 것입니다.

## 5단계: 객체 및 버킷 삭제


객체 또는 버킷이 더 이상 필요하지 않은 경우 추가 요금이 부과되지 않도록 객체 또는 버킷을 삭제하는 것이 좋습니다. 실습용으로 이 시작 연습을 완료한 후 버킷 또는 객체를 사용할 계획이 없는 경우 요금이 더 이상 발생하지 않도록 버킷 및 객체를 삭제하는 것이 좋습니다.

버킷을 삭제하기 전에 버킷을 비우거나 버킷의 객체를 삭제합니다. 객체 및 버킷을 삭제한 후에는 더 이상 사용할 수 없습니다.

동일한 버킷 이름을 계속 사용하려면 객체를 삭제하거나 버킷을 비우고 버킷을 삭제하지 않는 것이 좋습니다. 버킷을 삭제하면 이름을 다시 사용할 수 있게 됩니다. 그러나 다른 AWS 계정에서 동일한 이름의 버킷을 생성한 후 다시 사용할 수 있습니다.

### 객체 삭제


버킷에서 모든 객체를 비우지 않고 삭제할 객체를 선택하려는 경우 객체를 삭제할 수 있습니다.

특정 객체 삭제:

```
aws s3 rm s3://amzn-s3-demo-bucket/example.txt
```

삭제에 성공한 경우 다음과 유사한 출력 화면이 표시됩니다.

```
delete: s3://amzn-s3-demo-bucket/example.txt
```

### 버킷 비우기


버킷을 삭제하려면 먼저 버킷을 비워야 합니다. 버킷을 비우면 버킷의 모든 객체, 버전, 삭제 마커가 삭제됩니다.

**버킷을 비우려면**
**중요**  
버킷을 비우는 작업은 실행 취소할 수 없습니다. 버킷 비우기 작업이 진행되는 동안 버킷에 추가된 객체는 삭제됩니다.

1. **옵션 1:** 상대적으로 작은 버킷의 경우 `--recursive` 플래그와 함께 `rm` 명령을 사용하여 버킷의 모든 객체를 삭제합니다.

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive
   ```

   이 명령은 폴더의 객체를 포함하여 버킷의 모든 객체를 삭제합니다.
**참고**  
버킷에 많은 객체 또는 큰 객체가 포함된 경우 이 명령이 시간 초과될 수 있습니다. 데이터가 많은 버킷의 경우 Amazon S3 수명 주기 규칙을 사용하여 버킷의 객체를 만료시킵니다.

   **옵션 2:** Amazon S3 수명 주기 규칙 사용(대규모 버킷에 권장)

   객체가 많거나 큰 객체가 있는 버킷의 경우 Amazon S3 수명 주기 규칙을 사용하여 모든 객체를 자동으로 만료시키고 삭제합니다. 수명 주기 규칙이 처리될 때까지 기다립니다(최대 24시간이 걸릴 수 있음). 버킷을 비우기 위해 수명 주기 규칙을 사용하는 방법에 대한 자세한 내용은 [수명 주기 구성 규칙을 사용하여 Amazon S3 버킷을 비우려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)를 참조하세요.

1. 버킷이 비어 있는지 확인:

   ```
   aws s3 ls s3://amzn-s3-demo-bucket
   ```

1. 버킷에 버전 관리가 활성화되어 있는 경우 다음 명령을 사용하여 버전이 지정된 객체를 삭제하고 마커를 삭제합니다.

   버전이 지정된 객체 제거:

   ```
   aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete "$(aws s3api list-object-versions --bucket amzn-s3-demo-bucket --output json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"
   ```

   삭제 마커 제거:

   ```
   aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete "$(aws s3api list-object-versions --bucket amzn-s3-demo-bucket --output json --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')"
   ```

1. 버킷에 객체 버전과 삭제 마커가 전혀 없는지 확인:

   ```
   aws s3api list-object-versions --bucket amzn-s3-demo-bucket
   ```

   출력에 버전이나 삭제 마커가 전혀 남아 있지 않아야 합니다.

### 버킷 삭제


버킷을 비우거나 버킷에서 모든 객체를 삭제한 후 버킷을 삭제할 수 있습니다.

**중요**  
버킷 삭제는 실행 취소할 수 없습니다. 버킷 이름은 고유합니다. 버킷을 삭제하면 다른 AWS 사용자가 해당 이름을 사용할 수 있습니다. 같은 버킷 이름을 계속 사용하려면 버킷을 삭제하지 마십시오. 대신 버킷을 비우고 보관하십시오.

**버킷을 삭제하는 방법**

1. 버킷 삭제:

   ```
   aws s3api delete-bucket --bucket amzn-s3-demo-bucket
   ```

1. 모든 버킷을 나열하여 버킷이 삭제되었는지 확인합니다.

   ```
   aws s3 ls
   ```

## 다음 단계


이전 예시에서는 AWS CLI를 사용하여 몇 가지 기본 Amazon S3 작업을 수행하는 방법을 알아보았습니다.

다음 주제에서는 사용자가 직접 애플리케이션에서 구현할 수 있도록 Amazon S3을 보다 심도 있게 이해할 수 있는 학습 경로를 설명합니다.
+ [일반적인 사용 사례 이해자습서로 배우기](GetStartedWithS3.md#s3-use-cases)
+ [버킷 및 객체에 대한 액세스 제어](GetStartedWithS3.md#control-access-resources)
+ [스토리지 보호 및 모니터링](GetStartedWithS3.md#manage-monitor-storage)
+ [Amazon S3를 사용한 개발](GetStartedWithS3.md#develop-with-s3)
+ [일반적인 사용 사례 이해자습서로 배우기](GetStartedWithS3.md#s3-getting-started-tutorials-list)
+ [교육 및 지원 살펴보기](GetStartedWithS3.md#explore-training-and-support)

다음 목록은 Amazon S3의 일반적인 AWS CLI 명령을 보여줍니다.
+ [cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) - 로컬 파일 시스템과 Amazon S3 사이 또는 Amazon S3 위치 간에 파일 또는 객체를 복사합니다.
+ [ls](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) - 지정된 버킷 및 접두사 아래에 Amazon S3 객체 및 공통 접두사를 나열합니다.
+ [mb](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html) - Amazon S3 버킷을 생성합니다.
+ [mv](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html) - 로컬 파일 시스템과 Amazon S3 사이 또는 Amazon S3 위치 간에 파일 또는 객체를 이동합니다.
+ [presign](https://docs.aws.amazon.com/cli/latest/reference/s3/presign.html) - AWS Amazon S3 객체에 대해 자격 증명 없이 임시 액세스를 허용하는 미리 서명된 URL을 생성합니다.
+ [rb](https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html) - 빈 Amazon S3 버킷을 제거합니다. `--force` 플래그를 사용하여 하나의 명령으로 콘텐츠가 포함된 버킷을 자동으로 비우고 삭제할 수 있습니다. 이 작업은 실행 취소할 수 없습니다.
+ [rm](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) - Amazon S3에서 객체를 삭제합니다.
+ [sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) - 소스 디렉터리에서 대상으로 새 파일과 업데이트된 파일을 재귀적으로 복사하여 디렉터리와 Amazon S3 접두사를 동기화합니다.
+ [website](https://docs.aws.amazon.com/cli/latest/reference/s3/website.html) - 버킷을 정적 웹 사이트로 구성합니다.

Amazon S3의 AWS CLI 명령에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ [s3](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html) - 일반적인 작업을 간소화하는 상위 수준의 Amazon S3 명령입니다.
+ [s3api](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) - 모든 Amazon S3 API 작업에 직접 액세스합니다.
+ [s3control](https://docs.aws.amazon.com/cli/latest/reference/s3control/index.html) - 모든 Amazon S3 Control API 작업에 직접 액세스합니다.