aws-sts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aws/sts"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
3
+
4
+ require 'aws/sts'
5
+
6
+ tool = Aws::Sts::Cli.new
7
+ tool.main
@@ -0,0 +1,24 @@
1
+ require "aws/sts/version"
2
+ require "aws/sts/role"
3
+ require 'aws_config'
4
+
5
+ module Aws
6
+ module Sts
7
+ class Cli < StandardError
8
+ def initialize
9
+ end
10
+
11
+ def main
12
+ if ARGV.empty?
13
+ Role.blurb
14
+ else
15
+ profile = ARGV[0]
16
+ role_arn = AWSConfig[profile].role_arn
17
+ region = AWSConfig[profile].region
18
+ @role = Role.new(role_arn, region, profile)
19
+ @role.print_keys
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'aws-sdk'
4
+ require 'aws_config'
5
+
6
+ require 'aws-sdk'
7
+
8
+ class Role
9
+ attr_accessor :role_arn
10
+
11
+ def initialize(role_arn,region, profile)
12
+ if self.class.test_role_arn(role_arn)
13
+ @role_arn = role_arn
14
+ else
15
+ raise ArgumentError.new("Role Arn is not valid")
16
+ end
17
+
18
+ @region = region
19
+ @profile = profile
20
+ @client = Aws::STS::Client.new(
21
+ region: @region,
22
+ profile: @profile,
23
+ )
24
+ end
25
+
26
+
27
+ def self.test_role_arn(role_arn)
28
+ role_arn =~ /^arn:aws:iam::(\d+):role\/([^\/]+)(\/.+)?$/
29
+ end
30
+
31
+ def self.blurb
32
+ puts "aws-sts <role>"
33
+ end
34
+
35
+ def print_keys
36
+
37
+ credentials = get_keys
38
+ puts "export AWS_ACCESS_KEY_ID=#{credentials.access_key_id}"
39
+ puts "export AWS_SECRET_ACCESS_KEY=#{credentials.secret_access_key}"
40
+ puts "export AWS_SESSION_TOKEN=#{credentials.session_token}"
41
+ puts "export ASSUMED_ROLE=#{@profile}"
42
+ puts "# run eval $(ruby Role.rb <profile>)"
43
+ end
44
+
45
+ private
46
+
47
+ def get_keys
48
+ resp = @client.assume_role({
49
+ role_arn: @role_arn,
50
+ role_session_name: @profile,
51
+ })
52
+
53
+ resp.credentials
54
+ end
55
+ end
@@ -0,0 +1,5 @@
1
+ module Aws
2
+ module Sts
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aws-sts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lewis Robbins
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-04-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws_config
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: This tool allows you to a assume an AWS role using short-lived credentials,
42
+ it follows your aws config file
43
+ email:
44
+ - lewis.robbins2@gmail.com
45
+ executables:
46
+ - aws-sts
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".github/workflows/ruby.yml"
51
+ - ".gitignore"
52
+ - ".travis.yml"
53
+ - CODE_OF_CONDUCT.md
54
+ - Gemfile
55
+ - Gemfile.lock
56
+ - LICENSE
57
+ - LICENSE.txt
58
+ - README.md
59
+ - Rakefile
60
+ - aws-sts.gemspec
61
+ - bin/console
62
+ - bin/setup
63
+ - exe/aws-sts
64
+ - lib/aws/sts.rb
65
+ - lib/aws/sts/role.rb
66
+ - lib/aws/sts/version.rb
67
+ homepage: https://github.com/lewisrobbins/aws-sts
68
+ licenses:
69
+ - MIT
70
+ metadata:
71
+ homepage_uri: https://github.com/lewisrobbins/aws-sts
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.3.0
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubygems_version: 3.0.3
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Requests temporary AWS credentials using STS
91
+ test_files: []