Sha256: 713ed20dad237482dddb6dfdbeecdbdee4e8e8039516e386ed9e3a89923048dd

Contents?: true

Size: 864 Bytes

Versions: 10

Compression:

Stored size: 864 Bytes

Contents

#!/usr/bin/env ruby

require 'time'
require 'json'

def parse_s3_log_line(line)

  # Split the log line by spaces, respecting quoted strings
  parts = line.scan(/"([^"]+)"|(\S+)/).flatten.compact

  {
    bucket_owner: parts[0],
    bucket: parts[1],
    time: parts[2] + parts[3], # Remove the brackets around the time
    remote_ip: parts[4],
    requester: parts[5],
    request_id: parts[6],
    operation: parts[7],
    key: parts[8],
    request_uri: parts[9],
    http_status: parts[10].to_i,
    error_code: parts[11],
    bytes_sent: parts[12].to_i,
    object_size: parts[13],
    total_time: parts[14].to_i,
    turnaround_time: parts[15].to_i,
    referer: parts[16],
    user_agent: parts[17],
    version_id: parts[18]
  }
end

# Read from standard input
ARGF.each_line do |line|
  parsed_log = parse_s3_log_line(line)
  puts parsed_log.to_json
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ix-cli-0.0.27 bin/ix-s3-log-to-json
ix-cli-0.0.26 bin/ix-s3-log-to-json
ix-cli-0.0.25 bin/ix-s3-log-to-json
ix-cli-0.0.24 bin/ix-s3-log-to-json
ix-cli-0.0.23 bin/ix-s3-log-to-json
ix-cli-0.0.22 bin/ix-s3-log-to-json
ix-cli-0.0.21 bin/ix-s3-log-to-json
ix-cli-0.0.20 bin/ix-s3-log-to-json
ix-cli-0.0.19 bin/ix-s3-log-to-json
ix-cli-0.0.18 bin/ix-s3-log-to-json