diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/CloudTrail/LogFileReader.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/CloudTrail/LogFileReader.php | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/CloudTrail/LogFileReader.php b/vendor/aws/aws-sdk-php/src/CloudTrail/LogFileReader.php new file mode 100644 index 0000000..4e4065e --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/CloudTrail/LogFileReader.php @@ -0,0 +1,55 @@ +<?php +namespace Aws\CloudTrail; + +use Aws\S3\S3Client; + +/** + * This class provides an easy way to read log files generated by AWS + * CloudTrail. + * + * CloudTrail log files contain data about your AWS API calls and are stored in + * Amazon S3. The log files are gzipped and contain structured data in JSON + * format. This class will automatically ungzip and decode the data, and return + * the data as an array of log records + */ +class LogFileReader +{ + /** @var S3Client S3 client used to perform GetObject operations */ + private $s3Client; + + /** + * @param S3Client $s3Client S3 client used to retrieve objects + */ + public function __construct(S3Client $s3Client) + { + $this->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', [ + 'Bucket' => (string) $s3BucketName, + 'Key' => (string) $logFileKey, + 'ResponseContentEncoding' => 'x-gzip' + ]); + + // Make sure gzip encoding header is sent and accepted in order to + // inflate the response data. + $command['@http']['headers']['Accept-Encoding'] = 'gzip'; + + // Get the JSON response data and extract the log records + $result = $this->s3Client->execute($command); + $logData = json_decode($result['Body'], true); + + return isset($logData['Records']) ? $logData['Records'] : []; + } +} |