class Comodule::Deployment::Helper::Aws::Service
Public Class Methods
new(platform)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 18 def initialize(platform) self.owner = platform @aws_sdk_object = {} @access_credentials = access_credentials || {} @method_map = {} ::AWS.constants.each do |const_name| const = ::AWS.const_get(const_name) if defined?(const.new) @method_map[const_name.to_s.underscore.to_sym] = const end end end
Public Instance Methods
access_credentials()
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 32 def access_credentials config.aws_access_credentials || {} end
access_key_id(aws_resource_name)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 43 def access_key_id(aws_resource_name) search_credential_directive(aws_resource_name, :access_key_id) end
method_missing(method_name)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 68 def method_missing(method_name) if @method_map[method_name] return @aws_sdk_object[method_name] if @aws_sdk_object[method_name] iam = {} key_id = access_key_id(method_name) secret = secret_access_key(method_name) region = region(method_name) iam[:access_key_id] = key_id if key_id iam[:secret_access_key] = secret if secret iam[:region] = region if region && region.present? iam = (@access_credentials[method_name] || @access_credentials[:common] || {}).to_hash.merge(iam) validate_credential(method_name, iam) if !iam.empty? @aws_sdk_object[method_name] = @method_map[method_name].new(iam) else @aws_sdk_object[method_name] = @method_map[method_name].new end return @aws_sdk_object[method_name] end raise ArgumentError, "#{self.class.name} was missing AWS class #{method_name}." end
region(aws_resource_name)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 51 def region(aws_resource_name) search_credential_directive(aws_resource_name, :region) end
search_credential_directive(aws_resource_name, directive)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 36 def search_credential_directive(aws_resource_name, directive) (access_credentials[aws_resource_name] && access_credentials[aws_resource_name][directive]) || (access_credentials[:common] && access_credentials[:common][directive]) || access_credentials[directive] || config["aws_#{directive}".to_sym] end
secret_access_key(aws_resource_name)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 47 def secret_access_key(aws_resource_name) search_credential_directive(aws_resource_name, :secret_access_key) end
validate_credential(aws_resource_name, iam)
click to toggle source
# File lib/comodule/deployment/helper/aws.rb, line 55 def validate_credential(aws_resource_name, iam) case aws_resource_name when :cloud_formation, :rds, :auto_scaling if !iam || !iam[:region] raise ArgumentError, "Please specify aws_access_credentials.#{aws_resource_name}.region on your config.yml." end when :cloud_front, :s3 iam.delete(:region) end iam end