Sample code for 30+ languages & platforms
Xbase++

Glacier Initiate Archive Retrieval Job

See more Amazon Glacier Examples

Demonstrates how to initiate an archive retrieval job to download an archive.

Note: This example requires Chilkat v9.5.0.78 or greater.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oRest
LOCAL nBTls
LOCAL nPort
LOCAL nBAutoReconnect
LOCAL oAuthAws
LOCAL oJson
LOCAL oSbRequestBody
LOCAL oSbResponseBody
LOCAL nRespStatusCode
LOCAL cJobId
LOCAL cLocation

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oRest := CreateObject("Chilkat.Rest")

//  Connect to the Amazon AWS REST server in the desired region.
nBTls := 1
nPort := 443
nBAutoReconnect := 1
nSuccess := oRest:Connect("glacier.us-west-2.amazonaws.com", nPort, nBTls, nBAutoReconnect)

//  Provide AWS credentials.
oAuthAws := CreateObject("Chilkat.AuthAws")
oAuthAws:AccessKey := "AWS_ACCESS_KEY"
oAuthAws:SecretKey := "AWS_SECRET_KEY"
oAuthAws:ServiceName := "glacier"
oAuthAws:Region := "us-west-2"

nSuccess := oRest:SetAuthAws(oAuthAws)

//  --------------------------------------------------------------------------
//  Note: The above REST connection and setup of the AWS credentials
//  can be done once.  After connecting, any number of REST calls can be made.
//  The "auto reconnect" property passed to rest.Connect indicates that if
//  the connection is lost, a REST method call will automatically reconnect
//  if needed.
//  --------------------------------------------------------------------------

//  For more information, see Glacier Initiate Job Post Reference Documentation
//  
oRest:AddHeader("x-amz-glacier-version", "2012-06-01")

//  The body of our request will contain this JSON:
//  {
//    "Type": "archive-retrieval",
//    "ArchiveId": "NkbByEejwEggmBz2fTHgJrg0XBoDfjP4q6iu87-TjhqG6eGoOY9Z8i1_AUyUsuhPAdTqLHy8pTl5nfCFJmDl2yEZONi5L26Omw12vcs01MNGntHEQL8MBfGlqrEXAMPLEArchiveId"
//    "Description": "My archive description",
//    "SNSTopic": "arn:aws:sns:us-west-2:111111111111:Glacier-ArchiveRetrieval-topic-Example",
//    "Tier" : "Bulk"
//  }

//  Use this online tool to generate the code from sample JSON: 
//  Generate Code to Create JSON

oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("Type", "archive-retrieval")
oJson:UpdateString("ArchiveId", "ARCHIVE_ID")
oJson:UpdateString("Description", "My archive description")
//  Possible tiers are Bulk, Standard, and Expedited.
oJson:UpdateString("Tier", "Bulk")
//  The SNSTopic is optional.  If included, then notification is sent to the SNS topic when the job is complete.
//  This example will omit the SNSTopic.

oSbRequestBody := CreateObject("Chilkat.StringBuilder")
oJson:EmitSb(oSbRequestBody)
oSbResponseBody := CreateObject("Chilkat.StringBuilder")

//  Start an archive retrieval in for the vault named "chilkat".
nSuccess := oRest:FullRequestSb("POST", "/AWS_ACCOUNT_ID/vaults/chilkat/jobs", oSbRequestBody, oSbResponseBody)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oAuthAws:destroy()
    oJson:destroy()
    oSbRequestBody:destroy()
    oSbResponseBody:destroy()
    RETURN
ENDIF

nRespStatusCode := oRest:ResponseStatusCode
IF (nRespStatusCode >= 400)
    ? "Response Status Code = " + Str(nRespStatusCode)
    ? "Response Header:"
    ? oRest:ResponseHeader
    ? "Response Body:"
    ? oSbResponseBody:GetAsString()
    oRest:destroy()
    oAuthAws:destroy()
    oJson:destroy()
    oSbRequestBody:destroy()
    oSbResponseBody:destroy()
    RETURN
ENDIF

//  Success is indicated by a 202 response status with an empty response body.
? "response status code = " + Str(nRespStatusCode)

//  If successful, the response header looks like this.
//  The Location and x-amz-job-id are two items of information we may wish to save..

//  HTTP/1.1 202 Accepted
//  x-amzn-RequestId: AAABZpJrTyioDC_HsOmHae8EZp_uBSJr6cnGOLKp_XJCl-Q
//  Date: Wed, 10 Feb 2017 12:00:00 GMT 
//  Location: /111122223333/vaults/examplevault/jobs/HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID
//  x-amz-job-id: HkF9p6o7yjhFx-K3CGl6fuSm6VzW9T7esGQfco8nUXVYwS0jlb5gq1JZ55yHgt5vP54ZShjoQzQVVh7vEXAMPLEjobID
//  

cJobId := oRest:ResponseHdrByName("x-amz-job-id")
? "x-amz-job-id = " + cJobId

cLocation := oRest:ResponseHdrByName("Location")
? "Location = " + cLocation

oRest:destroy()
oAuthAws:destroy()
oJson:destroy()
oSbRequestBody:destroy()
oSbResponseBody:destroy()