C
C
S3 Find Bucket Region
See more Amazon S3 (new) Examples
Demonstrates how to find out the region of an S3 bucket.Chilkat C Downloads
#include <C_CkRest.h>
#include <C_CkAuthAws.h>
#include <C_CkXml.h>
void ChilkatSample(void)
{
BOOL success;
HCkRest rest;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkAuthAws authAws;
const char *strResult;
int responseStatusCode;
HCkXml xml;
success = FALSE;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rest = CkRest_Create();
// Connect to the Amazon AWS REST server using the correct region (in this example, "us-west-2")
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRest_Connect(rest,"s3.amazonaws.com",port,bTls,bAutoReconnect);
// Provide AWS credentials for the REST call.
authAws = CkAuthAws_Create();
CkAuthAws_putAccessKey(authAws,"AWS_ACCESS_KEY");
CkAuthAws_putSecretKey(authAws,"AWS_SECRET_KEY");
CkAuthAws_putServiceName(authAws,"s3");
success = CkRest_SetAuthAws(rest,authAws);
// The bucket name we want to know about is set in the HOST header.
// In this example, we want to find the region for the "chilkat.qa" bucket.
CkRest_putHost(rest,"chilkat.qa.s3.amazonaws.com");
// Send the GET request to query the bucket location.
strResult = CkRest_fullRequestNoBody(rest,"GET","/?location");
if (CkRest_getLastMethodSuccess(rest) != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
CkAuthAws_Dispose(authAws);
return;
}
responseStatusCode = CkRest_getResponseStatusCode(rest);
printf("Response status code = %d\n",responseStatusCode);
if (responseStatusCode != 200) {
printf("%s\n",CkRest_responseHeader(rest));
printf("%s\n",strResult);
printf("Failed.\n");
CkRest_Dispose(rest);
CkAuthAws_Dispose(authAws);
return;
}
printf("%s\n",strResult);
// The result contains XML like this:
// <?xml version="1.0" encoding="UTF-8"?>
// <LocationConstraint xmlns="http://s3.amazonaws.com/doc/2006-03-01/">us-west-2</LocationConstraint>
// Get the "us-west-2" from the XML
xml = CkXml_Create();
success = CkXml_LoadXml(xml,strResult);
printf("region = %s\n",CkXml_content(xml));
CkRest_Dispose(rest);
CkAuthAws_Dispose(authAws);
CkXml_Dispose(xml);
}