Skip to content

Glacier

Glacier is a data storage service provided by Amazon Web Services to suit the long-term storage of archives and backup of infrequently accessed data. It offers various retrieval options, different levels of retrieval speed, and more. Glacier uses a Vault container to store your data, similar to how S3 stores data in Buckets. A Vault further holds the data in an Archive, which can contain text, images, video, and audio files. Glacier uses Jobs to retrieve the data in an Archive or list the inventory of a Vault.

LocalStack allows you to use the Glacier APIs in your local environment to manage Vaults and Archives. You can use the Glacier API to configure and set up vaults where you can store archives and manage them. The supported APIs are available on our API Coverage section, which provides information on the extent of Glacier’s integration with LocalStack.

This guide is designed for users new to Glacier and assumes basic knowledge of the AWS CLI and our awslocal wrapper script.

Start your LocalStack container using your preferred method. We will demonstrate how to create a vault, upload an archive, initiate a job to get an inventory details or download an archive, and delete the archive and vault with the AWS CLI.

You can create a vault using the CreateVault API. Run the follow command to create a Glacier Vault named sample-vault.

Terminal window
awslocal glacier create-vault --vault-name sample-vault --account-id -

You can get the details from your vault using the DescribeVault API. Run the following command to describe your vault.

Terminal window
awslocal glacier describe-vault --vault-name sample-vault --account-id -
Output
{
"VaultARN": "arn:aws:glacier:us-east-1:000000000000:vaults/sample-vault",
"VaultName": "sample-vault",
"CreationDate": "2023-09-11T15:07:28.000Z",
"LastInventoryDate": "2023-09-11T15:07:28.000Z",
"NumberOfArchives": 0,
"SizeInBytes": 0
}

You can upload an archive or an individual file to a vault using the UploadArchive API. Download a random image from the internet and save it as image.jpg. Run the following command to upload the file to your Glacier vault:

Terminal window
awslocal glacier upload-archive --vault-name sample-vault --account-id - --body image.jpg
Output
{
"location": "/000000000000/vaults/sample-vault/archives/d41d8cd98f00b204e9800998ecf8427e",
"checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"archiveId": "d41d8cd98f00b204e9800998ecf8427e"
}

Initiate the retrieval of an archive from a vault

Section titled “Initiate the retrieval of an archive from a vault”

You can initiate the retrieval of an archive from a vault using the InitiateJob API.

To download an archive, you will need to initiate an archive-retrieval job first to make the Archive available for download.

Terminal window
awslocal glacier initiate-job \
--vault-name sample-vault \
--account-id - \
--job-parameters '{"Type":"archive-retrieval","ArchiveId":"d41d8cd98f00b204e9800998ecf8427e"}'
Output
{
"location": "//vaults/sample-vault/jobs/25CEOTJ7ZUR5Q7YY0B1O55AE4C3L1502EOHWMNY10IIYEBWEQB73D23S8BVYO9RTRTPLRK2LJLUCCRM52GDV87C9A4JW",
"jobId": "25CEOTJ7ZUR5Q7YY0B1O55AE4C3L1502EOHWMNY10IIYEBWEQB73D23S8BVYO9RTRTPLRK2LJLUCCRM52GDV87C9A4JW"
}

You can list the current and previous processes, called Jobs, to monitor the requests sent to the Glacier API using the ListJobs API.

Terminal window
awslocal glacier list-jobs --vault-name sample-vault --account-id -
Output
{
"JobList": [
{
"JobId": "25CEOTJ7ZUR5Q7YY0B1O55AE4C3L1502EOHWMNY10IIYEBWEQB73D23S8BVYO9RTRTPLRK2LJLUCCRM52GDV87C9A4JW",
"Action": "ArchiveRetrieval",
"ArchiveId": "d41d8cd98f00b204e9800998ecf8427e",
"VaultARN": "arn:aws:glacier:us-east-1:000000000000:vaults/sample-vault",
"CreationDate": "2023-09-11T15:25:54.000Z",
"Completed": true,
"StatusCode": "Succeeded",
"ArchiveSizeInBytes": 0,
"InventorySizeInBytes": 10000,
"CompletionDate": "2023-09-11T15:25:59.000Z",
"Tier": "Standard"
}
]
}

Download the result of an archive retrieval

Section titled “Download the result of an archive retrieval”

You can download the output of an ArchiveRetrieval job with the GetJobOutput API.

The data download process can be verified through the previous ListJobs call to check progress. Once the ArchiveRetrieval Job is complete, the data can be downloaded. You can use the JobId of the Job to download your archive with the following command:

Terminal window
awslocal glacier get-job-output \
--vault-name sample-vault \
--account-id - \
--job-id 25CEOTJ7ZUR5Q7YY0B1O55AE4C3L1502EOHWMNY10IIYEBWEQB73D23S8BVYO9RTRTPLRK2LJLUCCRM52GDV87C9A4JW \
my-archive.jpg

You can also initiate the retrieval of the inventory of a vault using the same InitiateJob API.

Initiate a job of the specified type to get the details of the individual inventory items inside a Vault using the initiate-job command:

Terminal window
awslocal glacier initiate-job \
--vault-name sample-vault \
--account-id - \
--job-parameters '{"Type":"inventory-retrieval","ArchiveId":"d41d8cd98f00b204e9800998ecf8427e"}'
Output
{
"location": "//vaults/sample-vault/jobs/P5972CSWFR803BHX48OD1A7JWNBFJUMYVWCMZWY55ZJPIJMG1XWFV9ISZPZH1X3LBF0UV3UG6ORETM0EHE5R86Z47B1F",
"jobId": "P5972CSWFR803BHX48OD1A7JWNBFJUMYVWCMZWY55ZJPIJMG1XWFV9ISZPZH1X3LBF0UV3UG6ORETM0EHE5R86Z47B1F"
}

In the same fashion as the archive retrieval, you can now download the result of the inventory retrieval job using GetJobOutput using the JobId from the result of the previous command:

Terminal window
awslocal glacier get-job-output \
--vault-name sample-vault \
--account-id - \
--job-id P5972CSWFR803BHX48OD1A7JWNBFJUMYVWCMZWY55ZJPIJMG1XWFV9ISZPZH1X3LBF0UV3UG6ORETM0EHE5R86Z47B1F \
inventory.json

Inspecting the content of the inventory.json file, we can find an inventory of the vault:

inventory.json
{
"VaultARN": "arn:aws:glacier:us-east-1:000000000000:vaults/sample-vault",
"InventoryDate": "2023-09-11T17:20:48.000Z",
"ArchiveList": [
{
"ArchiveId": "d41d8cd98f00b204e9800998ecf8427e",
"ArchiveDescription": "",
"CreationDate": "2023-09-11T15:13:41.000Z",
"Size": 0,
"SHA256TreeHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}
]
}

You can delete a Glacier archive using the DeleteArchive API.

Run the following command to delete the previously created archive:

Terminal window
awslocal glacier delete-archive \
--vault-name sample-vault \
--account-id - \
--archive-id d41d8cd98f00b204e9800998ecf8427e

You can delete a Glacier vault with the DeleteVault API.

Run the following command to delete the vault:

Terminal window
awslocal glacier delete-vault \
--vault-name sample-vault \
--account-id -
OperationImplementedImage
Page 1 of 0