aws-sdk-core 3.89.1 → 3.90.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1276b6391ee9efb2f5431b60dc9dd4da4a81e339
4
- data.tar.gz: be1514be183e08a3c01d7a8f4ef0d859981adcfc
3
+ metadata.gz: 48e9cc30981ca093ed5e512279083c45f59f879a
4
+ data.tar.gz: 8dd4d2ca90e11bdc5df94f34091a03e6dd06bf00
5
5
  SHA512:
6
- metadata.gz: 4f43b95c970d6956c688d815ae409a64123a0b332c70cd138733c3a0704c823e9fc9f846dd523e3e6a8ccbd7095ede57e537cbc99a8f9fdb56e089d099a848a2
7
- data.tar.gz: 8edd46ef45895d8e898b58533629e092eac359f8180952f79a996b23238872cc3f8da702a1345a45d68e3b44129520857180b3f6cc9ec16696c0f2738ace7ac3
6
+ metadata.gz: aded2038fb2a36b8816f4f70d8342298a1dd1166272afe3c18f15cc8fd0e2f4368d6064f28f2009b401b0d9fbf9ecf827c77e87719839a538172613d422fab3d
7
+ data.tar.gz: fb9850aae375081eb31fddb3ea14df5c52d1cc73d2f86f2dd654fd1ff620f3e897bfe14e176afee48d13dfdae62d84e8fb968fa3fbe4d3b35849ee149908ed32
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.89.1
1
+ 3.90.0
@@ -1,7 +1,6 @@
1
1
  module Aws
2
2
  # @api private
3
3
  class CredentialProviderChain
4
-
5
4
  def initialize(config = nil)
6
5
  @config = config
7
6
  end
@@ -20,16 +19,16 @@ module Aws
20
19
  def providers
21
20
  [
22
21
  [:static_credentials, {}],
22
+ [:static_profile_assume_role_web_identity_credentials, {}],
23
+ [:static_profile_assume_role_credentials, {}],
24
+ [:static_profile_credentials, {}],
25
+ [:static_profile_process_credentials, {}],
23
26
  [:env_credentials, {}],
24
27
  [:assume_role_web_identity_credentials, {}],
25
28
  [:assume_role_credentials, {}],
26
29
  [:shared_credentials, {}],
27
30
  [:process_credentials, {}],
28
- [:instance_profile_credentials, {
29
- retries: @config ? @config.instance_profile_credentials_retries : 0,
30
- http_open_timeout: @config ? @config.instance_profile_credentials_timeout : 1,
31
- http_read_timeout: @config ? @config.instance_profile_credentials_timeout : 1,
32
- }],
31
+ [:instance_profile_credentials, {}]
33
32
  ]
34
33
  end
35
34
 
@@ -38,24 +37,50 @@ module Aws
38
37
  Credentials.new(
39
38
  options[:config].access_key_id,
40
39
  options[:config].secret_access_key,
41
- options[:config].session_token)
42
- else
43
- nil
40
+ options[:config].session_token
41
+ )
42
+ end
43
+ end
44
+
45
+ def static_profile_assume_role_web_identity_credentials(options)
46
+ if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
47
+ Aws.shared_config.assume_role_web_identity_credentials_from_config(options[:config].profile)
48
+ end
49
+ end
50
+
51
+ def static_profile_assume_role_credentials(options)
52
+ if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
53
+ assume_role_with_profile(options, options[:config].profile)
54
+ end
55
+ end
56
+
57
+ def static_profile_credentials(options)
58
+ if options[:config] && options[:config].profile
59
+ SharedCredentials.new(profile_name: options[:config].profile)
44
60
  end
61
+ rescue Errors::NoSuchProfileError
62
+ nil
63
+ end
64
+
65
+ def static_profile_process_credentials(options)
66
+ if Aws.shared_config.config_enabled? && options[:config] && options[:config].profile
67
+ process_provider = Aws.shared_config.credential_process(profile: options[:config].profile)
68
+ ProcessCredentials.new(process_provider) if process_provider
69
+ end
70
+ rescue Errors::NoSuchProfileError
71
+ nil
45
72
  end
46
73
 
47
- def env_credentials(options)
48
- key = %w(AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY)
49
- secret = %w(AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY)
50
- token = %w(AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN)
74
+ def env_credentials(_options)
75
+ key = %w[AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY]
76
+ secret = %w[AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY]
77
+ token = %w[AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN]
51
78
  Credentials.new(envar(key), envar(secret), envar(token))
52
79
  end
53
80
 
54
81
  def envar(keys)
55
82
  keys.each do |key|
56
- if ENV.key?(key)
57
- return ENV[key]
58
- end
83
+ return ENV[key] if ENV.key?(key)
59
84
  end
60
85
  nil
61
86
  end
@@ -72,12 +97,10 @@ module Aws
72
97
  end
73
98
 
74
99
  def process_credentials(options)
75
- config = Aws.shared_config
76
100
  profile_name = determine_profile_name(options)
77
- if config.config_enabled? && process_provider = config.credentials_process(profile_name)
101
+ if Aws.shared_config.config_enabled? &&
102
+ (process_provider = Aws.shared_config.credential_process(profile: profile_name))
78
103
  ProcessCredentials.new(process_provider)
79
- else
80
- nil
81
104
  end
82
105
  rescue Errors::NoSuchProfileError
83
106
  nil
@@ -85,15 +108,12 @@ module Aws
85
108
 
86
109
  def assume_role_credentials(options)
87
110
  if Aws.shared_config.config_enabled?
88
- assume_role_with_profile(options)
89
- else
90
- nil
111
+ assume_role_with_profile(options, determine_profile_name(options))
91
112
  end
92
113
  end
93
114
 
94
115
  def assume_role_web_identity_credentials(options)
95
- if (role_arn = ENV['AWS_ROLE_ARN']) &&
96
- (token_file = ENV['AWS_WEB_IDENTITY_TOKEN_FILE'])
116
+ if (role_arn = ENV['AWS_ROLE_ARN']) && (token_file = ENV['AWS_WEB_IDENTITY_TOKEN_FILE'])
97
117
  AssumeRoleWebIdentityCredentials.new(
98
118
  role_arn: role_arn,
99
119
  web_identity_token_file: token_file,
@@ -102,21 +122,18 @@ module Aws
102
122
  elsif Aws.shared_config.config_enabled?
103
123
  profile = options[:config].profile if options[:config]
104
124
  Aws.shared_config.assume_role_web_identity_credentials_from_config(profile)
105
- else
106
- nil
107
125
  end
108
126
  end
109
127
 
110
128
  def instance_profile_credentials(options)
111
- if ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
129
+ if ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']
112
130
  ECSCredentials.new(options)
113
131
  else
114
132
  InstanceProfileCredentials.new(options)
115
133
  end
116
134
  end
117
135
 
118
- def assume_role_with_profile(options)
119
- profile_name = determine_profile_name(options)
136
+ def assume_role_with_profile(options, profile_name)
120
137
  region = (options[:config] && options[:config].region)
121
138
  Aws.shared_config.assume_role_credentials_from_config(
122
139
  profile: profile_name,
@@ -124,6 +141,5 @@ module Aws
124
141
  chain_config: @config
125
142
  )
126
143
  end
127
-
128
144
  end
129
145
  end
@@ -222,8 +222,8 @@ This is typically the result of an invalid `:region` option or a
222
222
  poorly formatted `:endpoint` option.
223
223
 
224
224
  * Avoid configuring the `:endpoint` option directly. Endpoints are constructed
225
- from the `:region`. The `:endpoint` option is reserved for connecting to
226
- non-standard test endpoints.
225
+ from the `:region`. The `:endpoint` option is reserved for certain services
226
+ or for connecting to non-standard test endpoints.
227
227
 
228
228
  * Not every service is available in every region.
229
229
 
@@ -11,7 +11,7 @@ module Aws
11
11
  #
12
12
  # @api private
13
13
  # begin
14
- SENSITIVE = [:access_token, :account_name, :account_password, :address, :admin_contact, :admin_password, :alexa_for_business_room_arn, :artifact_credentials, :auth_code, :authentication_token, :authorization_result, :backup_plan_tags, :backup_vault_tags, :base_32_string_seed, :block, :block_address, :block_data, :blocks, :body, :bot_configuration, :bot_email, :calling_name, :cause, :client_id, :client_request_token, :client_secret, :comment, :configuration, :copy_source_sse_customer_key, :credentials, :current_password, :custom_attributes, :custom_private_key, :db_password, :default_phone_number, :definition, :description, :destination_access_token, :digest_tip_address, :display_name, :domain_signing_private_key, :e164_phone_number, :email, :email_address, :email_message, :embed_url, :error, :external_model_endpoint_data_blobs, :external_user_id, :feedback_token, :file, :first_name, :full_name, :host_key, :id, :id_token, :input, :input_text, :ion_text, :join_token, :key_id, :key_material, :key_store_password, :kms_key_id, :kms_master_key_id, :lambda_function_arn, :last_name, :local_console_password, :master_account_email, :master_user_password, :meeting_host_id, :message, :metadata, :name, :new_password, :next_password, :notes, :number, :old_password, :outbound_events_https_endpoint, :output, :owner_information, :parameters, :passphrase, :password, :payload, :phone_number, :plaintext, :previous_password, :primary_email, :primary_provisioned_number, :private_key, :private_key_plaintext, :proof, :proposed_password, :public_key, :qr_code_png, :query, :random_password, :recovery_point_tags, :refresh_token, :registrant_contact, :request_attributes, :restore_metadata, :revision, :search_query, :secret_access_key, :secret_binary, :secret_code, :secret_hash, :secret_string, :secret_to_authenticate_initiator, :secret_to_authenticate_target, :security_token, :service_password, :session_attributes, :session_token, :share_notes, :shared_secret, :slots, :sns_topic_arn, :source_access_token, :sqs_queue_arn, :sse_customer_key, :ssekms_encryption_context, :ssekms_key_id, :status_message, :tag_key_list, :tags, :target_address, :task_parameters, :tech_contact, :temporary_password, :text, :token, :trust_password, :type, :upload_credentials, :upload_url, :uri, :user_data, :user_email, :user_name, :user_password, :username, :value, :values, :variables, :vpn_psk, :zip_file]
14
+ SENSITIVE = [:access_token, :account_name, :account_password, :address, :admin_contact, :admin_password, :alexa_for_business_room_arn, :artifact_credentials, :auth_code, :authentication_token, :authorization_result, :backup_plan_tags, :backup_vault_tags, :base_32_string_seed, :block, :block_address, :block_data, :blocks, :body, :bot_configuration, :bot_email, :calling_name, :cause, :client_id, :client_request_token, :client_secret, :comment, :configuration, :copy_source_sse_customer_key, :credentials, :current_password, :custom_attributes, :custom_private_key, :db_password, :default_phone_number, :definition, :description, :destination_access_token, :digest_tip_address, :display_name, :domain_signing_private_key, :e164_phone_number, :email, :email_address, :email_message, :embed_url, :error, :external_model_endpoint_data_blobs, :external_user_id, :feedback_token, :file, :first_name, :full_name, :host_key, :id, :id_token, :input, :input_text, :ion_text, :join_token, :key_id, :key_material, :key_store_password, :kms_key_id, :kms_master_key_id, :lambda_function_arn, :last_name, :local_console_password, :master_account_email, :master_user_name, :master_user_password, :meeting_host_id, :message, :metadata, :name, :new_password, :next_password, :notes, :number, :old_password, :outbound_events_https_endpoint, :output, :owner_information, :parameters, :passphrase, :password, :payload, :phone_number, :plaintext, :previous_password, :primary_email, :primary_provisioned_number, :private_key, :private_key_plaintext, :proof, :proposed_password, :public_key, :qr_code_png, :query, :random_password, :recovery_point_tags, :refresh_token, :registrant_contact, :request_attributes, :restore_metadata, :revision, :search_query, :secret_access_key, :secret_binary, :secret_code, :secret_hash, :secret_string, :secret_to_authenticate_initiator, :secret_to_authenticate_target, :security_token, :service_password, :session_attributes, :session_token, :share_notes, :shared_secret, :slots, :sns_topic_arn, :source_access_token, :sqs_queue_arn, :sse_customer_key, :ssekms_encryption_context, :ssekms_key_id, :status_message, :tag_key_list, :tags, :target_address, :task_parameters, :tech_contact, :temporary_password, :text, :token, :trust_password, :type, :upload_credentials, :upload_url, :uri, :user_data, :user_email, :user_name, :user_password, :username, :value, :values, :variables, :vpn_psk, :zip_file]
15
15
  # end
16
16
 
17
17
  def initialize(options = {})
@@ -142,7 +142,7 @@ module Aws
142
142
  end
143
143
  when BlobShape
144
144
  unless value.is_a?(String) || io_like?(value)
145
- errors << expected_got(context, "a String or File object", value)
145
+ errors << expected_got(context, "a String or IO object", value)
146
146
  end
147
147
  else
148
148
  raise "unhandled shape type: #{ref.shape.class.name}"
@@ -166,8 +166,7 @@ module Aws
166
166
  end
167
167
 
168
168
  def io_like?(value)
169
- value.respond_to?(:read) && value.respond_to?(:rewind) &&
170
- value.respond_to?(:size)
169
+ value.respond_to?(:read) && value.respond_to?(:rewind)
171
170
  end
172
171
 
173
172
  def error_messages(errors)
@@ -151,7 +151,7 @@ the background every 60 secs (default). Defaults to `false`.
151
151
 
152
152
  def self.resolve_endpoint_discovery(cfg)
153
153
  env = ENV['AWS_ENABLE_ENDPOINT_DISCOVERY']
154
- shared_cfg = Aws.shared_config.endpoint_discovery(profile: cfg.profile)
154
+ shared_cfg = Aws.shared_config.endpoint_discovery_enabled(profile: cfg.profile)
155
155
  Aws::Util.str_2_bool(env) || Aws::Util.str_2_bool(shared_cfg)
156
156
  end
157
157
 
@@ -8,12 +8,10 @@ module Aws
8
8
 
9
9
  # @api private
10
10
  class Handler < Seahorse::Client::Handler
11
-
12
11
  def call(context)
13
12
  if streaming?(context.operation.input)
14
- begin
15
- context.http_request.body.size
16
- rescue
13
+ # If it's an IO object and not a File / String / String IO
14
+ unless context.http_request.body.respond_to?(:size)
17
15
  if requires_length?(context.operation.input)
18
16
  # if size of the IO is not available but required
19
17
  raise Aws::Errors::MissingContentLength.new
@@ -1,8 +1,6 @@
1
1
  module Aws
2
-
3
2
  # @api private
4
3
  class SharedConfig
5
-
6
4
  # @return [String]
7
5
  attr_reader :credentials_path
8
6
 
@@ -48,7 +46,7 @@ module Aws
48
46
  @profile_name = determine_profile(options)
49
47
  @config_enabled = options[:config_enabled]
50
48
  @credentials_path = options[:credentials_path] ||
51
- determine_credentials_path
49
+ determine_credentials_path
52
50
  @parsed_credentials = {}
53
51
  load_credentials_file if loadable?(@credentials_path)
54
52
  if @config_enabled
@@ -67,7 +65,7 @@ module Aws
67
65
  @config_enabled = options[:config_enabled] ? true : false
68
66
  @profile_name = determine_profile(options)
69
67
  @credentials_path = options[:credentials_path] ||
70
- determine_credentials_path
68
+ determine_credentials_path
71
69
  load_credentials_file if loadable?(@credentials_path)
72
70
  if @config_enabled
73
71
  @config_path = options[:config_path] || determine_config_path
@@ -123,155 +121,51 @@ module Aws
123
121
  p = profile || @profile_name
124
122
  if @config_enabled && @parsed_config
125
123
  entry = @parsed_config.fetch(p, {})
126
- if entry['web_identity_token_file'] &&
127
- entry['role_arn']
124
+ if entry['web_identity_token_file'] && entry['role_arn']
128
125
  AssumeRoleWebIdentityCredentials.new(
129
126
  role_arn: entry['role_arn'],
130
127
  web_identity_token_file: entry['web_identity_token_file'],
131
128
  role_session_name: entry['role_session_name']
132
129
  )
133
- else
134
- nil
135
- end
136
- else
137
- nil
138
- end
139
- end
140
-
141
- def region(opts = {})
142
- p = opts[:profile] || @profile_name
143
- if @config_enabled
144
- if @parsed_credentials
145
- region = @parsed_credentials.fetch(p, {})["region"]
146
- end
147
- if @parsed_config
148
- region ||= @parsed_config.fetch(p, {})["region"]
149
- end
150
- region
151
- else
152
- nil
153
- end
154
- end
155
-
156
- def sts_regional_endpoints(opts = {})
157
- p = opts[:profile] || @profile_name
158
- if @config_enabled
159
- if @parsed_credentials
160
- mode = @parsed_credentials.fetch(p, {})["sts_regional_endpoints"]
161
- end
162
- if @parsed_config
163
- mode ||= @parsed_config.fetch(p, {})["sts_regional_endpoints"]
164
- end
165
- mode
166
- else
167
- nil
168
- end
169
- end
170
-
171
- def s3_us_east_1_regional_endpoint(opts = {})
172
- p = opts[:profile] || @profile_name
173
- if @config_enabled
174
- if @parsed_credentials
175
- mode = @parsed_credentials.fetch(p, {})["s3_us_east_1_regional_endpoint"]
176
- end
177
- if @parsed_config
178
- mode ||= @parsed_config.fetch(p, {})["s3_us_east_1_regional_endpoint"]
179
130
  end
180
- mode
181
- else
182
- nil
183
131
  end
184
132
  end
185
133
 
186
- def s3_use_arn_region(opts = {})
187
- p = opts[:profile] || @profile_name
188
- if @config_enabled
189
- if @parsed_credentials
190
- value = @parsed_credentials.fetch(p, {})["s3_use_arn_region"]
191
- end
192
- if @parsed_config
193
- value ||= @parsed_config.fetch(p, {})["s3_use_arn_region"]
194
- end
195
- value
196
- else
197
- nil
134
+ # Add an accessor method (similar to attr_reader) to return a configuration value
135
+ # Uses the get_config_value below to control where
136
+ # values are loaded from
137
+ def self.config_reader(*attrs)
138
+ attrs.each do |attr|
139
+ define_method(attr) { |opts = {}| get_config_value(attr.to_s, opts) }
198
140
  end
199
141
  end
200
142
 
201
- def endpoint_discovery(opts = {})
202
- p = opts[:profile] || @profile_name
203
- if @config_enabled && @parsed_config
204
- @parsed_config.fetch(p, {})["endpoint_discovery_enabled"]
205
- end
206
- end
207
-
208
- def credentials_process(profile)
209
- validate_profile_exists(profile)
210
- @parsed_config[profile]['credential_process']
211
- end
143
+ config_reader(
144
+ :credential_process,
145
+ :csm_client_id,
146
+ :csm_enabled,
147
+ :csm_host,
148
+ :csm_port,
149
+ :endpoint_discovery_enabled,
150
+ :region,
151
+ :s3_use_arn_region,
152
+ :s3_us_east_1_regional_endpoint,
153
+ :sts_regional_endpoints
154
+ )
212
155
 
213
- def csm_enabled(opts = {})
214
- p = opts[:profile] || @profile_name
215
- if @config_enabled
216
- if @parsed_credentials
217
- value = @parsed_credentials.fetch(p, {})["csm_enabled"]
218
- end
219
- if @parsed_config
220
- value ||= @parsed_config.fetch(p, {})["csm_enabled"]
221
- end
222
- value
223
- else
224
- nil
225
- end
226
- end
156
+ private
227
157
 
228
- def csm_client_id(opts = {})
158
+ # Get a config value from from shared credential/config files.
159
+ # Only loads a value when config_enabled is true
160
+ # Return a value from credentials preferentially over config
161
+ def get_config_value(key, opts)
229
162
  p = opts[:profile] || @profile_name
230
- if @config_enabled
231
- if @parsed_credentials
232
- value = @parsed_credentials.fetch(p, {})["csm_client_id"]
233
- end
234
- if @parsed_config
235
- value ||= @parsed_config.fetch(p, {})["csm_client_id"]
236
- end
237
- value
238
- else
239
- nil
240
- end
241
- end
242
163
 
243
- def csm_port(opts = {})
244
- p = opts[:profile] || @profile_name
245
- if @config_enabled
246
- if @parsed_credentials
247
- value = @parsed_credentials.fetch(p, {})["csm_port"]
248
- end
249
- if @parsed_config
250
- value ||= @parsed_config.fetch(p, {})["csm_port"]
251
- end
252
- value
253
- else
254
- nil
255
- end
164
+ value = @parsed_credentials.fetch(p, {})[key] if @parsed_credentials
165
+ value ||= @parsed_config.fetch(p, {})[key] if @config_enabled && @parsed_config
166
+ value
256
167
  end
257
168
 
258
- def csm_host(opts = {})
259
- p = opts[:profile] || @profile_name
260
- if @config_enabled
261
- if @parsed_credentials
262
- value = @parsed_credentials.fetch(p, {})["csm_host"]
263
- end
264
- if @parsed_config
265
- value ||= @parsed_config.fetch(p, {})["csm_host"]
266
- end
267
- value
268
- else
269
- nil
270
- end
271
- end
272
-
273
- private
274
-
275
169
  def credentials_present?
276
170
  (@parsed_credentials && !@parsed_credentials.empty?) ||
277
171
  (@parsed_config && !@parsed_config.empty?)
@@ -279,31 +173,28 @@ module Aws
279
173
 
280
174
  def assume_role_from_profile(cfg, profile, opts, chain_config)
281
175
  if cfg && prof_cfg = cfg[profile]
282
- opts[:source_profile] ||= prof_cfg["source_profile"]
176
+ opts[:source_profile] ||= prof_cfg['source_profile']
283
177
  credential_source = opts.delete(:credential_source)
284
- credential_source ||= prof_cfg["credential_source"]
178
+ credential_source ||= prof_cfg['credential_source']
285
179
  if opts[:source_profile] && credential_source
286
- raise Errors::CredentialSourceConflictError.new(
287
- "Profile #{profile} has a source_profile, and "\
288
- "a credential_source. For assume role credentials, must "\
289
- "provide only source_profile or credential_source, not both."
290
- )
180
+ raise Errors::CredentialSourceConflictError,
181
+ "Profile #{profile} has a source_profile, and "\
182
+ 'a credential_source. For assume role credentials, must '\
183
+ 'provide only source_profile or credential_source, not both.'
291
184
  elsif opts[:source_profile]
292
185
  opts[:credentials] = resolve_source_profile(opts[:source_profile])
293
186
  if opts[:credentials]
294
- opts[:role_session_name] ||= prof_cfg["role_session_name"]
295
- opts[:role_session_name] ||= "default_session"
296
- opts[:role_arn] ||= prof_cfg["role_arn"]
297
- opts[:duration_seconds] ||= prof_cfg["duration_seconds"]
298
- opts[:external_id] ||= prof_cfg["external_id"]
299
- opts[:serial_number] ||= prof_cfg["mfa_serial"]
187
+ opts[:role_session_name] ||= prof_cfg['role_session_name']
188
+ opts[:role_session_name] ||= 'default_session'
189
+ opts[:role_arn] ||= prof_cfg['role_arn']
190
+ opts[:duration_seconds] ||= prof_cfg['duration_seconds']
191
+ opts[:external_id] ||= prof_cfg['external_id']
192
+ opts[:serial_number] ||= prof_cfg['mfa_serial']
300
193
  opts[:profile] = opts.delete(:source_profile)
301
194
  AssumeRoleCredentials.new(opts)
302
195
  else
303
- raise Errors::NoSourceProfileError.new(
304
- "Profile #{profile} has a role_arn, and source_profile, but the"\
305
- " source_profile does not have credentials."
306
- )
196
+ raise Errors::NoSourceProfileError, "Profile #{profile} has a role_arn, and source_profile, but the"\
197
+ ' source_profile does not have credentials.'
307
198
  end
308
199
  elsif credential_source
309
200
  opts[:credentials] = credentials_from_source(
@@ -311,29 +202,21 @@ module Aws
311
202
  chain_config
312
203
  )
313
204
  if opts[:credentials]
314
- opts[:role_session_name] ||= prof_cfg["role_session_name"]
315
- opts[:role_session_name] ||= "default_session"
316
- opts[:role_arn] ||= prof_cfg["role_arn"]
317
- opts[:duration_seconds] ||= prof_cfg["duration_seconds"]
318
- opts[:external_id] ||= prof_cfg["external_id"]
319
- opts[:serial_number] ||= prof_cfg["mfa_serial"]
205
+ opts[:role_session_name] ||= prof_cfg['role_session_name']
206
+ opts[:role_session_name] ||= 'default_session'
207
+ opts[:role_arn] ||= prof_cfg['role_arn']
208
+ opts[:duration_seconds] ||= prof_cfg['duration_seconds']
209
+ opts[:external_id] ||= prof_cfg['external_id']
210
+ opts[:serial_number] ||= prof_cfg['mfa_serial']
320
211
  opts.delete(:source_profile) # Cleanup
321
212
  AssumeRoleCredentials.new(opts)
322
213
  else
323
- raise Errors::NoSourceCredentials.new(
324
- "Profile #{profile} could not get source credentials from"\
214
+ raise Errors::NoSourceCredentials, "Profile #{profile} could not get source credentials from"\
325
215
  " provider #{credential_source}"
326
- )
327
216
  end
328
- elsif prof_cfg["role_arn"]
329
- raise Errors::NoSourceProfileError.new(
330
- "Profile #{profile} has a role_arn, but no source_profile."
331
- )
332
- else
333
- nil
217
+ elsif prof_cfg['role_arn']
218
+ raise Errors::NoSourceProfileError, "Profile #{profile} has a role_arn, but no source_profile."
334
219
  end
335
- else
336
- nil
337
220
  end
338
221
  end
339
222
 
@@ -341,51 +224,42 @@ module Aws
341
224
  if (creds = credentials(profile: profile))
342
225
  creds # static credentials
343
226
  elsif (provider = assume_role_web_identity_credentials_from_config(profile))
344
- if provider.credentials.set?
345
- provider.credentials
346
- end
227
+ provider.credentials if provider.credentials.set?
347
228
  elsif (provider = assume_role_process_credentials_from_config(profile))
348
- if provider.credentials.set?
349
- provider.credentials
350
- end
229
+ provider.credentials if provider.credentials.set?
351
230
  end
352
231
  end
353
232
 
354
233
  def credentials_from_source(credential_source, config)
355
234
  case credential_source
356
- when "Ec2InstanceMetadata"
235
+ when 'Ec2InstanceMetadata'
357
236
  InstanceProfileCredentials.new(
358
237
  retries: config ? config.instance_profile_credentials_retries : 0,
359
238
  http_open_timeout: config ? config.instance_profile_credentials_timeout : 1,
360
239
  http_read_timeout: config ? config.instance_profile_credentials_timeout : 1
361
240
  )
362
- when "EcsContainer"
241
+ when 'EcsContainer'
363
242
  ECSCredentials.new
364
243
  else
365
- raise Errors::InvalidCredentialSourceError.new(
366
- "Unsupported credential_source: #{credential_source}"
367
- )
244
+ raise Errors::InvalidCredentialSourceError, "Unsupported credential_source: #{credential_source}"
368
245
  end
369
246
  end
370
247
 
371
248
  def assume_role_process_credentials_from_config(profile)
372
- credential_process = credentials_process(profile)
249
+ validate_profile_exists(profile)
250
+ credential_process = @parsed_config[profile]['credential_process']
373
251
  ProcessCredentials.new(credential_process) if credential_process
374
252
  end
375
253
 
376
- def credentials_from_shared(profile, opts)
254
+ def credentials_from_shared(profile, _opts)
377
255
  if @parsed_credentials && prof_config = @parsed_credentials[profile]
378
256
  credentials_from_profile(prof_config)
379
- else
380
- nil
381
257
  end
382
258
  end
383
259
 
384
- def credentials_from_config(profile, opts)
260
+ def credentials_from_config(profile, _opts)
385
261
  if @parsed_config && prof_config = @parsed_config[profile]
386
262
  credentials_from_profile(prof_config)
387
- else
388
- nil
389
263
  end
390
264
  end
391
265
 
@@ -395,15 +269,7 @@ module Aws
395
269
  prof_config['aws_secret_access_key'],
396
270
  prof_config['aws_session_token']
397
271
  )
398
- if credentials_complete(creds)
399
- creds
400
- else
401
- nil
402
- end
403
- end
404
-
405
- def credentials_complete(creds)
406
- creds.set?
272
+ creds if creds.set?
407
273
  end
408
274
 
409
275
  def load_credentials_file
@@ -433,19 +299,18 @@ module Aws
433
299
 
434
300
  def validate_profile_exists(profile)
435
301
  unless (@parsed_credentials && @parsed_credentials[profile]) ||
436
- (@parsed_config && @parsed_config[profile])
302
+ (@parsed_config && @parsed_config[profile])
437
303
  msg = "Profile `#{profile}' not found in #{@credentials_path}"
438
304
  msg << " or #{@config_path}" if @config_path
439
- raise Errors::NoSuchProfileError.new(msg)
305
+ raise Errors::NoSuchProfileError, msg
440
306
  end
441
307
  end
442
308
 
443
309
  def determine_profile(options)
444
310
  ret = options[:profile_name]
445
- ret ||= ENV["AWS_PROFILE"]
446
- ret ||= "default"
311
+ ret ||= ENV['AWS_PROFILE']
312
+ ret ||= 'default'
447
313
  ret
448
314
  end
449
-
450
315
  end
451
316
  end
data/lib/aws-sdk-sts.rb CHANGED
@@ -40,6 +40,6 @@ require_relative 'aws-sdk-sts/customizations'
40
40
  # @service
41
41
  module Aws::STS
42
42
 
43
- GEM_VERSION = '3.89.1'
43
+ GEM_VERSION = '3.90.0'
44
44
 
45
45
  end
@@ -2131,7 +2131,7 @@ module Aws::STS
2131
2131
  params: params,
2132
2132
  config: config)
2133
2133
  context[:gem_name] = 'aws-sdk-core'
2134
- context[:gem_version] = '3.89.1'
2134
+ context[:gem_version] = '3.90.0'
2135
2135
  Seahorse::Client::Request.new(handlers, context)
2136
2136
  end
2137
2137
 
@@ -306,10 +306,7 @@ module Seahorse
306
306
  now = Aws::Util.monotonic_milliseconds
307
307
  @pool.each_pair do |endpoint,sessions|
308
308
  sessions.delete_if do |session|
309
- if
310
- session.last_used.nil? or
311
- now - session.last_used > http_idle_timeout * 1000
312
- then
309
+ if session.last_used.nil? or now - session.last_used > http_idle_timeout * 1000
313
310
  session.finish
314
311
  true
315
312
  end
@@ -7,12 +7,10 @@ module Seahorse
7
7
  class Handler < Client::Handler
8
8
 
9
9
  def call(context)
10
- begin
10
+ # If it's an IO object and not a File / String / String IO
11
+ if context.http_request.body.respond_to?(:size)
11
12
  length = context.http_request.body.size
12
13
  context.http_request.headers['Content-Length'] = length
13
- rescue
14
- # allowing `Content-Length` failed to be set
15
- # see Aws::Plugins::TransferEncoding
16
14
  end
17
15
  @handler.call(context)
18
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.89.1
4
+ version: 3.90.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-14 00:00:00.000000000 Z
11
+ date: 2020-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jmespath