How to Manage Lifecycle Policies for Archival Storage

Updated on 01 April, 2026

Manage lifecycle policies for Vultr archival storage to control object transitions and optimize storage costs.


A lifecycle policy defines which objects in a bucket transition to the VULTR_ARCHIVE storage class and when. Policies run at 00:00 UTC each day. Setting the transition delay to 0 days queues objects for transition in the next nightly run.

The Filter element in a lifecycle policy supports the following criteria:

  • Prefix: matches objects under a specified path
  • ObjectSizeGreaterThan: matches objects larger than the specified size in bytes
  • ObjectSizeLessThan: matches objects smaller than the specified size in bytes

Combine multiple criteria by wrapping them inside an And element.

Note
  • Lifecycle policies on Archive subscriptions (tier_id 6) are locked to the default and cannot be modified via the API, Console, or S3-compatible tools.
  • Bucket names must be between 3 and 53 characters to be eligible for Archival Storage. Applying a lifecycle policy to a bucket with a name longer than 53 characters returns an error.
  • Buckets with versioning enabled — or that previously had versioning enabled — are not eligible for Archival Storage.

Follow this guide to view, set, and suspend lifecycle policies on Standard Object Storage buckets with Archival Storage enabled.

XML policy examples

Move all objects to archive immediately:

xml
<LifecycleConfiguration>
    <Rule>
        <ID>MoveAllToArchive</ID>
        <Filter>
            <Prefix></Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>
            <Days>0</Days>
            <StorageClass>VULTR_ARCHIVE</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>

Move a subset of objects to archive after 4 days:

This example moves objects under the cold-data/ prefix that are larger than 1 GB. Adjust the Prefix, ObjectSizeGreaterThan, and Days values to match your requirements.

xml
<LifecycleConfiguration>
    <Rule>
        <ID>MoveSubsetToArchive</ID>
        <Filter>
            <And>
                <Prefix>cold-data/</Prefix>
                <ObjectSizeGreaterThan>1000000000</ObjectSizeGreaterThan>
            </And>
        </Filter>
        <Status>Enabled</Status>
        <Transition>
            <Days>4</Days>
            <StorageClass>VULTR_ARCHIVE</StorageClass>
        </Transition>
    </Rule>
</LifecycleConfiguration>

To pause archival without removing the policy, set the rule's Status to Suspended in the XML before reapplying.

  • Vultr Customer Portal
  • Vultr API
  • S3cmd
  • To retrieve the current lifecycle policy:

    1. Navigate to Products and click Cloud Storage.

    2. Select Object Storage and click the target Standard subscription.

    3. Click Buckets.

    4. Click the wrench icon next to the target bucket.

      The Archival Storage Policy editor displays the current policy XML.

  • To set or update the lifecycle policy:

    1. Navigate to Products and click Cloud Storage.
    2. Select Object Storage and click the target Standard subscription.
    3. Click Buckets.
    4. Click the wrench icon next to the target bucket.
    5. In the Archival Storage Policy editor, paste the updated policy XML.
    6. Click Save Changes.
  • To pause archival:

    1. Navigate to Products and click Cloud Storage.
    2. Select Object Storage and click the target Standard subscription.
    3. Click Buckets.
    4. Click the wrench icon next to the target bucket.
    5. In the Archival Storage Policy editor, update the <Status> element to Suspended.
    6. Click Save Changes.
Note
Replace {object-storage-id} with your subscription ID and {bucket-name} with the bucket name in all commands below.
  • To retrieve the current lifecycle policy:

    console
    $ curl "https://api.vultr.com/v2/object-storage/{object-storage-id}/bucket/{bucket-name}/lifecycle" \
        -X GET \
        -H "Authorization: Bearer ${VULTR_API_KEY}"
    

    Verify that the response contains a rule with StorageClass: VULTR_ARCHIVE. If no policy is set, the endpoint returns an error.

  • To set a lifecycle policy (move all objects):

    console
    $ curl "https://api.vultr.com/v2/object-storage/{object-storage-id}/bucket/{bucket-name}/lifecycle" \
        -X POST \
        -H "Authorization: Bearer ${VULTR_API_KEY}" \
        -H "Content-Type: application/json" \
        -d '{
            "archive_rules": [
                {
                    "ID": "MoveAllToArchive",
                    "Status": "Enabled",
                    "Filter": [],
                    "Transitions": [
                        {
                            "Days": 0,
                            "StorageClass": "VULTR_ARCHIVE"
                        }
                    ]
                }
            ]
        }'
    

    To move a subset of objects, use the XML policy examples above with s3cmd. See the S3cmd tab for instructions.

  • To pause archival, set the Status field to Suspended in the request body:

    console
    $ curl "https://api.vultr.com/v2/object-storage/{object-storage-id}/bucket/{bucket-name}/lifecycle" \
        -X POST \
        -H "Authorization: Bearer ${VULTR_API_KEY}" \
        -H "Content-Type: application/json" \
        -d '{
            "archive_rules": [
                {
                    "ID": "MoveAllToArchive",
                    "Status": "Suspended",
                    "Filter": [],
                    "Transitions": [
                        {
                            "Days": 0,
                            "StorageClass": "VULTR_ARCHIVE"
                        }
                    ]
                }
            ]
        }'
    
Note
Replace S3_CONFIG with the path to your s3cmd configuration file and BUCKET_NAME with the bucket name in all commands below.
  • To retrieve the current lifecycle policy:

    console
    $ s3cmd -c S3_CONFIG getlifecycle s3://BUCKET_NAME/
    
  • To set a lifecycle policy, save one of the XML policy examples above as lifecycle.xml, then apply it to the bucket:

    console
    $ s3cmd -c S3_CONFIG setlifecycle lifecycle.xml s3://BUCKET_NAME/
    
  • To pause archival, update lifecycle.xml to set <Status>Suspended</Status>, then reapply:

    console
    $ s3cmd -c S3_CONFIG setlifecycle lifecycle.xml s3://BUCKET_NAME/
    

Comments