class YleTfPlugins::AWSAssumeRole::Action
Public Class Methods
new(app, **config)
click to toggle source
# File lib/yle_tf-aws_assume_role/action.rb, line 12 def initialize(app, **config) @app = app @action_config = config end
Public Instance Methods
assume_role(config, &block)
click to toggle source
# File lib/yle_tf-aws_assume_role/action.rb, line 45 def assume_role(config, &block) account = config[:account] role = config[:role] duration = config[:duration] YleTf::Logger.debug("Assuming AWS IAM role '#{account}:#{role}'") ::Yle::AWS::Role.assume_role(account, role, duration, &block) rescue ::Yle::AWS::Role::Errors::AssumeRoleError => e raise YleTf::Error, e, e.backtrace end
assume_role?(config, env)
click to toggle source
# File lib/yle_tf-aws_assume_role/action.rb, line 32 def assume_role?(config, env) reason = if env[:aws_role_assumed] 'AWS IAM role already assumed' elsif !config.assume_role? 'Not assuming AWS IAM role' end return true if !reason YleTf::Logger.debug(reason) false end
call(env)
click to toggle source
# File lib/yle_tf-aws_assume_role/action.rb, line 17 def call(env) config = Config.new(@action_config, env[:config]) if !assume_role?(config, env) @app.call(env) return end assume_role(config) do |role| env[:aws_role_assumed] = role @app.call(env) env[:aws_role_assumed] = nil end end