Sha256: db76743005b32067cd429047fdca200a5f2f48b51185b345f8091e42df303542

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

#!/usr/bin/env ruby

require 'aws-sdk'
require 'aws_config'

require 'aws-sdk'

class Role
  attr_accessor :role_arn

  def initialize(role_arn,region, profile)
    if self.class.test_role_arn(role_arn)
      @role_arn = role_arn
    else
      raise ArgumentError.new("Role Arn is not valid")
    end

    @region   = region
    @profile  = profile
    @client   = Aws::STS::Client.new(
      region: @region,
      profile: @profile,
    )
  end


  def self.test_role_arn(role_arn)
    role_arn =~ /^arn:aws:iam::(\d+):role\/([^\/]+)(\/.+)?$/
  end

  def self.blurb
    puts "aws-sts <role>"
  end

  def print_keys

    credentials = get_keys
    puts "export AWS_ACCESS_KEY_ID=#{credentials.access_key_id}"
    puts "export AWS_SECRET_ACCESS_KEY=#{credentials.secret_access_key}"
    puts "export AWS_SESSION_TOKEN=#{credentials.session_token}"
    puts "export ASSUMED_ROLE=#{@profile}"
    puts "# run eval $(ruby Role.rb <profile>)"
  end

  private 

  def get_keys
    resp = @client.assume_role({
      role_arn: @role_arn,
      role_session_name: @profile,
    })

    resp.credentials
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws-sts-0.1.0 lib/aws/sts/role.rb