> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gcore.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatic object removal via AWS CLI

Lifecycle policies in Gcore Object Storage automatically delete objects after a configured number of days, following the [AWS S3 lifecycle configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) standard.

## Lifecycle policy logic

Object removal runs around midnight UTC. Three conditions govern deletion timing:

1. **Lifecycle policy set before upload.** If the policy is set for 1 day and the object is uploaded on January 2, it is removed on January 4.

2. **Lifecycle policy set after upload.** If an object is uploaded on January 1 (at any time) and a 1-day expiration policy is then applied, the object is deleted on January 3.

3. **Lifecycle policy removed.** Deleting the lifecycle policy from the bucket stops automatic removal — objects already in the bucket are kept.

## Lifecycle configuration elements

AWS CLI uses a JSON configuration file. The file structure is:

```json theme={null}
{
  "Rules": [
    {
      "ID": "...",
      "Prefix": "",
      "Status": "Enabled",
      "Expiration": {
        "Days": ...
      }
    }
  ]
}
```

| Field             | Description                                                                                                      |
| ----------------- | ---------------------------------------------------------------------------------------------------------------- |
| `ID`              | Unique rule identifier — up to 255 characters, letters, digits, and underscores.                                 |
| `Prefix`          | Leave empty to apply the rule to the entire bucket; specify a folder name to scope the rule to that folder only. |
| `Status`          | `"Enabled"` activates the rule; `"Disabled"` suspends it without deleting it.                                    |
| `Expiration.Days` | Number of days after which objects are automatically deleted.                                                    |

## AWS CLI lifecycle management

AWS CLI provides three commands for managing lifecycle policies: `put-bucket-lifecycle` to apply a policy, `get-bucket-lifecycle-configuration` to verify it, and `delete-bucket-lifecycle` to remove it.

### Applying a lifecycle policy

<Steps>
  <Step title="Create the configuration file">
    Create a `lifecycle.json` file with the following content:

    ```json theme={null}
    {
      "Rules": [
        {
          "ID": "one_day",
          "Prefix": "",
          "Status": "Enabled",
          "Expiration": {
            "Days": 1
          }
        }
      ]
    }
    ```

    | Parameter           | Description                            |
    | ------------------- | -------------------------------------- |
    | `one_day`           | Rule ID.                               |
    | `""` (empty prefix) | The rule applies to the entire bucket. |
    | `"Enabled"`         | The rule is active.                    |
    | `1`                 | Objects are deleted after 1 day.       |

    <Note>
      To apply the rule to a specific folder, set `"Prefix"` to the folder name: `"Prefix": "deleteme/"`.
    </Note>
  </Step>

  <Step title="Apply the policy">
    Run the following command from the directory containing `lifecycle.json`, replacing the placeholder values:

    ```sh theme={null}
    aws s3api put-bucket-lifecycle --bucket my-bucket --lifecycle-configuration file://lifecycle.json --endpoint-url=https://<storage-hostname>
    ```

    | Parameter            | Description                                                                                                                                                                                                                           |
    | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `my-bucket`          | The name of the bucket.                                                                                                                                                                                                               |
    | `<storage-hostname>` | The storage endpoint hostname from the **Details** section in the [Gcore Customer Portal](https://portal.gcore.com) — all hostnames are listed in [S3 URLs](/storage/manage-object-storage/s3-service-urls-and-default-region-names). |
  </Step>

  <Step title="Verify the configuration">
    Run the following command to check the current lifecycle configuration:

    ```sh theme={null}
    aws s3api get-bucket-lifecycle-configuration --bucket my-bucket --endpoint-url=https://<storage-hostname>
    ```

    The response contains the applied policy as JSON.
  </Step>
</Steps>

### Deleting a lifecycle policy

Run the following command to remove the lifecycle policy from the bucket:

```sh theme={null}
aws s3api delete-bucket-lifecycle --bucket my-bucket --endpoint-url=https://<storage-hostname>
```

| Parameter            | Description                    |
| -------------------- | ------------------------------ |
| `my-bucket`          | The name of the bucket.        |
| `<storage-hostname>` | The storage endpoint hostname. |
