class ZAWS::CloudTrail
Constants
- DEFAULT_DAYS_TO_FETCH
- ZAWS_S3_CACHE
Public Class Methods
new(shellout,aws)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 11 def initialize(shellout,aws) @shellout=shellout @aws=aws end
Public Instance Methods
declare(name,region,bucket_name,verbose=nil)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 64 def declare(name,region,bucket_name,verbose=nil) if exists(name,region) puts "CloudTrail already exists. Creation skipped.\n" else bucket_exists=@aws.s3.bucket().exists(bucket_name,region) cmdline = "aws --region #{region} cloudtrail create-subscription " << "--name #{name} --s3-#{bucket_exists ? 'use' : 'new'}-bucket #{bucket_name}" puts @shellout.cli(cmdline,verbose) end end
exists(name,region)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 60 def exists(name,region) get_cloud_trails(region).any? {|trail| trail['Name'] === name} end
get_cloud_trail_by_bucket(region,bucket_name,as_raw=false,verbose=nil)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 16 def get_cloud_trail_by_bucket(region,bucket_name,as_raw=false,verbose=nil) bucket_name = "s3://#{bucket_name}" if !bucket_name.match('s3://.*') bucket_hash = Digest::SHA1.hexdigest("#{region}#{bucket_name}") dir_name = "#{ZAWS_S3_CACHE}/#{bucket_hash}" FileUtils.mkdir_p(dir_name) dir_name = @aws.s3.bucket.sync(region,bucket_name,dir_name,verbose) results = [] Dir.open(dir_name) { |dir| Dir.glob(File.join(dir, '**', '*')) { |filename| Zlib::GzipReader.open(filename) { |file| log_file = JSON.parse file.read results.push log_file['Records'] } if File.file? filename } } json = {:Records => results.flatten(1)}.to_json if as_raw puts json else puts ZAWS::Helper::Output.cloudtrail(json) end json end
get_cloud_trail_by_name(region,trail_name,as_raw=false, verbose=nil)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 45 def get_cloud_trail_by_name(region,trail_name,as_raw=false, verbose=nil) available_cloud_trails = get_cloud_trails(region) bucket_name = available_cloud_trails.find { |available_cloud_trail| available_cloud_trail['Name'] === trail_name }['S3BucketName'] get_cloud_trail_by_bucket(region, bucket_name, as_raw, verbose) end
get_cloud_trails(region, verbose=nil)
click to toggle source
# File lib/zaws/services/cloud_trail.rb, line 54 def get_cloud_trails(region, verbose=nil) com_line = "aws cloudtrail describe-trails --region #{region}" cloud_trails = JSON.parse @shellout.cli(com_line, verbose) cloud_trails['trailList'] end