class AwsRotateKeys::CLI
Attributes
credentials_path[R]
env[R]
iam[R]
stdout[R]
Public Class Methods
call(*args)
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 6 def self.call(*args) new(*args).call end
new(iam: Aws::IAM::Client.new, credentials_path: "
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 12 def initialize(iam: Aws::IAM::Client.new, credentials_path: "#{Dir.home}/.aws/credentials", stdout: $stdout, env: ENV) @iam = iam @credentials_path = credentials_path @stdout = stdout @env = env end
Public Instance Methods
call()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 22 def call log "Creating access key..." new_key = create_access_key create_credentials_directory_if_needed if credentials_file_exists? log "Backing up #{credentials_path} to #{credentials_backup_path}..." backup_aws_credentials_file end log "Writing new access key to #{credentials_path}" write_aws_credentials_file(new_key) log "Deleting your oldest access key..." delete_oldest_access_key log "You're all set!" if aws_environment_variables? log aws_environment_variables_warning_message end end
Private Instance Methods
aws_environment_variables?()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 94 def aws_environment_variables? env['AWS_ACCESS_KEY_ID'] || env['AWS_SECRET_ACCESS_KEY'] end
aws_environment_variables_warning_message()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 98 def aws_environment_variables_warning_message "We've noticed that the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set.\n" + "Please remove them so that aws cli and libraries use #{credentials_path} instead." end
backup_aws_credentials_file()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 66 def backup_aws_credentials_file FileUtils.cp(credentials_path, credentials_backup_path) end
create_access_key()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 48 def create_access_key create_access_key_response = iam.create_access_key create_access_key_response.access_key end
create_credentials_directory_if_needed()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 53 def create_credentials_directory_if_needed FileUtils.mkdir_p(credentials_dir) end
credentials_backup_path()
click to toggle source
ex. ~/aws/credentials.bkp-2017-01-06-16-38-07–0800
# File lib/aws_rotate_keys/cli.rb, line 62 def credentials_backup_path credentials_path + ".bkp-#{Time.now.to_s.gsub(/[^\d]/, '-')}" end
credentials_dir()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 86 def credentials_dir File.dirname(credentials_path) end
credentials_file_exists?()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 57 def credentials_file_exists? File.exist?(credentials_path) end
delete_oldest_access_key()
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 78 def delete_oldest_access_key list_access_keys_response = iam.list_access_keys access_keys = list_access_keys_response.access_key_metadata oldest_access_key = access_keys.sort_by(&:create_date).first iam.delete_access_key(access_key_id: oldest_access_key.access_key_id) end
log(msg)
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 90 def log(msg) stdout.puts msg end
write_aws_credentials_file(access_key)
click to toggle source
# File lib/aws_rotate_keys/cli.rb, line 70 def write_aws_credentials_file(access_key) File.open(credentials_path, "w") do |f| f.puts "[default]" f.puts "aws_access_key_id = #{access_key.access_key_id}" f.puts "aws_secret_access_key = #{access_key.secret_access_key}" end end