PureBasic
PureBasic
S3 Find Bucket Region
See more Amazon S3 (new) Examples
Demonstrates how to find out the region of an S3 bucket.Chilkat PureBasic Downloads
IncludeFile "CkXml.pb"
IncludeFile "CkAuthAws.pb"
IncludeFile "CkRest.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the Amazon AWS REST server using the correct region (in this example, "us-west-2")
bTls.i = 1
port.i = 443
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"s3.amazonaws.com",port,bTls,bAutoReconnect)
; Provide AWS credentials for the REST call.
authAws.i = CkAuthAws::ckCreate()
If authAws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY")
CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY")
CkAuthAws::setCkServiceName(authAws, "s3")
success = CkRest::ckSetAuthAws(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::setCkHost(rest, "chilkat.qa.s3.amazonaws.com")
; Send the GET request to query the bucket location.
strResult.s = CkRest::ckFullRequestNoBody(rest,"GET","/?location")
If CkRest::ckLastMethodSuccess(rest) <> 1
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
ProcedureReturn
EndIf
responseStatusCode.i = CkRest::ckResponseStatusCode(rest)
Debug "Response status code = " + Str(responseStatusCode)
If responseStatusCode <> 200
Debug CkRest::ckResponseHeader(rest)
Debug strResult
Debug "Failed."
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
ProcedureReturn
EndIf
Debug 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.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkXml::ckLoadXml(xml,strResult)
Debug "region = " + CkXml::ckContent(xml)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure