aws_assume_role 0.0.3 → 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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +31 -11
  4. data/Gemfile +7 -13
  5. data/LICENSE.md +201 -19
  6. data/README.md +176 -145
  7. data/aws_assume_role.gemspec +35 -21
  8. data/bin/aws-assume-role +1 -83
  9. data/i18n/en.yml +106 -0
  10. data/lib/aws_assume_role.rb +2 -3
  11. data/lib/aws_assume_role/cli.rb +15 -0
  12. data/lib/aws_assume_role/cli/actions/abstract_action.rb +53 -0
  13. data/lib/aws_assume_role/cli/actions/configure_profile.rb +21 -0
  14. data/lib/aws_assume_role/cli/actions/configure_role_assumption.rb +19 -0
  15. data/lib/aws_assume_role/cli/actions/console.rb +68 -0
  16. data/lib/aws_assume_role/cli/actions/delete_profile.rb +20 -0
  17. data/lib/aws_assume_role/cli/actions/includes.rb +18 -0
  18. data/lib/aws_assume_role/cli/actions/list_profiles.rb +10 -0
  19. data/lib/aws_assume_role/cli/actions/migrate_profile.rb +18 -0
  20. data/lib/aws_assume_role/cli/actions/reset_environment.rb +48 -0
  21. data/lib/aws_assume_role/cli/actions/run.rb +34 -0
  22. data/lib/aws_assume_role/cli/actions/set_environment.rb +60 -0
  23. data/lib/aws_assume_role/cli/actions/test.rb +31 -0
  24. data/lib/aws_assume_role/cli/commands/configure.rb +29 -0
  25. data/lib/aws_assume_role/cli/commands/console.rb +17 -0
  26. data/lib/aws_assume_role/cli/commands/delete.rb +11 -0
  27. data/lib/aws_assume_role/cli/commands/environment.rb +32 -0
  28. data/lib/aws_assume_role/cli/commands/list.rb +10 -0
  29. data/lib/aws_assume_role/cli/commands/migrate.rb +11 -0
  30. data/lib/aws_assume_role/cli/commands/run.rb +17 -0
  31. data/lib/aws_assume_role/cli/commands/test.rb +18 -0
  32. data/lib/aws_assume_role/configuration.rb +19 -0
  33. data/lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb +2 -0
  34. data/lib/aws_assume_role/core_ext/aws-sdk/includes.rb +7 -0
  35. data/lib/aws_assume_role/credentials/factories.rb +9 -0
  36. data/lib/aws_assume_role/credentials/factories/abstract_factory.rb +31 -0
  37. data/lib/aws_assume_role/credentials/factories/assume_role.rb +38 -0
  38. data/lib/aws_assume_role/credentials/factories/default_chain_provider.rb +101 -0
  39. data/lib/aws_assume_role/credentials/factories/environment.rb +24 -0
  40. data/lib/aws_assume_role/credentials/factories/includes.rb +17 -0
  41. data/lib/aws_assume_role/credentials/factories/instance_profile.rb +17 -0
  42. data/lib/aws_assume_role/credentials/factories/repository.rb +35 -0
  43. data/lib/aws_assume_role/credentials/factories/shared.rb +15 -0
  44. data/lib/aws_assume_role/credentials/factories/shared_keyring.rb +16 -0
  45. data/lib/aws_assume_role/credentials/factories/static.rb +16 -0
  46. data/lib/aws_assume_role/credentials/providers/assume_role_credentials.rb +58 -0
  47. data/lib/aws_assume_role/credentials/providers/includes.rb +9 -0
  48. data/lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb +102 -0
  49. data/lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb +22 -0
  50. data/lib/aws_assume_role/includes.rb +30 -0
  51. data/lib/aws_assume_role/logging.rb +16 -28
  52. data/lib/aws_assume_role/profile_configuration.rb +71 -0
  53. data/lib/aws_assume_role/runner.rb +39 -0
  54. data/lib/aws_assume_role/store/includes.rb +16 -0
  55. data/lib/aws_assume_role/store/keyring.rb +59 -0
  56. data/lib/aws_assume_role/store/serialization.rb +18 -0
  57. data/lib/aws_assume_role/store/shared_config_with_keyring.rb +175 -0
  58. data/lib/aws_assume_role/types.rb +30 -0
  59. data/lib/aws_assume_role/ui.rb +55 -0
  60. data/lib/aws_assume_role/vendored/aws.rb +4 -0
  61. data/lib/aws_assume_role/vendored/aws/README.md +2 -0
  62. data/lib/aws_assume_role/vendored/aws/assume_role_credentials.rb +68 -0
  63. data/lib/aws_assume_role/vendored/aws/includes.rb +9 -0
  64. data/lib/aws_assume_role/vendored/aws/refreshing_credentials.rb +60 -0
  65. data/lib/aws_assume_role/vendored/aws/shared_config.rb +220 -0
  66. data/lib/aws_assume_role/version.rb +3 -0
  67. metadata +264 -20
  68. data/.rspec +0 -2
  69. data/Rakefile +0 -2
  70. data/bin/test.rb +0 -39
  71. data/lib/aws_assume_role/credentials.rb +0 -92
  72. data/lib/aws_assume_role/profile.rb +0 -203
  73. data/lib/aws_assume_role/profile/assume_role.rb +0 -127
  74. data/lib/aws_assume_role/profile/basic.rb +0 -152
  75. data/lib/aws_assume_role/profile/list.rb +0 -57
@@ -0,0 +1,20 @@
1
+ require_relative "includes"
2
+ require_relative "../../store/shared_config_with_keyring"
3
+
4
+ class AwsAssumeRole::Cli::Actions::DeleteProfile < AwsAssumeRole::Cli::Actions::AbstractAction
5
+ CommandSchema = proc do
6
+ required(:profile).value(:filled?)
7
+ end
8
+
9
+ def act_on(config)
10
+ prompt_for_option(:name_to_delete, "Name", proc { eql? config.profile }, fmt: config.profile)
11
+ AwsAssumeRole.shared_config.delete_profile config.profile
12
+ out format t("commands.delete.completed"), config.profile
13
+ rescue KeyError, Aws::Errors::NoSuchProfileError
14
+ error format(t("errors.NoSuchProfileError"), config.profile)
15
+ raise
16
+ rescue Aws::Errors::MissingCredentialsError
17
+ error t("errors.MissingCredentialsError")
18
+ raise
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ require "i18n"
2
+ require "aws-sdk"
3
+ require "dry-types"
4
+ require_relative "../../types"
5
+ require "dry-validation"
6
+ require "active_support/core_ext/hash/compact"
7
+ require "active_support/core_ext/hash/keys"
8
+ require "launchy"
9
+ require "open-uri"
10
+ require "json"
11
+ require_relative "../../../aws_assume_role"
12
+
13
+ module AwsAssumeRole
14
+ module Cli
15
+ module Actions
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ require_relative "includes"
2
+
3
+ class AwsAssumeRole::Cli::Actions::ListProfiles < AwsAssumeRole::Cli::Actions::AbstractAction
4
+ CommandSchema = proc do
5
+ end
6
+
7
+ def act_on(_options)
8
+ AwsAssumeRole.shared_config.profiles.each { |p| puts p }
9
+ end
10
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "includes"
2
+
3
+ class AwsAssumeRole::Cli::Actions::MigrateProfile < AwsAssumeRole::Cli::Actions::AbstractAction
4
+ CommandSchema = proc do
5
+ required(:profile).value(:filled?)
6
+ end
7
+
8
+ def act_on(config)
9
+ AwsAssumeRole.shared_config.migrate_profile config.profile
10
+ out format(t("commands.configure.saved"), config[:profile], AwsAssumeRole.shared_config.config_path)
11
+ rescue KeyError, Aws::Errors::NoSuchProfileError
12
+ error format(t("errors.NoSuchProfileError"), config.profile)
13
+ raise
14
+ rescue Aws::Errors::MissingCredentialsError
15
+ error t("errors.MissingCredentialsError")
16
+ raise
17
+ end
18
+ end
@@ -0,0 +1,48 @@
1
+ require_relative "includes"
2
+
3
+ class AwsAssumeRole::Cli::Actions::ResetEnvironment < AwsAssumeRole::Cli::Actions::AbstractAction
4
+ include AwsAssumeRole::Ui
5
+
6
+ SHELL_STRINGS = {
7
+ sh: {
8
+ env_command: "unset %<key>s; ",
9
+ },
10
+ csh: {
11
+ env_command: "unset %<key>s; ",
12
+ },
13
+ fish: {
14
+ env_command: "set -ex %<key>s; ",
15
+ footer: "commands.reset_environment.shells.fish",
16
+ },
17
+ powershell: {
18
+ env_command: "remove-item ENV:%<key>s; ",
19
+ footer: "commands.reset_environment.shells.powershell",
20
+ },
21
+ }.freeze
22
+
23
+ CommandSchema = proc do
24
+ required(:shell_type).value(included_in?: SHELL_STRINGS.stringify_keys.keys)
25
+ end
26
+
27
+ def act_on(config)
28
+ shell_strings = SHELL_STRINGS[config.shell_type.to_sym]
29
+ str = ""
30
+ %w(AWS_ACCESS_KEY_ID
31
+ AWS_SECRET_ACCESS_KEY
32
+ AWS_SESSION_TOKEN
33
+ AWS_PROFILE
34
+ AWS_ASSUME_ROLE_LOG_LEVEL
35
+ GLI_DEBUG
36
+ AWS_ASSUME_ROLE_KEYRING_BACKEND).each do |key|
37
+ str << format(shell_strings[:env_command], key: key) if ENV.fetch(key, false)
38
+ end
39
+ str << "# #{pastel.yellow t(shell_strings.fetch(:footer, 'commands.set_environment.shells.others'))}"
40
+ puts str
41
+ rescue KeyError, Aws::Errors::NoSuchProfileError
42
+ error format(t("errors.NoSuchProfileError"), config.profile)
43
+ raise
44
+ rescue Aws::Errors::MissingCredentialsError
45
+ error t("errors.MissingCredentialsError")
46
+ raise
47
+ end
48
+ end
@@ -0,0 +1,34 @@
1
+ require_relative "includes"
2
+ require_relative "../../runner"
3
+ require_relative "../../credentials/factories/default_chain_provider"
4
+
5
+ class AwsAssumeRole::Cli::Actions::Run < AwsAssumeRole::Cli::Actions::AbstractAction
6
+ include AwsAssumeRole::Ui
7
+
8
+ CommandSchema = proc do
9
+ required(:profile).maybe
10
+ optional(:region) { filled? > format?(REGION_REGEX) }
11
+ optional(:serial_number) { filled? > format?(MFA_REGEX) }
12
+ required(:role_arn).maybe
13
+ required(:role_session_name).maybe
14
+ required(:duration_seconds).maybe
15
+ rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
16
+ (p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
17
+ end
18
+ end
19
+
20
+ def act_on(config)
21
+ credentials = try_for_credentials config.to_h
22
+ unless config.args.empty?
23
+ Runner.new(config.args,
24
+ environment: { "AWS_DEFAULT_REGION" => resolved_region },
25
+ credentials: credentials)
26
+ end
27
+ rescue KeyError, Aws::Errors::NoSuchProfileError
28
+ error format(t("errors.NoSuchProfileError"), config.profile)
29
+ raise
30
+ rescue Aws::Errors::MissingCredentialsError
31
+ error t("errors.MissingCredentialsError")
32
+ raise
33
+ end
34
+ end
@@ -0,0 +1,60 @@
1
+ require_relative "includes"
2
+ require_relative "../../credentials/factories/default_chain_provider"
3
+
4
+ class AwsAssumeRole::Cli::Actions::SetEnvironment < AwsAssumeRole::Cli::Actions::AbstractAction
5
+ include AwsAssumeRole::Ui
6
+
7
+ SHELL_STRINGS = {
8
+ sh: {
9
+ env_command: "%<key>s=%<value>s; export %<key>s; ",
10
+ },
11
+ csh: {
12
+ env_command: "setenv %<key>s %<value>s; ",
13
+ },
14
+ fish: {
15
+ env_command: "set -x %<key>s %<value>s; ",
16
+ footer: "commands.set_environment.shells.fish",
17
+ },
18
+ powershell: {
19
+ env_command: "set-item ENV:%<key>s %<value>s; ",
20
+ footer: "commands.set_environment.shells.powershell",
21
+ },
22
+ }.freeze
23
+
24
+ CommandSchema = proc do
25
+ optional(:profile).filled?
26
+ optional(:region) { filled? > format?(REGION_REGEX) }
27
+ optional(:serial_number) { filled? > format?(MFA_REGEX) }
28
+ optional(:external_id) { filled? > format?(EXTERNAL_ID_REGEX) }
29
+ required(:shell_type).value(included_in?: SHELL_STRINGS.stringify_keys.keys)
30
+ required(:role_arn).maybe { filled? > format?(ROLE_REGEX) }
31
+ required(:role_session_name).maybe { filled? > format?(ROLE_SESSION_NAME_REGEX) }
32
+ required(:duration_seconds).maybe
33
+ rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
34
+ (p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
35
+ end
36
+ end
37
+
38
+ def act_on(config)
39
+ credentials = try_for_credentials config.to_h
40
+ shell_strings = SHELL_STRINGS[config.shell_type.to_sym]
41
+ str = ""
42
+ [
43
+ [:access_key_id, "AWS_ACCESS_KEY_ID"],
44
+ [:secret_access_key, "AWS_SECRET_ACCESS_KEY"],
45
+ [:session_token, "AWS_SESSION_TOKEN"],
46
+ ].each do |key|
47
+ value = credentials.credentials.send key[0]
48
+ next if value.blank?
49
+ str << format(shell_strings[:env_command], key: key[1], value: value)
50
+ end
51
+ str << "# #{pastel.yellow t(shell_strings.fetch(:footer, 'commands.set_environment.shells.others'))}"
52
+ puts str
53
+ rescue KeyError, Aws::Errors::NoSuchProfileError
54
+ error format(t("errors.NoSuchProfileError"), config.profile)
55
+ raise
56
+ rescue Aws::Errors::MissingCredentialsError
57
+ error t("errors.MissingCredentialsError")
58
+ raise
59
+ end
60
+ end
@@ -0,0 +1,31 @@
1
+ require_relative "includes"
2
+ require_relative "../../credentials/factories/default_chain_provider"
3
+
4
+ class AwsAssumeRole::Cli::Actions::Test < AwsAssumeRole::Cli::Actions::AbstractAction
5
+ include AwsAssumeRole::Ui
6
+
7
+ CommandSchema = proc do
8
+ required(:profile).maybe
9
+ optional(:region) { filled? > format?(REGION_REGEX) }
10
+ optional(:serial_number) { filled? > format?(MFA_REGEX) }
11
+ required(:role_arn).maybe
12
+ required(:role_session_name).maybe
13
+ required(:duration_seconds).maybe
14
+ rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
15
+ (p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
16
+ end
17
+ end
18
+
19
+ def act_on(config)
20
+ credentials = try_for_credentials config.to_h
21
+ client = Aws::STS::Client.new(credentials: credentials, region: resolved_region)
22
+ identity = client.get_caller_identity
23
+ out format(t("commands.test.output"), identity.account, identity.arn, identity.user_id)
24
+ rescue KeyError, Aws::Errors::NoSuchProfileError
25
+ error format(t("errors.NoSuchProfileError"), config.profile)
26
+ raise
27
+ rescue Aws::Errors::MissingCredentialsError
28
+ error t("errors.MissingCredentialsError")
29
+ raise
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require_relative "../actions/configure_profile"
2
+ require_relative "../actions/configure_role_assumption"
3
+
4
+ module AwsAssumeRole::Cli
5
+ desc t "commands.configure.desc"
6
+ long_desc t "commands.configure.long_desc"
7
+ command :configure do |c|
8
+ c.flag [:p, "profile"], desc: t("options.profile_name")
9
+ c.action do |global_options, options, args|
10
+ AwsAssumeRole::Cli::Actions::ConfigureProfile.new(global_options, options, args)
11
+ end
12
+
13
+ c.desc t "commands.configure.desc"
14
+ c.long_desc t "commands.configure.long_desc"
15
+ c.command :role do |r|
16
+ r.flag ["source-profile"], desc: t("options.source_profile")
17
+ r.flag ["role-session-name"], desc: t("options.role_session_name")
18
+ r.flag ["role-arn"], desc: t("options.role_arn")
19
+ r.flag ["mfa-serial"], desc: t("options.mfa_serial")
20
+ r.flag ["region"], desc: t("options.region")
21
+ r.flag ["external-id"], desc: t("options.external_id")
22
+ r.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
23
+
24
+ r.action do |global_options, options, args|
25
+ AwsAssumeRole::Cli::Actions::ConfigureRoleAssumption.new(global_options, options, args)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../actions/console"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.console.desc"
5
+ command :console do |c|
6
+ c.flag [:p, "profile"], desc: t("options.profile_name")
7
+ c.flag ["role-session-name"], desc: t("options.role_session_name")
8
+ c.flag ["role-arn"], desc: t("options.role_arn")
9
+ c.flag ["mfa-serial"], desc: t("options.mfa_serial")
10
+ c.flag ["region"], desc: t("options.region")
11
+ c.flag ["external-id"], desc: t("options.external_id")
12
+ c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
13
+ c.action do |global_options, options, args|
14
+ AwsAssumeRole::Cli::Actions::Console.new(global_options, options, args)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "../actions/delete_profile"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.delete.desc"
5
+ command :delete do |c|
6
+ c.flag [:p, "profile"], desc: t("options.profile_name")
7
+ c.action do |global_options, options, args|
8
+ AwsAssumeRole::Cli::Actions::DeleteProfile.new(global_options, options, args)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require_relative "../actions/set_environment"
2
+ require_relative "../actions/reset_environment"
3
+
4
+ module AwsAssumeRole::Cli
5
+ desc t "commands.set_environment.desc"
6
+ long_desc t "commands.set_environment.long_desc"
7
+ command :environment do |c|
8
+ desc t "commands.set_environment.desc"
9
+ long_desc t "commands.set_environment.long_desc"
10
+ c.command :set do |s|
11
+ s.flag [:p, "profile"], desc: t("options.profile_name")
12
+ s.flag [:s, "shell-type"], desc: t("options.shell_type"), default_value: "sh"
13
+ s.flag ["role-session-name"], desc: t("options.role_session_name")
14
+ s.flag ["role-arn"], desc: t("options.role_arn")
15
+ s.flag ["mfa-serial"], desc: t("options.mfa_serial")
16
+ s.flag ["region"], desc: t("options.region")
17
+ s.flag ["external-id"], desc: t("options.external_id")
18
+ s.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
19
+ s.action do |global_options, options, args|
20
+ AwsAssumeRole::Cli::Actions::SetEnvironment.new(global_options, options, args)
21
+ end
22
+ end
23
+
24
+ desc t "commands.reset_environment.desc"
25
+ long_desc t "commands.reset_environment.long_desc"
26
+ c.command :reset do |s|
27
+ s.action do |global_options, options, args|
28
+ AwsAssumeRole::Cli::Actions::ResetEnvironment.new(global_options, options, args)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,10 @@
1
+ require_relative "../actions/list_profiles"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.list.desc"
5
+ command :list do |c|
6
+ c.action do |global_options, options, args|
7
+ AwsAssumeRole::Cli::Actions::ListProfiles.new(global_options, options, args)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "../actions/migrate_profile"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.migrate.desc"
5
+ command :migrate do |c|
6
+ c.flag [:p, "profile"], desc: t("options.profile_name")
7
+ c.action do |global_options, options, args|
8
+ AwsAssumeRole::Cli::Actions::MigrateProfile.new(global_options, options, args)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../actions/run"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.run.desc"
5
+ command :run do |c|
6
+ c.flag [:p, "profile"], desc: t("options.profile_name")
7
+ c.flag ["role-session-name"], desc: t("options.role_session_name")
8
+ c.flag ["role-arn"], desc: t("options.role_arn")
9
+ c.flag ["mfa-serial"], desc: t("options.mfa_serial")
10
+ c.flag ["region"], desc: t("options.region")
11
+ c.flag ["external-id"], desc: t("options.external_id")
12
+ c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
13
+ c.action do |global_options, options, args|
14
+ AwsAssumeRole::Cli::Actions::Run.new(global_options, options, args)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "../actions/test"
2
+
3
+ module AwsAssumeRole::Cli
4
+ desc t "commands.test.desc"
5
+ command :test do |c|
6
+ c.flag [:p, "profile"], desc: t("options.profile_name")
7
+ c.flag ["role-session-name"], desc: t("options.role_session_name")
8
+ c.flag ["role-arn"], desc: t("options.role_arn")
9
+ c.flag ["mfa-serial"], desc: t("options.mfa_serial")
10
+ c.flag ["region"], desc: t("options.region")
11
+ c.flag ["external-id"], desc: t("options.external_id")
12
+ c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
13
+ c.switch ["no-profile"], desc: t("options.duration_seconds"), default_value: false
14
+ c.action do |global_options, options, args|
15
+ AwsAssumeRole::Cli::Actions::Test.new(global_options, options, args)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ require_relative "includes"
2
+
3
+ module AwsAssumeRole
4
+ class Configuration
5
+ extend Dry::Configurable
6
+ Types = Dry::Types.module
7
+
8
+ setting(:backend_plugin, ENV.fetch("AWS_ASSUME_ROLE_KEYRING_PLUGIN", nil)) do |value|
9
+ Types::Coercible::String[value]
10
+ end
11
+
12
+ setting(:backend, ENV.fetch("AWS_ASSUME_ROLE_KEYRING_BACKEND", "automatic")) do |value|
13
+ value == "automatic" ? nil : Types::Coercible::String[value]
14
+ end
15
+
16
+ setting(:log_level, ENV.fetch("AWS_ASSUME_ROLE_LOG_LEVEL", "WARN"))
17
+ end
18
+ Config = Configuration.config
19
+ end
@@ -0,0 +1,2 @@
1
+ require_relative "../../credentials/factories/default_chain_provider"
2
+ Aws.const_set :CredentialProviderChain, AwsAssumeRole::Credentials::Factories::DefaultChainProvider
@@ -0,0 +1,7 @@
1
+ require "aws-sdk"
2
+ module AwsAssumeRole
3
+ module CoreExt
4
+ module Aws
5
+ end
6
+ end
7
+ end