# ObjectLockRetention

The default retention settings for an S3 Object Lock configuration.

- Source: [`aws-s3/lib/bucket.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-s3/lib/bucket.ts#L3908)
- Type last changed: v2.64.0 · 9 Feb 2023

## Example

```ts
// Configure for governance mode with a duration of 7 years
new s3.Bucket(this, 'Bucket1', {
  objectLockDefaultRetention: s3.ObjectLockRetention.governance(Duration.days(7 * 365)),
});

// Configure for compliance mode with a duration of 1 year
new s3.Bucket(this, 'Bucket2', {
  objectLockDefaultRetention: s3.ObjectLockRetention.compliance(Duration.days(365)),
});
```

## Properties

- `duration`: [Duration](/cdk/api/v2/docs/aws-cdk-lib.Duration.html) — The default period for which objects should be retained.

- `mode`: [ObjectLockMode](/cdk/api/v2/docs/aws-cdk-lib.aws_s3.ObjectLockMode.html) — The retention mode to use for the object lock configuration.

## Methods

- `compliance(duration: Duration): ObjectLockRetention // chainable` (static) — Configure for Compliance retention for a specified duration.

  When an object is locked in compliance mode, its retention mode can't be changed, and
  its retention period can't be shortened. Compliance mode helps ensure that an object
  version can't be overwritten or deleted for the duration of the retention period.

  **Parameters**

  - `duration` — the length of time for which objects should be retained.

  **Returns:** the ObjectLockRetention configuration

- `governance(duration: Duration): ObjectLockRetention // chainable` (static) — Configure for Governance retention for a specified duration.

  With governance mode, you protect objects against being deleted by most users, but you can
  still grant some users permission to alter the retention settings or delete the object if
  necessary. You can also use governance mode to test retention-period settings before
  creating a compliance-mode retention period.

  **Parameters**

  - `duration` — the length of time for which objects should retained.

  **Returns:** the ObjectLockRetention configuration
