Sha256: 33867685c1e7058ca9523641dbbf1562c636c919b6f08c2f30fc9e8bf72abd0d

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

#!/usr/bin/env ruby

require 'optparse'
require 's3grep'
require 'aws-sdk-s3'
require 'csv'

bucket_info = {}
aws_s3_client = Aws::S3::Client.new
aws_s3_client.list_buckets[:buckets].each do |bucket|
  name = bucket[:name]
  s3_file = "s3://#{name}/"
  info = S3Grep::Directory.new(s3_file, aws_s3_client).info 
  bucket_info[name] = {
    bucket: info.bucket,
    creation_date: bucket[:creation_date],
    total_size: info.total_size,
    num_files: info.num_files,
    last_modified: info.last_modified,
    newest_file: info.newest_file,
    first_modified: info.first_modified,
    first_file: info.first_file
  }
end

csv_headers = {
  bucket: 'Bucket',
  creation_date: 'Creation Date',
  total_size: 'Total Size',
  num_files: 'Number of Files',
  last_modified: 'Last Modified',
  newest_file: 'Newest File',
  first_modified: 'First Modified',
  first_file: 'First File'
}

file = "AWS-S3-Usage-Report-#{Time.now.strftime('%Y-%m-%dT%H%M%S')}.csv"
CSV.open(file, 'w') do |csv|
  csv << csv_headers.values

  bucket_info.each_value do |stats|
    csv << csv_headers.keys.map { |k| stats[k] }
  end
end

puts file

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
s3grep-0.1.7 bin/s3report