PureBasic
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
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