

# Object Lock으로 객체 잠금
<a name="object-lock"></a>

S3 객체 잠금을 사용하면 고정된 시간 동안 또는 무기한으로 Amazon S3 객체의 삭제 또는 덮어쓰기를 방지하는 데 도움이 됩니다. 객체 잠금은 **WORM(Write Once Read Many) 모델을 사용하여 객체를 저장합니다. 객체 잠금을 사용하면 WORM 스토리지가 필요한 규제 요구 사항을 충족하거나 객체 변경 또는 삭제에 대한 보호 계층을 추가하는 데 도움이 됩니다.

**참고**  
S3 객체 잠금은 SEC 17a-4, CFTC 및 FINRA 규정의 적용을 받는 환경에서 Cohasset Associates가 평가했습니다. 객체 잠금과 이러한 규정의 관계에 대한 자세한 내용은 [Cohasset Associates Compliance Assessment](https://d1.awsstatic.com/r2018/b/S3-Object-Lock/Amazon-S3-Compliance-Assessment.pdf)를 참조하세요.

객체 잠금은 *보관 기간* 및 *법적 보존* 등 객체 보관을 관리하는 2가지 방법을 제공합니다. 객체 버전에는 보존 기간과 법적 보존 또는 둘 다를 지정할 수 있습니다.
+ **보존 기간** - 보존 기간은 객체 버전이 잠겨 있는 기간을 지정합니다. 개별 객체에 대해 고유한 보존 기간을 설정할 수 있습니다. 또한 S3 버킷에 기본 보존 기간을 설정할 수 있습니다. 버킷 정책의 `s3:object-lock-remaining-retention-days` 조건 키를 사용하여 최소 및 최대 허용 보존 기간을 제한할 수도 있습니다. 이 조건 키는 허용되는 보존 기간을 설정하는 데 도움이 됩니다. 자세한 정보는 [Setting limits on retention periods with a bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-retention-limits)를 참조하세요.
+ **법적 보존** - 법적 보존은 보존 기간과 동일한 보호를 제공하지만 만료 날짜는 없습니다. 대신, 명시적으로 제거할 때까지 법적 보존이 유지됩니다. 법적 보존은 보존 기간과 별개이며 개별 객체 버전에 적용됩니다.

객체 잠금은 S3 버전 관리가 활성화된 버킷에서만 작동합니다. 객체 버전을 잠그면 Amazon S3는 해당 객체 버전의 메타데이터에 잠금 정보를 저장합니다. 객체에 보존 기간 또는 법적 보존을 설정하면 요청에 지정된 버전만 보호됩니다. 보존 기간과 법적 보존은 객체의 새로운 버전을 생성하거나 객체에 추가할 마커를 삭제하는 것을 차단하지 않습니다. S3 버전 관리에 대한 자세한 내용은 [S3 버전 관리로 여러 버전의 객체 유지](Versioning.md) 섹션을 참조하세요.

객체 키 이름이 동일한 기존의 보호된 객체가 있는 버킷에 객체를 넣으면 Amazon S3는 해당 객체의 새 버전을 생성합니다. 기존의 보호된 버전의 객체는 보관 구성에 따라 잠긴 상태로 유지됩니다.

## S3 객체 잠금 작동 방식
<a name="object-lock-overview"></a>

**Topics**
+ [보관 기간](#object-lock-retention-periods)
+ [보존 모드](#object-lock-retention-modes)
+ [법적 보존](#object-lock-legal-holds)
+ [S3 Object Lock을 사용하여 삭제하는 방법](#object-lock-how-deletes-work)
+ [S3 객체 잠금 사용의 모범 사례](#object-lock-best-practices)
+ [필수 권한](#object-lock-permissions)

### 보관 기간
<a name="object-lock-retention-periods"></a>

*보관 기간*은 정해진 시간 동안 객체 버전을 보호합니다. 객체 버전에 보관 기간을 설정하면 Amazon S3는 객체 버전의 메타데이터에 타임스탬프를 저장하여 보관 기간이 만료되는 시점을 표시합니다. 보존 기간이 만료된 후 객체 버전을 덮어쓰거나 삭제할 수 있습니다.

개별 객체 버전 또는 버킷의 속성에 명시적으로 보존 기간을 지정하여 버킷의 모든 객체에 자동으로 적용되도록 할 수 있습니다. 객체 버전에 명시적으로 보관 기간을 적용할 경우 객체 버전에 대해 *보관 종료일*을 지정합니다. Amazon S3는 객체 버전의 메타데이터에 이 날짜를 저장합니다.

또한 버킷 속성에 보존 기간을 설정할 수 있습니다. 버킷에 보존 기간을 설정할 때 버킷에 있는 모든 객체 버전을 보호해야 하는 기간을 일 또는 연 단위로 지정합니다. 객체를 버킷에 배치할 때 Amazon S3는 객체 버전의 생성 타임스탬프에 지정된 기간을 추가하여 객체 버전에 대한 *보존 만료 날짜*를 계산합니다. 그러면 객체 버전에 해당 보존 기간으로 개별 잠금을 명시적으로 설정한 것처럼 객체 버전이 보호됩니다.

**참고**  
버킷에 명시적인 개별 보존 모드 및 기간이 있는 객체 버전에 `PUT` 작업을 수행하는 경우 객체 버전의 개별 객체 잠금 설정이 모든 버킷 속성 보존 설정보다 우선합니다.

다른 모든 객체 잠금 설정과 마찬가지로 보관 기간은 개별 객체 버전에 적용됩니다. 단일 객체의 서로 다른 버전은 보관 모드 및 기간이 각기 다를 수 있습니다.

예를 들어 보관 기간이 15\$130일인 객체가 있고 보관 기간이 60일인 동일한 이름의 객체를 Amazon S3에 `PUT`한다고 가정합니다. 이 경우 `PUT` 요청이 성공하면 Amazon S3에서는 보존 기간이 60일인 새 버전의 객체를 생성합니다. 이전 버전은 원래 보관 기간을 유지하고 15일 후에 삭제할 수 있게 됩니다.

객체 버전에 보존 설정을 적용한 후에 보존 기간을 연장할 수 있습니다. 이렇게 하려면 객체 버전에 대해 현재 구성된 객체 잠금 요청보다 이후에 해당되는 *보존 만료 날짜*를 지정하여 객체 버전에 대한 새 잠금 요청을 제출하세요. Amazon S3는 기존 보관 기간을 보다 연장된 새 기간으로 대체합니다. 객체 보존 기간을 설정할 권한이 있는 사용자는 객체 버전의 보존 기간을 연장할 수 있습니다. 보존 기간을 설정하려면 `s3:PutObjectRetention` 권한이 있어야 합니다.

객체 또는 S3 버킷에 보존 기간을 설정할 때는 *규정 준수* 또는 *거버넌스*라는 보존 모드 중 하나를 선택해야 합니다.

### 보존 모드
<a name="object-lock-retention-modes"></a>

S3 객체 잠금은 객체에 각기 다른 보호 수준을 적용하는 두 가지 보존 모드를 제공합니다.
+ 규정 준수 모드
+ 거버넌스 모드

*규정 준수* 모드에서 보호된 객체 버전은 AWS 계정의 루트 사용자를 포함한 어떤 사용자도 덮어쓰거나 삭제할 수 없습니다. 규정 준수 모드에서 객체를 잠그면 보관 모드를 변경할 수 없으며 보관 기간을 줄일 수 없습니다. 규정 준수 모드는 보관 기간 동안 객체 버전을 덮어쓰거나 삭제할 수 없도록 하는 데 도움이 됩니다.

**참고**  
보존 날짜가 만료되기 전에 규정 준수 모드에서 객체를 삭제하는 유일한 방법은 연결된 AWS 계정을 삭제하는 것입니다.

*거버넌스* 모드에서 특별한 권한이 없는 한 사용자는 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다. 거버넌스 모드를 사용하면 대부분의 사용자가 객체를 삭제하지 못하도록 보호하지만, 필요에 따라 일부 사용자에게 보존 설정을 변경하거나 객체를 삭제할 수 있는 권한을 부여할 수 있습니다. 규정 준수 모드 보관 기간을 생성하기 전에 거버넌스 모드를 사용하여 보관 기간 설정을 테스트할 수도 있습니다.

거버넌스 모드 보존 설정을 재정의하거나 제거하려면 `s3:BypassGovernanceRetention` 권한을 갖고 있어야 하며 거버넌스 모드 재정의를 요구하는 요청과 함께 요청 헤더로 `x-amz-bypass-governance-retention:true`를 명시적으로 포함해야 합니다.

**참고**  
기본적으로 Amazon S3 콘솔에는 `x-amz-bypass-governance-retention:true` 헤더가 포함됩니다. *거버넌스* 모드로 보호되는 객체를 삭제하려는 경우 `s3:BypassGovernanceRetention` 권한이 있으면 작업이 성공합니다.

### 법적 보존
<a name="object-lock-legal-holds"></a>

객체 잠금을 사용하면 객체 버전에 *법적 보존*을 적용할 수도 있습니다. 보관 기간과 마찬가지로 법적 보존을 사용하면 객체 버전을 덮어쓰거나 삭제할 수 없습니다. 그러나 법적 보존에는 고정된 기간이 없으며, 제거될 때까지 유효합니다. 법적 보존은 `s3:PutObjectLegalHold` 권한을 가진 사용자가 자유롭게 배치하고 제거할 수 있습니다.

법적 보존은 보관 기간과 독립적입니다. 객체 버전에 법적 보존을 설정해도 해당 객체 버전의 보관 모드 또는 보관 기간에는 영향을 주지 않습니다.

예를 들어, 객체 버전을 보존 기간으로도 보호하면서 객체 버전에 법적 보존을 적용한다고 가정해 봅시다. 보관 기간이 만료되면 객체의 WORM 보호가 손실되지 않습니다. 법적 보존은 권한 있는 사용자가 명시적으로 법적 보존을 제거할 때까지 객체를 계속 보호합니다. 마찬가지로 객체 버전의 보관 기간이 유효한 상태에서 법적 보존을 제거하면 보관 기간이 만료될 때까지 객체 버전이 보호됩니다.

### S3 Object Lock을 사용하여 삭제하는 방법
<a name="object-lock-how-deletes-work"></a>

버킷에 S3 Object Lock이 활성화되어 있고 객체가 보존 기간 또는 법적 보존으로 보호되고 객체를 삭제하려고 하면 Amazon S3는 객체 삭제 시도 방법에 따라 다음 응답 중 하나를 반환합니다.
+ **영구 `DELETE` 요청** - 영구 `DELETE` 요청(버전 ID를 지정하는 요청)을 실행한 경우 객체를 삭제하려고 하면 Amazon S3에서 액세스 거부됨(`403 Forbidden`) 오류를 반환합니다. Object Lock으로 액세스 거부 오류 문제를 해결하는 방법에 대한 자세한 내용은 [S3 객체 잠금 설정](troubleshoot-403-errors.md#troubleshoot-403-object-lock) 섹션을 참조하세요.
+ **단순 `DELETE` 요청** - 단순 `DELETE` 요청(버전 ID를 지정하지 않는 요청)을 실행한 경우 Amazon S3는 `200 OK` 응답을 반환하고 버킷에 [삭제 마커](DeleteMarker.md)를 삽입하며, 해당 마커는 새 ID가 있는 객체의 현재 버전이 됩니다. Object Lock으로 삭제 마커를 관리하는 방법에 대한 자세한 내용은 [객체 잠금으로 삭제 마커 관리](object-lock-managing.md#object-lock-managing-delete-markers) 섹션을 참조하세요.

### S3 객체 잠금 사용의 모범 사례
<a name="object-lock-best-practices"></a>

미리 정의된 보존 기간 동안 대부분의 사용자가 객체를 삭제하지 못하도록 보호하는 동시에 특별한 권한이 있는 일부 사용자가 보존 설정을 변경하거나 객체를 삭제할 수 있도록 유연성을 부여하려면 **거버넌스 모드를 사용하는 것이 좋습니다.

미리 정의된 보존 기간 동안 AWS 계정의 루트 사용자를 비롯한 어떤 사용자도 객체를 삭제할 수 없게 하려면 **규정 준수 모드를 사용하는 것이 좋습니다. 규정 준수 데이터를 저장해야 하는 경우 이 모드를 사용할 수 있습니다.

객체를 변경 불가능한 상태로 유지하려는 기간이 확실하지 않은 경우 **법적 보존을 사용할 수 있습니다. 데이터에 외부 감사가 예정되어 있고 감사가 완료될 때까지 객체를 변경할 수 없는 상태로 유지하고 싶기 때문일 수 있습니다. 또는 프로젝트가 완료될 때까지 변경 불가능으로 유지하려는 데이터 세트를 활용하는 진행 중인 프로젝트가 있을 수도 있습니다.

### 필수 권한
<a name="object-lock-permissions"></a>

객체 잠금 작업에는 특정 권한이 필요합니다. 시도하려는 정확한 작업에 따라 다음 권한 중 하나가 필요할 수 있습니다.
+ `s3:BypassGovernanceRetention`
+ `s3:GetBucketObjectLockConfiguration`
+ `s3:GetObjectLegalHold`
+ `s3:GetObjectRetention`
+ `s3:PutBucketObjectLockConfiguration`
+ `s3:PutObjectLegalHold`
+ `s3:PutObjectRetention`

설명이 포함된 Amazon S3 권한의 전체 목록은 **서비스 승인 참조에서 [Amazon S3에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)를 참조하세요.

S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 [Amazon S3 API 작업에 필요한 권한](using-with-s3-policy-actions.md) 섹션을 참조하세요.

권한과 함께 조건을 사용하는 방법에 대한 자세한 내용은 [조건 키를 사용한 버킷 정책 예시](amazon-s3-policy-keys.md) 섹션을 참조하세요.

# 객체 잠금 고려 사항
<a name="object-lock-managing"></a>

Amazon S3 객체 잠금을 사용하면 고정된 시간 동안 또는 무기한으로 객체의 삭제 또는 덮어쓰기를 방지하는 데 도움이 됩니다.

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 객체 잠금 정보를 보거나 설정할 수 있습니다. S3 객체 잠금 기능에 대한 일반적인 내용은 [Object Lock으로 객체 잠금](object-lock.md) 섹션을 참조하세요.

**중요**  
버킷에 객체 잠금이 활성화하고 나면 해당 버킷에서 객체 잠금을 비활성화하거나 버전 관리를 일시 중지할 수 없습니다.
객체 잠금이 설정된 S3 버킷은 서버 액세스 로그의 대상 버킷으로 사용할 수 없습니다. 자세한 내용은 [서버 액세스 로깅을 사용한 요청 로깅](ServerLogs.md) 섹션을 참조하세요.

**Topics**
+ [잠금 정보를 볼 수 있는 권한](#object-lock-managing-view)
+ [거버넌스 모드 무시](#object-lock-managing-bypass)
+ [S3 복제에 객체 잠금 사용](#object-lock-managing-replication)
+ [암호화에 Object Lock 사용](#object-lock-managing-encryption)
+ [Amazon S3 인벤토리에서 객체 잠금 사용](#object-lock-inv-report)
+ [객체 잠금을 통한 S3 수명 주기 정책 관리](#object-lock-managing-lifecycle)
+ [객체 잠금으로 삭제 마커 관리](#object-lock-managing-delete-markers)
+ [객체 잠금과 함께 S3 Storage Lens 사용](#object-lock-storage-lens)
+ [객체 잠금이 활성화된 버킷에 객체 업로드](#object-lock-put-object)
+ [이벤트 및 알림 구성](#object-lock-managing-events)
+ [버킷 정책을 사용하여 보존 기간에 제한 설정](#object-lock-managing-retention-limits)

## 잠금 정보를 볼 수 있는 권한
<a name="object-lock-managing-view"></a>

[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) 또는 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 작업을 사용하여 프로그래밍 방식으로 Amazon S3 객체 버전의 객체 잠금 상태를 볼 수 있습니다. 두 작업 모두 지정된 객체 버전에 대한 보존 모드, 보존 만료 날짜 및 법적 보존 상태를 반환합니다. 또한 S3 Inventory를 사용하여 S3 버킷의 여러 객체에 대한 객체 잠금 상태를 볼 수 있습니다.

객체 버전의 보관 모드 및 보관 기간을 보려면 `s3:GetObjectRetention` 권한이 있어야 합니다. 객체 버전의 법적 보존 상태를 보려면 `s3:GetObjectLegalHold` 권한이 있어야 합니다. 버킷의 기본 보존 구성을 보려면 `s3:GetBucketObjectLockConfiguration` 권한이 있어야 합니다. S3 객체 잠금이 활성화되지 않은 버킷에 대해 객체 잠금 구성을 요청하면 Amazon S3가 오류를 반환합니다.

## 거버넌스 모드 무시
<a name="object-lock-managing-bypass"></a>

`s3:BypassGovernanceRetention` 권한이 있는 경우, 거버넌스 모드에서 잠긴 객체 버전이 마치 보호되지 않은 것처럼 작업을 수행할 수 있습니다. 이러한 작업에는 객체 버전 삭제, 보존 기간 단축 또는 빈 파라미터와 함께 새로운 `PutObjectRetention` 요청을 배치하여 객체 잠금 보존 기간을 제거하는 작업이 포함됩니다.

거버넌스 모드를 무시하려면 요청에 이 모드를 무시할 것인지 명시해야 합니다. 이를 위해 `PutObjectRetention` API 요청에 `x-amz-bypass-governance-retention:true` 헤더를 포함하거나 AWS CLI 또는 AWS SDK를 통해 만든 요청과 동등한 파라미터를 사용합니다. `s3:BypassGovernanceRetention` 권한이 있는 경우, S3 콘솔은 콘솔을 통해 만든 요청에 이 헤더를 자동으로 적용합니다.

**참고**  
거버넌스 모드 무시는 객체 버전의 법적 보존 상태에 영향을 주지 않습니다. 객체 버전에 법적 보존이 활성화된 경우, 법적 보존은 유지되고, 객체 버전을 덮어쓰거나 삭제하는 요청을 차단합니다.

## S3 복제에 객체 잠금 사용
<a name="object-lock-managing-replication"></a>

S3 복제에 객체 잠금을 사용하여 잠긴 객체와 보존 메타데이터를 서로 다른 S3 버킷에 비동기식으로 자동 복사할 수 있습니다. 즉, 복제된 객체의 경우 Amazon S3는 소스 버킷의 객체 잠금 구성을 사용합니다. 다시 말해, 소스 버킷에 객체 잠금이 활성화되어 있는 경우, 대상 버킷에도 객체 잠금이 활성화되어 있어야 합니다. 객체가 대상 버킷(S3 복제 외부)에 직접 업로드되는 경우 대상 버킷에 설정된 객체 잠금을 사용합니다. 복제를 사용하면 *소스 버킷*의 객체가 하나 이상의 *대상 버킷*으로 복제됩니다.

객체 잠금이 활성화된 버킷에서 복제를 설정하려면 S3 콘솔, AWS CLI, Amazon S3 REST API 또는 AWS SDK를 사용할 수 있습니다.

**참고**  
복제에 객체 잠금을 사용하려면 복제 설정에 사용하는 AWS Identity and Access Management(IAM) 역할에서 소스 S3 버킷에 두 가지 권한을 추가로 부여해야 합니다. 두 가지 추가 권한은 `s3:GetObjectRetention`과 `s3:GetObjectLegalHold`입니다. 역할에 `s3:Get*` 권한 문이 있으면 해당 문이 요구 사항을 충족합니다. 자세한 내용은 [라이브 복제에 대한 권한 설정](setting-repl-config-perm-overview.md) 섹션을 참조하세요.  
S3 복제에 대한 일반적인 정보는 [리전 내 및 리전 간 객체 복제](replication.md) 섹션을 참조하세요.  
S3 복제 설정의 예는 [라이브 복제 구성 예제](replication-example-walkthroughs.md) 섹션을 참조하세요.

## 암호화에 Object Lock 사용
<a name="object-lock-managing-encryption"></a>

Amazon S3는 기본적으로 모든 새 객체를 암호화합니다. 암호화된 객체에 Object Lock을 사용할 수 있습니다. 자세한 내용은 [암호화로 데이터 보호](UsingEncryption.md) 섹션을 참조하세요.

Object Lock을 사용하면 Amazon S3 객체의 삭제 또는 덮어쓰기를 방지하는 데 도움이 되지만, 삭제 중인 암호화 키 또는 암호화 키에 대한 액세스 권한 손실을 보호하지 못합니다. 예를 들어, AWS KMS 서버 측 암호화로 객체를 암호화하고 AWS KMS 키를 삭제하면 객체를 읽을 수 없게 될 수 있습니다.

## Amazon S3 인벤토리에서 객체 잠금 사용
<a name="object-lock-inv-report"></a>

정해진 일정으로 S3 버킷의 객체 목록을 생성하도록 Amazon S3 인벤토리를 구성할 수 있습니다. 객체에 대한 다음 객체 잠금 메타데이터를 포함하도록 Amazon S3 인벤토리를 구성할 수 있습니다.
+ 보존 만료 날짜
+ 보존 모드
+ 법적 보존 상태

자세한 내용은 [S3 Inventory를 사용한 데이터 카탈로그화 및 분석](storage-inventory.md) 섹션을 참조하세요.

## 객체 잠금을 통한 S3 수명 주기 정책 관리
<a name="object-lock-managing-lifecycle"></a>

객체 수명 주기 관리 구성은 삭제 마커 배치를 포함하여 보호된 객체에서 계속 정상적으로 작동합니다. 하지만 객체의 잠긴 버전은 S3 수명 주기 만료 정책에 따라 삭제할 수 없습니다. 객체 잠금은 객체가 상주하는 스토리지 클래스와 관계없이 그리고 스토리지 클래스 간 S3 수명 주기 전환 전반에 걸쳐 유지됩니다.

객체 수명 주기 관리에 대한 자세한 내용은 [객체 수명 주기 관리](object-lifecycle-mgmt.md) 섹션을 참조하세요.

## 객체 잠금으로 삭제 마커 관리
<a name="object-lock-managing-delete-markers"></a>

보호된 객체 버전은 삭제할 수 없지만 해당 객체에 대한 삭제 마커를 생성할 수 있습니다. 객체에 삭제 마커를 배치해도 객체 또는 해당 객체 버전은 삭제되지 않습니다. 그러나 대부분의 경우 객체가 삭제된 것처럼 Amazon S3가 동작을 수행하게 됩니다. 자세한 내용은 [삭제 마커를 통한 작업](DeleteMarker.md) 섹션을 참조하세요.

**참고**  
기본 객체에 설정된 보관 기간이나 법적 보존과 상관없이 삭제 마커는 WORM으로 보호되지 않습니다.

## 객체 잠금과 함께 S3 Storage Lens 사용
<a name="object-lock-storage-lens"></a>

객체 잠금 지원 스토리지 바이트 및 객체 수에 대한 지표를 보려면 Amazon S3 스토리지 렌즈를 사용하면 됩니다. S3 스토리지 렌즈는 조직 전반에서 객체 스토리지 사용 및 활동에 대한 가시성을 확보하는 데 사용할 수 있는 클라우드 스토리지 분석 기능입니다.

자세한 내용은 [S3 Storage Lens를 사용하여 데이터 보호](storage-lens-data-protection.md) 섹션을 참조하세요.

전체 지표 목록은 [Amazon S3 스토리지 렌즈 지표 용어집](storage_lens_metrics_glossary.md) 섹션을 참조하세요.

## 객체 잠금이 활성화된 버킷에 객체 업로드
<a name="object-lock-put-object"></a>

`Content-MD5` 또는 `x-amz-sdk-checksum-algorithm` 헤더는 Object Lock을 사용하여 보존 기간이 구성된 객체를 업로드하는 모든 요청에 필요합니다. 이러한 헤더는 업로드 중에 객체의 무결성을 확인하는 방법입니다.

Amazon S3 콘솔로 객체를 업로드할 때 S3는 자동으로 `Content-MD5` 헤더를 추가합니다. 선택적으로 콘솔을 통해 `x-amz-sdk-checksum-algorithm` 헤더로 추가 체크섬 함수 및 체크섬 값을 지정할 수 있습니다. [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) API를 사용하는 경우 `Content-MD5` 헤더, `x-amz-sdk-checksum-algorithm` 헤더 또는 둘 다 지정하여 Object Lock 보존 기간을 구성해야 합니다.

자세한 내용은 [Amazon S3에서 객체 무결성 확인](checking-object-integrity.md) 섹션을 참조하세요.

## 이벤트 및 알림 구성
<a name="object-lock-managing-events"></a>

Amazon S3 이벤트 알림을 사용하면 AWS CloudTrail을 사용하여 객체 잠금 구성 및 데이터에 대한 액세스 및 변경 사항을 추적할 수 있습니다. CloudTrail에 대한 자세한 내용은 **AWS CloudTrail 사용 설명서의 [AWS CloudTrail이란 무엇입니까?](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하세요.

Amazon CloudWatch를 사용하여 이 데이터를 기반으로 알림을 생성할 수도 있습니다. CloudWatch에 대한 자세한 내용은 **Amazon CloudWatch 사용 설명서의 [Amazon CloudWatch란 무엇인가요?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)를 참조하세요.

## 버킷 정책을 사용하여 보존 기간에 제한 설정
<a name="object-lock-managing-retention-limits"></a>

버킷 정책을 사용하여 버킷의 최소 및 최대 허용 보존 기간을 설정할 수 있습니다. 최대 보존 기간은 100년입니다.

다음 예에서는 `s3:object-lock-remaining-retention-days` 조건 키를 사용하여 최대 보관 기간을 10일로 설정하는 버킷 정책을 보여 줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "SetRetentionLimits",
    "Statement": [
        {
            "Sid": "SetRetentionPeriod",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:PutObjectRetention"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "NumericGreaterThan": {
                    "s3:object-lock-remaining-retention-days": "10"
                }
            }
        }
    ]
}
```

------

**참고**  
버킷이 복제 구성의 대상 버킷인 경우 복제를 사용하여 생성된 객체 복제본에 대해 최소 및 최대 허용 보존 기간을 설정할 수 있습니다. 이렇게 하려면 버킷 정책에서 `s3:ReplicateObject` 작업을 허용해야 합니다. 복제 권한에 대한 자세한 내용은 [라이브 복제에 대한 권한 설정](setting-repl-config-perm-overview.md) 섹션을 참조하세요.

버킷 정책에 대한 자세한 내용은 다음 주제를 참조하세요.
+ **서비스 승인 참조의 [Amazon S3에 사용되는 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)

  S3 리소스 유형별 S3 API 작업 권한에 대한 자세한 내용은 [Amazon S3 API 작업에 필요한 권한](using-with-s3-policy-actions.md) 섹션을 참조하세요.
+ [객체 작업](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects)
+ [조건 키를 사용한 버킷 정책 예시](amazon-s3-policy-keys.md)

# S3 객체 잠금 구성
<a name="object-lock-configure"></a>

Amazon S3 Object Lock을 사용하면 *Write Once Read Many*(WORM) 모델을 사용하여 객체를 Amazon S3 범용 버킷에 저장할 수 있습니다. S3 객체 잠금을 사용하면 일정한 시간 동안 또는 무기한으로 객체를 삭제하거나 덮어쓰지 않도록 할 수 있습니다. 객체 잠금 기능에 대한 일반적인 내용은 [Object Lock으로 객체 잠금](object-lock.md) 섹션을 참조하세요.

객체를 잠그기 전에 범용 버킷에 S3 버전 관리와 Object Lock을 활성화해야 합니다. 그 후에 보존 기간, 법적 보존 또는 둘 다를 설정할 수 있습니다.

객체 잠금을 사용하려면 특정 권한이 있어야 합니다. 다양한 객체 잠금 작업과 관련된 권한 목록은 [필수 권한](object-lock.md#object-lock-permissions) 섹션을 참조하세요.

**중요**  
버킷에 객체 잠금이 활성화하고 나면 해당 버킷에서 객체 잠금을 비활성화하거나 버전 관리를 일시 중지할 수 없습니다.
객체 잠금이 설정된 S3 버킷은 서버 액세스 로그의 대상 버킷으로 사용할 수 없습니다. 자세한 내용은 [서버 액세스 로깅을 사용한 요청 로깅](ServerLogs.md) 섹션을 참조하세요.

**Topics**
+ [새로운 S3 범용 버킷을 생성할 때 Object Lock을 활성화합니다.](#object-lock-configure-new-bucket)
+ [기존 Amazon S3 버킷에 객체 잠금 활성화](#object-lock-configure-existing-bucket)
+ [S3 객체에 법적 보존 설정 또는 수정](#object-lock-configure-set-legal-hold)
+ [S3 객체의 보존 기간 설정 또는 수정](#object-lock-configure-set-retention-period-object)
+ [S3 버킷의 기본 보존 기간 설정 또는 수정](#object-lock-configure-set-retention-period-bucket)

## 새로운 S3 범용 버킷을 생성할 때 Object Lock을 활성화합니다.
<a name="object-lock-configure-new-bucket"></a>

새 S3 범용 버킷을 생성할 때 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 Object Lock을 활성화할 수 있습니다.

### S3 콘솔 사용
<a name="object-lock-new-bucket-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. **버킷 만들기**를 선택합니다.

   **버킷 만들기** 페이지가 열립니다.

1. [**Bucket Name**]에서 버킷 이름을 입력합니다.
**참고**  
버킷을 생성한 후에는 이름을 변경할 수 없습니다. 버킷 이름 지정에 대한 자세한 내용은 [범용 버킷 이름 지정 규칙](bucketnamingrules.md) 섹션을 참조하십시오.

1. **리전(Region)**에서 버킷이 속할 AWS 리전을 선택합니다.

1. **객체 소유권**에서 액세스 제어 목록(ACL)을 비활성화 또는 활성화하고 버킷에 업로드된 객체의 소유권을 제어합니다.

1. **퍼블릭 액세스 차단을 위한 버킷 설정**에서 버킷에 적용할 퍼블릭 액세스 차단 설정을 선택합니다.

1. **버킷 버전 관리**에서 **활성화됨**을 선택합니다.

   객체 잠금은 버전이 지정된 버킷에서만 작동합니다.

1. (선택 사항) **Tags**(태그)에서 버킷에 태그를 추가할 수 있습니다. 태그는 스토리지를 분류하고 비용을 할당하는 데 사용되는 키-값 쌍입니다.

1. **고급 설정**에서 **객체 잠금**을 찾아 **활성화**를 선택합니다.

   객체 잠금을 활성화하면 이 버킷의 객체가 영구적으로 잠기도록 허용한다는 점을 숙지해야 합니다.

1. **버킷 생성**을 선택합니다.

### AWS CLI 사용
<a name="object-lock-new-bucket-cli"></a>

다음 `create-bucket` 예시에서는 객체 잠금이 활성화되었으며 이름이 `amzn-s3-demo-bucket1`인 새 S3 버킷을 생성합니다.

```
aws s3api create-bucket --bucket amzn-s3-demo-bucket1 --object-lock-enabled-for-bucket
```

자세한 내용과 예제는 **AWS CLI 명령 참조에서 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)를 참조하십시오.

**참고**  
AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 **AWS CloudShell 사용 설명서에서 [What is CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

### REST API 사용
<a name="object-lock-new-bucket-rest"></a>

REST API를 사용하여 객체 잠금이 활성화된 새 S3 버킷을 생성할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)를 참조하세요.

### AWS SDK 사용
<a name="object-lock-new-bucket-sdk"></a>

AWS SDK를 사용하여 새 S3 버킷을 만들 때 Object Lock을 활성화하는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_LCreateBucket_section.html)를 참조하세요.

AWS SDK를 사용하여 현재 Object Lock 구성을 가져오는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObjectLockConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 다양한 Object Lock 기능을 보여주는 대화형 시나리오는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ObjectLock_section.html)를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 **Amazon S3 API 참조의 [AWS SDK를 사용하여 Amazon S3에서 개발](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)을 참조하세요.

## 기존 Amazon S3 버킷에 객체 잠금 활성화
<a name="object-lock-configure-existing-bucket"></a>

Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하여 기존 S3 버킷에 객체 잠금을 활성화할 수 있습니다.

### S3 콘솔 사용
<a name="object-lock-existing-bucket-console"></a>

**참고**  
객체 잠금은 버전이 지정된 버킷에서만 작동합니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷** 목록에서 객체 잠금을 활성화할 버킷의 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **속성**에서 **객체 잠금** 섹션까지 아래로 스크롤한 다음 **편집**을 선택합니다.

1. **객체 잠금**에서 **활성화**를 선택합니다.

   객체 잠금을 활성화하면 이 버킷의 객체가 영구적으로 잠기도록 허용한다는 점을 숙지해야 합니다.

1. **변경 사항 저장**을 선택합니다.



### AWS CLI 사용
<a name="object-lock-existing-bucket-cli"></a>

다음 `put-object-lock-configuration` 예시 명령은 이름이 `amzn-s3-demo-bucket1`인 버킷에 50일의 객체 잠금 보존 기간을 설정합니다.

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

자세한 내용과 예제는 **AWS CLI 명령 참조에서 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-lock-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-lock-configuration.html)를 참조하십시오.

**참고**  
AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 **AWS CloudShell 사용 설명서에서 [What is CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

### REST API 사용
<a name="object-lock-existing-bucket-rest"></a>

Amazon S3 REST API를 사용하여 기존 S3 버킷에 객체 잠금을 활성화할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html)를 참조하세요.

### AWS SDK 사용
<a name="object-lock-existing-bucket-sdk"></a>

AWS SDK를 사용하여 기존 S3 버킷에 대해 Object Lock을 활성화하는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObjectLockConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 현재 Object Lock 구성을 가져오는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObjectLockConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 다양한 Object Lock 기능을 보여주는 대화형 시나리오는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ObjectLock_section.html)를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 **Amazon S3 API 참조의 [AWS SDK를 사용하여 Amazon S3에서 개발](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)을 참조하세요.

## S3 객체에 법적 보존 설정 또는 수정
<a name="object-lock-configure-set-legal-hold"></a>

Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하여 S3 객체에 법적 보존을 설정하거나 제거할 수 있습니다.

**중요**  
객체에 법적 보존을 설정하려는 경우 해당 객체의 버킷에 이미 객체 잠금이 활성화되어 있어야 합니다.
버킷에 명시적인 개별 보존 모드 및 기간이 있는 객체 버전에 `PUT` 작업을 수행하는 경우 객체 버전의 개별 객체 잠금 설정이 모든 버킷 속성 보존 설정보다 우선합니다.

자세한 내용은 [법적 보존](object-lock.md#object-lock-legal-holds) 섹션을 참조하세요.

### S3 콘솔 사용
<a name="object-lock-set-legal-hold-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷** 목록에서 법적 보존을 설정하거나 수정할 객체가 들어 있는 버킷 이름을 선택합니다.

1. **객체** 목록에서 법적 보존을 설정하거나 수정하려는 객체를 선택합니다.

1. **객체 속성** 페이지에서 **객체 잠금 법적 보존** 섹션을 찾아 **편집**을 선택합니다.

1. 법적 보존을 설정하려면 **활성화**를 선택하고 법적 보존을 제거하려면 **비활성화**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

### AWS CLI 사용
<a name="object-lock-set-legal-hold-cli"></a>

다음 `put-object-legal-hold` 예시에서는 이름이 `amzn-s3-demo-bucket1`인 버킷의 *`my-image.fs`* 객체에 법적 보존을 설정합니다.

```
aws s3api put-object-legal-hold --bucket amzn-s3-demo-bucket1 --key my-image.fs --legal-hold="Status=ON"
```

다음 `put-object-legal-hold` 예시에서는 이름이 `amzn-s3-demo-bucket1`인 버킷의 *`my-image.fs`* 객체에서 법적 보존을 제거합니다.

```
aws s3api put-object-legal-hold --bucket amzn-s3-demo-bucket1 --key my-image.fs --legal-hold="Status=OFF"
```

자세한 내용과 예제는 **AWS CLI 명령 참조에서 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-legal-hold.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-legal-hold.html)를 참조하십시오.

**참고**  
AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 **AWS CloudShell 사용 설명서에서 [What is CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

### REST API 사용
<a name="object-lock-set-legal-hold-rest"></a>

REST API를 사용하여 객체에 법적 보존을 설정하거나 수정할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLegalHold.html)를 참조하세요.

### AWS SDK 사용
<a name="object-lock-set-legal-hold-sdk"></a>

AWS SDK를 사용하여 객체에 법적 보존을 설정하는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObjectLegalHold_section.html)를 참조하세요.

AWS SDK를 사용하여 현재 법적 보존 상태를 가져오는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObjectLegalHoldConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 다양한 Object Lock 기능을 보여주는 대화형 시나리오는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ObjectLock_section.html)를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 **Amazon S3 API 참조의 [AWS SDK를 사용하여 Amazon S3에서 개발](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)을 참조하세요.

## S3 객체의 보존 기간 설정 또는 수정
<a name="object-lock-configure-set-retention-period-object"></a>

Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하여 S3 객체에 보존 기간을 설정하거나 수정할 수 있습니다.

**중요**  
객체에 보존 기간을 설정하려는 경우 해당 객체의 버킷에 이미 객체 잠금이 활성화되어 있어야 합니다.
버킷에 명시적인 개별 보존 모드 및 기간이 있는 객체 버전에 `PUT` 작업을 수행하는 경우 객체 버전의 개별 객체 잠금 설정이 모든 버킷 속성 보존 설정보다 우선합니다.
보존 날짜가 만료되기 전에 규정 준수 모드에서 객체를 삭제하는 유일한 방법은 연결된 AWS 계정을 삭제하는 것입니다.

자세한 내용은 [보관 기간](object-lock.md#object-lock-retention-periods) 섹션을 참조하세요.

### S3 콘솔 사용
<a name="object-lock-set-retention-period-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷** 목록에서 보존 기간을 설정하거나 수정할 객체가 들어 있는 버킷 이름을 선택합니다.

1. **객체** 목록에서 보존 기간을 설정하거나 수정하려는 객체를 선택합니다.

1. **객체 속성** 페이지에서 **객체 잠금 보존** 섹션을 찾아 **편집**을 선택합니다.

1. **보존**에서 보존 기간을 설정하려면 **활성화**를 선택하고 보존 기간을 제거하려면 **비활성화**를 선택합니다.

1. **활성화**를 선택한 경우 **보존 모드**에서 **거버넌스 모드**와 **규정 준수 모드** 중 하나를 선택합니다. 자세한 내용은 [보존 모드](object-lock.md#object-lock-retention-modes) 섹션을 참조하세요.

1. **보존 만료 날짜**에서 보존 기간이 종료될 날짜를 선택합니다. 이 기간 동안 객체는 WORM으로 보호되며 덮어쓰거나 삭제할 수 없습니다. 자세한 내용은 [보관 기간](object-lock.md#object-lock-retention-periods) 섹션을 참조하세요.

1. [**변경 사항 저장(Save changes)**]을 선택합니다.

### AWS CLI 사용
<a name="object-lock-set-retention-period-cli"></a>

다음 `put-object-retention` 예시에서는 이름이 `amzn-s3-demo-bucket1`인 버킷의 *`my-image.fs`* 객체에 보존 기간을 2025년 1월 1일까지로 설정합니다.

```
aws s3api put-object-retention --bucket amzn-s3-demo-bucket1 --key my-image.fs --retention='{ "Mode": "GOVERNANCE", "RetainUntilDate": "2025-01-01T00:00:00" }'
```

자세한 내용과 예제는 **AWS CLI 명령 참조에서 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-retention.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-retention.html)를 참조하십시오.

**참고**  
AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 **AWS CloudShell 사용 설명서에서 [What is CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

### REST API 사용
<a name="object-lock-set-retention-period-rest"></a>

REST API를 사용하여 객체에 보존 기간을 설정할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectRetention.html)를 참조하세요.

### AWS SDK 사용
<a name="object-lock-set-retention-period-sdk"></a>

AWS SDK를 사용하여 객체에 보존 기간을 설정하는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObjectRetention_section.html)를 참조하세요.

AWS SDK를 사용하여 객체의 보존 기간을 가져오는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObjectLockConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 다양한 Object Lock 기능을 보여주는 대화형 시나리오는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_GetObjectLockConfiguration_section.html)를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 **Amazon S3 API 참조의 [AWS SDK를 사용하여 Amazon S3에서 개발](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)을 참조하세요.

## S3 버킷의 기본 보존 기간 설정 또는 수정
<a name="object-lock-configure-set-retention-period-bucket"></a>

Amazon S3 콘솔, AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하여 S3 버킷에 기본 보존 기간을 설정하거나 수정할 수 있습니다. 버킷에 있는 모든 객체 버전을 보호해야 하는 기간을 일 또는 연 단위로 지정합니다.

**중요**  
버킷에 기본 보존 기간을 설정하려는 경우 버킷에 이미 객체 잠금이 활성화되어 있어야 합니다.
버킷에 명시적인 개별 보존 모드 및 기간이 있는 객체 버전에 `PUT` 작업을 수행하는 경우 객체 버전의 개별 객체 잠금 설정이 모든 버킷 속성 보존 설정보다 우선합니다.
보존 날짜가 만료되기 전에 규정 준수 모드에서 객체를 삭제하는 유일한 방법은 연결된 AWS 계정을 삭제하는 것입니다.

자세한 내용은 [보관 기간](object-lock.md#object-lock-retention-periods) 섹션을 참조하세요.

### S3 콘솔 사용
<a name="object-lock-set-retention-period-bucket-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷** 목록에서 기본 보존 기간을 설정하거나 수정할 버킷 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **속성**에서 **객체 잠금** 섹션까지 아래로 스크롤한 다음 **편집**을 선택합니다.

1. **기본 보존**에서 기본 보존을 설정하려면 **활성화**를 선택하고 기본 보존을 제거하려면 **비활성화**를 선택합니다.

1. **활성화**를 선택한 경우 **보존 모드**에서 **거버넌스 모드**와 **규정 준수 모드** 중 하나를 선택합니다. 자세한 내용은 [보존 모드](object-lock.md#object-lock-retention-modes) 섹션을 참조하세요.

1. **기본 보존 기간**에서 보존 기간을 지속할 일수 또는 연수를 선택합니다. 이 버킷에 배치된 객체는 이 일수 또는 연수 동안 잠깁니다. 자세한 내용은 [보관 기간](object-lock.md#object-lock-retention-periods) 섹션을 참조하세요.

1. [**변경 사항 저장(Save changes)**]을 선택합니다.

### AWS CLI 사용
<a name="object-lock-configure-set-retention-period-bucket-cli"></a>

다음 `put-object-lock-configuration` 예시 명령은 규정 준수 모드를 사용하여 이름이 `amzn-s3-demo-bucket1`인 버킷에 50일의 객체 잠금 보존 기간을 설정합니다.

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

다음 `put-object-lock-configuration` 예시에서는 버킷의 기본 보존 구성을 제거합니다.

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

자세한 내용과 예제는 **AWS CLI 명령 참조에서 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-lock-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object-lock-configuration.html)를 참조하십시오.

**참고**  
AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 **AWS CloudShell 사용 설명서에서 [What is CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)을 참조하세요.

### REST API 사용
<a name="object-lock-configure-set-retention-period-bucket-rest"></a>

REST API를 사용하여 기존 S3 버킷에 기본 보존 기간을 설정할 수 있습니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*에서 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html)를 참조하세요.

### AWS SDK 사용
<a name="object-lock-configure-set-retention-period-bucket-sdk"></a>

AWS SDK를 사용하여 기존 S3 버킷에 기본 보존 기간을 설정하는 방법에 대한 예제는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObjectLockConfiguration_section.html)를 참조하세요.

AWS SDK를 사용하여 다양한 Object Lock 기능을 보여주는 대화형 시나리오는 **Amazon S3 API 참조의 [코드 예제](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ObjectLock_section.html)를 참조하세요.

다양한 AWS SDK 사용에 대한 일반적인 정보는 *Amazon S3 API 참조*의 [Developing with Amazon S3 using the AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html)를 참조하세요.