| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | <?phpnamespace 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'] : [];    }}
 |