DataFlex
DataFlex
S3 - Working with Buckets in a Region
See more Amazon S3 (new) Examples
Demonstrates how to work with S3 buckets located in a particular region.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoRest
Boolean iBTls
Integer iPort
Boolean iBAutoReconnect
Variant vAuthAws
Handle hoAuthAws
Variant vFileData
Handle hoFileData
Variant vResponseBody
Handle hoResponseBody
Integer iStatusCode
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// When usig the REST class to access an S3 bucket that has been created in a particular region,
// there are three important things to remember:
//
// 1) Connect to the domain that includes the region. For example, instead of connecting to
// "s3.amazonaws.com", connect to "s3.eu-central-1.amazonaws.com" if your bucket is in the EU Frankfurt region.
// See http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region for a list of S3 region domains (endpoints)
//
// 2) Set the AuthAws.Region property equal to the region, such as "eu-central-1".
//
// 3) Include the region in request's Host header.
//
// This example will upload to a bucket in the eu-central-1 region.
//
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect to the Amazon AWS REST server.
Move True To iBTls
Move 443 To iPort
Move True To iBAutoReconnect
Get ComConnect Of hoRest "s3.eu-central-1.amazonaws.com" iPort iBTls iBAutoReconnect To iSuccess
// Provide AWS credentials for the REST call.
Get Create (RefClass(cComChilkatAuthAws)) To hoAuthAws
If (Not(IsComObjectCreated(hoAuthAws))) Begin
Send CreateComObject of hoAuthAws
End
Set ComAccessKey Of hoAuthAws To "AWS_ACCESS_KEY"
Set ComSecretKey Of hoAuthAws To "AWS_SECRET_KEY"
Set ComServiceName Of hoAuthAws To "s3"
Set ComRegion Of hoAuthAws To "eu-central-1"
Get pvComObject of hoAuthAws to vAuthAws
Get ComSetAuthAws Of hoRest vAuthAws To iSuccess
// Set the bucket name via the HOST header.
// In this case, the bucket name is "chilkateufrankfurt" (which was created in the eu-central-1 region)
Set ComHost Of hoRest To "chilkateufrankfurt.s3.eu-central-1.amazonaws.com"
Get Create (RefClass(cComChilkatBinData)) To hoFileData
If (Not(IsComObjectCreated(hoFileData))) Begin
Send CreateComObject of hoFileData
End
Get ComLoadFile Of hoFileData "qa_data/jpg/starfish.jpg" To iSuccess
// Upload the file to Amazon S3.
Get Create (RefClass(cComChilkatStringBuilder)) To hoResponseBody
If (Not(IsComObjectCreated(hoResponseBody))) Begin
Send CreateComObject of hoResponseBody
End
Get pvComObject of hoFileData to vFileData
Get pvComObject of hoResponseBody to vResponseBody
Get ComFullRequestBd Of hoRest "PUT" "/starfish.jpg" vFileData vResponseBody To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// Did we get a 200 response indicating success?
Get ComResponseStatusCode Of hoRest To iStatusCode
If (iStatusCode <> 200) Begin
Get ComGetAsString Of hoResponseBody To sTemp1
Showln "Error response: " sTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "Status code: " iStatusCode ", Status text: " sTemp1
Procedure_Return
End
Showln "File successfully uploaded."
End_Procedure