Sample code for 30+ languages & platforms
PureBasic

Download S3 CloudTrail Log and Un-Gzip

See more Amazon S3 Examples

Demonstrates how to download a Amazon CloudTrail log from an S3 bucket. The file in this example is a .json.gz. The file is uncompressed and the JSON parsed.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkGzip.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttp::setCkAwsAccessKey(http, "AWS_ACCESS_KEY")
    CkHttp::setCkAwsSecretKey(http, "AWS_SECRET_KEY")
    CkHttp::setCkAwsRegion(http, "us-west-2")
    CkHttp::setCkAwsEndpoint(http, "s3-us-west-2.amazonaws.com")

    bucketName.s = "chilkat.logs"
    objectName.s = "/AWSLogs/957491831129/CloudTrail/us-west-1/2016/11/12/957491831129_CloudTrail_us-west-1_20161112T1335Z_umXfD4RxHE5nDGuI.json.gz"
    localFilePath.s = "qa_output/cloudTrailLog.json.gz"

    success = CkHttp::ckS3_DownloadFile(http,bucketName,objectName,localFilePath)
    If success <> 1
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    statusCode.i = CkHttp::ckLastStatus(http)
    If statusCode <> 200
        Debug "Failed to download, response status code = " + Str(statusCode)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    jsonPath.s = "qa_output/cloudTrailLog.json"
    gzip.i = CkGzip::ckCreate()
    If gzip.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkGzip::ckUncompressFile(gzip,localFilePath,jsonPath)
    If success = 0
        Debug CkGzip::ckLastErrorText(gzip)
        CkHttp::ckDispose(http)
        CkGzip::ckDispose(gzip)
        ProcedureReturn
    EndIf

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadFile(json,jsonPath)
    CkJsonObject::setCkEmitCompact(json, 0)
    Debug CkJsonObject::ckEmit(json)

    ; Sample JSON is shown below.
    ; Go to http://tools.chilkat.io/jsonParse.cshtml 
    ; and copy/paste the JSON into the online tool to generate parsing code.

    ; {
    ;   "Records": [
    ;     {
    ;       "eventVersion": "1.05",
    ;       "userIdentity": {
    ;         "type": "Root",
    ;         "principalId": "954591834127",
    ;         "arn": "arn:aws:iam::954591834127:root",
    ;         "accountId": "954591834127",
    ;         "accessKeyId": "ASIAJ3DEMXUXI43B6FYQ",
    ;         "sessionContext": {
    ;           "attributes": {
    ;             "mfaAuthenticated": "false",
    ;             "creationDate": "2016-11-12T13:09:31Z"
    ;           }
    ;         }
    ;       },
    ;       "eventTime": "2016-11-12T13:34:39Z",
    ;       "eventSource": "cloudtrail.amazonaws.com",
    ;       "eventName": "DescribeTrails",
    ;       "awsRegion": "us-west-1",
    ;       "sourceIPAddress": "98.228.98.57",
    ;       "userAgent": "console.amazonaws.com",
    ;       "requestParameters": {
    ;         "trailNameList": [
    ;         ]
    ;       },
    ;       "responseElements": null,
    ;       "requestID": "c2a0376c-a8dc-11e6-89e7-85ac5ce5ee56",
    ;       "eventID": "eb5afd70-dae1-41f0-82b4-91c3c936d9ba",
    ;       "eventType": "AwsApiCall",
    ;       "recipientAccountId": "954591834127"
    ;     }
    ;   ]
    ; }


    CkHttp::ckDispose(http)
    CkGzip::ckDispose(gzip)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure