SQL Server
SQL Server
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 SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @http, 'AwsAccessKey', 'AWS_ACCESS_KEY'
EXEC sp_OASetProperty @http, 'AwsSecretKey', 'AWS_SECRET_KEY'
EXEC sp_OASetProperty @http, 'AwsRegion', 'us-west-2'
EXEC sp_OASetProperty @http, 'AwsEndpoint', 's3-us-west-2.amazonaws.com'
DECLARE @bucketName nvarchar(4000)
SELECT @bucketName = 'chilkat.logs'
DECLARE @objectName nvarchar(4000)
SELECT @objectName = '/AWSLogs/957491831129/CloudTrail/us-west-1/2016/11/12/957491831129_CloudTrail_us-west-1_20161112T1335Z_umXfD4RxHE5nDGuI.json.gz'
DECLARE @localFilePath nvarchar(4000)
SELECT @localFilePath = 'qa_output/cloudTrailLog.json.gz'
EXEC sp_OAMethod @http, 'S3_DownloadFile', @success OUT, @bucketName, @objectName, @localFilePath
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
RETURN
END
DECLARE @statusCode int
EXEC sp_OAGetProperty @http, 'LastStatus', @statusCode OUT
IF @statusCode <> 200
BEGIN
PRINT 'Failed to download, response status code = ' + @statusCode
EXEC @hr = sp_OADestroy @http
RETURN
END
DECLARE @jsonPath nvarchar(4000)
SELECT @jsonPath = 'qa_output/cloudTrailLog.json'
DECLARE @gzip int
EXEC @hr = sp_OACreate 'Chilkat.Gzip', @gzip OUT
EXEC sp_OAMethod @gzip, 'UncompressFile', @success OUT, @localFilePath, @jsonPath
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @gzip, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @gzip
RETURN
END
DECLARE @json int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
EXEC sp_OAMethod @json, 'LoadFile', @success OUT, @jsonPath
EXEC sp_OASetProperty @json, 'EmitCompact', 0
EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
PRINT @sTmp0
-- 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"
-- }
-- ]
-- }
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @gzip
EXEC @hr = sp_OADestroy @json
END
GO