s3Client = $s3Client; } /** * Downloads, unzips, and reads a CloudTrail log file from Amazon S3 * * @param string $s3BucketName The bucket name of the log file in Amazon S3 * @param string $logFileKey The key of the log file in Amazon S3 * * @return array */ public function read($s3BucketName, $logFileKey) { // Create a command for getting the log file object $command = $this->s3Client->getCommand('GetObject', array( 'Bucket' => (string) $s3BucketName, 'Key' => (string) $logFileKey, )); // Make sure gzip encoding header is sent and accepted in order to inflate the response data $command->set('ResponseContentEncoding', 'x-gzip'); $command->prepare()->addHeader('Accept-Encoding', 'gzip'); // Get the JSON response data and extract the log records $command->execute(); $logData = $command->getResponse()->json(); if (isset($logData['Records'])) { return $logData['Records']; } else { return array(); } } }