lib/awsecrets.rb in awsecrets-1.14.0 vs lib/awsecrets.rb in awsecrets-1.15.0
- old
+ new
@@ -1,28 +1,24 @@
require_relative 'awsecrets/version'
+require_relative 'awsecrets/utils'
require 'optparse'
require 'aws-sdk'
require 'aws_config'
-require 'net/http'
require 'yaml'
module Awsecrets
+ include Misc
+
def self.load(profile: nil, region: nil, secrets_path: nil, disable_load_secrets: false)
@profile = profile
@region = region
@secrets_path = secrets_path
@disable_load_secrets = disable_load_secrets
@disable_load_secrets = true if secrets_path == false
- @credentials = nil
- @access_key_id = nil
- @secret_access_key = nil
- @session_token = nil
- @role_arn = nil
- @external_id = nil
- @source_profile = nil
- @role_session_name = nil
+ @credentials = @access_key_id = @secret_access_key = @session_token = nil
+ @role_arn = @external_id = @source_profile = @role_session_name = nil
# 1. Command Line Options
load_options if load_method_args
# 2. Environment Variables
load_env
@@ -49,54 +45,57 @@
opt.on('--secrets_path SECRETS_PATH') { |v| @secrets_path ||= v }
begin
opt.parse!(ARGV)
rescue OptionParser::InvalidOption
end
- return unless @profile
+ return true unless @profile
@region ||= AWSConfig[@profile]['region']
+ true
end
def self.load_env
@region ||= ENV['AWS_REGION']
@region ||= ENV['AWS_DEFAULT_REGION']
@profile ||= ENV['AWS_PROFILE']
@secrets_path ||= ENV['AWS_SECRETS_PATH']
- return if @access_key_id
+ return true if @access_key_id
return unless ENV['AWS_ACCESS_KEY_ID'] && ENV['AWS_SECRET_ACCESS_KEY']
@access_key_id ||= ENV['AWS_ACCESS_KEY_ID']
@secret_access_key ||= ENV['AWS_SECRET_ACCESS_KEY']
@session_token ||= ENV['AWS_SESSION_TOKEN']
+ true
end
def self.load_yaml
- return if @disable_load_secrets
+ return false if @disable_load_secrets
@secrets_path ||= 'secrets.yml'
creds = YAML.load_file(@secrets_path) if File.exist?(File.expand_path(@secrets_path))
@region ||= creds['region'] if creds && creds.include?('region')
- return if @access_key_id
- return unless creds &&
+ return true if @access_key_id
+ return true unless creds &&
creds.include?('aws_access_key_id') &&
creds.include?('aws_secret_access_key')
@access_key_id ||= creds['aws_access_key_id']
@secret_access_key ||= creds['aws_secret_access_key']
@session_token ||= creds['aws_session_token'] if creds.include?('aws_session_token')
@role_arn ||= creds['role_arn'] if creds.include?('role_arn')
@external_id ||= creds['external_id'] if creds.include?('external_id')
@role_session_name ||= creds['role_session_name'] if creds.include?('role_session_name')
- return unless @role_arn
- @role_session_name ||= generate_session_name
+ return true unless @role_arn
+ @role_session_name ||= Misc.generate_session_name
@credentials ||= role_creds(
client: Aws::STS::Client.new(
region: @region,
access_key_id: @access_key_id,
secret_access_key: @secret_access_key
),
role_arn: @role_arn,
role_session_name: @role_session_name,
external_id: @external_id
)
+ true
end
def self.load_config
@region ||= if AWSConfig[@profile] && AWSConfig[@profile]['region']
AWSConfig[@profile]['region']
@@ -113,11 +112,11 @@
def self.set_aws_config
@region ||= self.current_region
Aws.config[:region] = @region
if @role_arn && @source_profile
- @role_session_name ||= generate_session_name
+ @role_session_name ||= Misc.generate_session_name
region = if AWSConfig[@source_profile.name] && AWSConfig[@source_profile.name]['region']
AWSConfig[@source_profile.name]['region']
else
AWSConfig['default']['region']
end
@@ -136,20 +135,11 @@
@credentials ||= Aws::SharedCredentials.new(profile_name: @profile) if @profile
@credentials ||= Aws::SharedCredentials.new(profile_name: 'default') if AWSConfig['default'] && !@access_key_id
@credentials ||= Aws::Credentials.new(@access_key_id, @secret_access_key, @session_token) if @access_key_id
@credentials ||= Aws::InstanceProfileCredentials.new
+ Misc.validate_client
Aws.config[:credentials] = @credentials
- end
-
- def self.generate_session_name
- "awsecrets-session-#{Time.now.to_i}"
- end
-
- def self.current_region
- metadata_endpoint = 'http://169.254.169.254/latest/meta-data/'
- az = Net::HTTP.get(URI.parse(metadata_endpoint + 'placement/availability-zone'))
- az[0...-1]
end
def self.role_creds(args)
Aws::AssumeRoleCredentials.new(args)
end