Sample code for 30+ languages & platforms
PowerBuilder

S3 List Buckets using an STS Session Token

See more AWS Security Token Service Examples

This is an example showing how to use an STS session token in an Amazon AWS request. This example will list S3 buckets using a previously obtained session token.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_XmlToken
oleobject loo_Rest
integer li_BTls
integer li_Port
integer li_BAutoReconnect
oleobject loo_AuthAws
oleobject loo_SbResponse
integer li_StatusCode
oleobject loo_Xml

li_Success = 0

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

// See Get AWS STS Session Token for sample code to get the session token XML.
loo_XmlToken = create oleobject
li_rc = loo_XmlToken.ConnectToNewObject("Chilkat.Xml")
if li_rc < 0 then
    destroy loo_XmlToken
    MessageBox("Error","Connecting to COM object failed")
    return
end if
li_Success = loo_XmlToken.LoadXmlFile("qa_data/tokens/aws_session_token.xml")
if li_Success = 0 then
    Write-Debug loo_XmlToken.LastErrorText
    destroy loo_XmlToken
    return
end if

loo_Rest = create oleobject
li_rc = loo_Rest.ConnectToNewObject("Chilkat.Rest")

// Connect to the Amazon AWS REST server.
li_BTls = 1
li_Port = 443
li_BAutoReconnect = 1
li_Success = loo_Rest.Connect("s3.amazonaws.com",li_Port,li_BTls,li_BAutoReconnect)

// Provide AWS credentials for the REST call.
loo_AuthAws = create oleobject
li_rc = loo_AuthAws.ConnectToNewObject("Chilkat.AuthAws")

// The purpose of this example is to show how to use the temporary AccessKeyId, SecretAccessKey, and SessionToken.
loo_AuthAws.AccessKey = loo_XmlToken.GetChildContent("GetSessionTokenResult|Credentials|AccessKeyId")
loo_AuthAws.SecretKey = loo_XmlToken.GetChildContent("GetSessionTokenResult|Credentials|SecretAccessKey")
loo_AuthAws.ServiceName = "s3"
li_Success = loo_Rest.SetAuthAws(loo_AuthAws)

loo_Rest.AddQueryParam("X-Amz-Security-Token",loo_XmlToken.GetChildContent("GetSessionTokenResult|Credentials|SessionToken"))

loo_SbResponse = create oleobject
li_rc = loo_SbResponse.ConnectToNewObject("Chilkat.StringBuilder")

li_Success = loo_Rest.FullRequestNoBodySb("GET","/",loo_SbResponse)
if li_Success <> 1 then
    Write-Debug loo_Rest.LastErrorText
    destroy loo_XmlToken
    destroy loo_Rest
    destroy loo_AuthAws
    destroy loo_SbResponse
    return
end if

li_StatusCode = loo_Rest.ResponseStatusCode
Write-Debug "Response status code = " + string(li_StatusCode)

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")

loo_Xml.LoadSb(loo_SbResponse,1)
Write-Debug loo_Xml.GetXml()

if li_StatusCode <> 200 then
    Write-Debug "Failed.  See error information in the XML."
    destroy loo_XmlToken
    destroy loo_Rest
    destroy loo_AuthAws
    destroy loo_SbResponse
    destroy loo_Xml
    return
end if



destroy loo_XmlToken
destroy loo_Rest
destroy loo_AuthAws
destroy loo_SbResponse
destroy loo_Xml