aws-sdk-core 3.191.1 → 3.228.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 +4 -4
- data/CHANGELOG.md +530 -1
- data/VERSION +1 -1
- data/lib/aws-defaults/default_configuration.rb +1 -2
- data/lib/aws-defaults.rb +4 -1
- data/lib/aws-sdk-core/arn.rb +1 -3
- data/lib/aws-sdk-core/assume_role_credentials.rb +13 -5
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +14 -7
- data/lib/aws-sdk-core/binary/decode_handler.rb +3 -9
- data/lib/aws-sdk-core/binary/encode_handler.rb +1 -1
- data/lib/aws-sdk-core/binary/event_builder.rb +34 -37
- data/lib/aws-sdk-core/binary/event_stream_decoder.rb +1 -0
- data/lib/aws-sdk-core/binary/event_stream_encoder.rb +4 -3
- data/lib/aws-sdk-core/cbor/decoder.rb +308 -0
- data/lib/aws-sdk-core/cbor/encoder.rb +243 -0
- data/lib/aws-sdk-core/cbor.rb +53 -0
- data/lib/aws-sdk-core/client_side_monitoring.rb +9 -0
- data/lib/aws-sdk-core/client_stubs.rb +30 -55
- data/lib/aws-sdk-core/credential_provider.rb +4 -0
- data/lib/aws-sdk-core/credential_provider_chain.rb +38 -11
- data/lib/aws-sdk-core/credentials.rb +19 -6
- data/lib/aws-sdk-core/ec2_metadata.rb +1 -1
- data/lib/aws-sdk-core/ecs_credentials.rb +1 -0
- data/lib/aws-sdk-core/endpoints/endpoint.rb +3 -1
- data/lib/aws-sdk-core/endpoints/matchers.rb +8 -10
- data/lib/aws-sdk-core/endpoints.rb +101 -21
- data/lib/aws-sdk-core/error_handler.rb +46 -0
- data/lib/aws-sdk-core/errors.rb +11 -2
- data/lib/aws-sdk-core/event_emitter.rb +1 -17
- data/lib/aws-sdk-core/instance_profile_credentials.rb +148 -158
- data/lib/aws-sdk-core/json/builder.rb +8 -1
- data/lib/aws-sdk-core/json/error_handler.rb +29 -13
- data/lib/aws-sdk-core/json/handler.rb +6 -6
- data/lib/aws-sdk-core/json/json_engine.rb +3 -1
- data/lib/aws-sdk-core/json/oj_engine.rb +7 -1
- data/lib/aws-sdk-core/json/parser.rb +6 -1
- data/lib/aws-sdk-core/json.rb +43 -14
- data/lib/aws-sdk-core/log/param_filter.rb +2 -2
- data/lib/aws-sdk-core/log/param_formatter.rb +7 -3
- data/lib/aws-sdk-core/log.rb +10 -0
- data/lib/aws-sdk-core/lru_cache.rb +75 -0
- data/lib/aws-sdk-core/pageable_response.rb +1 -1
- data/lib/aws-sdk-core/param_validator.rb +7 -2
- data/lib/aws-sdk-core/plugins/bearer_authorization.rb +2 -0
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +332 -169
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +0 -1
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +87 -68
- data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +40 -32
- data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
- data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -8
- data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
- data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +3 -1
- data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -24
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +6 -8
- data/lib/aws-sdk-core/plugins/protocols/query.rb +4 -2
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +3 -15
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +3 -0
- data/lib/aws-sdk-core/plugins/protocols/rpc_v2.rb +17 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +74 -25
- data/lib/aws-sdk-core/plugins/request_compression.rb +11 -2
- data/lib/aws-sdk-core/plugins/retry_errors.rb +10 -3
- data/lib/aws-sdk-core/plugins/sign.rb +42 -26
- data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -1
- data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -1
- data/lib/aws-sdk-core/plugins/stub_responses.rb +58 -9
- data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
- data/lib/aws-sdk-core/plugins/transfer_encoding.rb +16 -9
- data/lib/aws-sdk-core/plugins/user_agent.rb +101 -26
- data/lib/aws-sdk-core/plugins.rb +39 -0
- data/lib/aws-sdk-core/process_credentials.rb +48 -29
- data/lib/aws-sdk-core/query/ec2_handler.rb +27 -0
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +5 -7
- data/lib/aws-sdk-core/query/handler.rb +4 -4
- data/lib/aws-sdk-core/query/param_builder.rb +2 -2
- data/lib/aws-sdk-core/query.rb +2 -1
- data/lib/aws-sdk-core/resources.rb +8 -0
- data/lib/aws-sdk-core/rest/content_type_handler.rb +60 -0
- data/lib/aws-sdk-core/rest/handler.rb +3 -4
- data/lib/aws-sdk-core/rest/request/body.rb +32 -5
- data/lib/aws-sdk-core/rest/request/endpoint.rb +24 -4
- data/lib/aws-sdk-core/rest/request/headers.rb +15 -7
- data/lib/aws-sdk-core/rest/request/querystring_builder.rb +23 -11
- data/lib/aws-sdk-core/rest/response/body.rb +15 -1
- data/lib/aws-sdk-core/rest/response/header_list_parser.rb +79 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +8 -3
- data/lib/aws-sdk-core/rest.rb +1 -0
- data/lib/aws-sdk-core/rpc_v2/builder.rb +62 -0
- data/lib/aws-sdk-core/rpc_v2/cbor_engine.rb +18 -0
- data/lib/aws-sdk-core/rpc_v2/content_type_handler.rb +47 -0
- data/lib/aws-sdk-core/rpc_v2/error_handler.rb +95 -0
- data/lib/aws-sdk-core/rpc_v2/handler.rb +79 -0
- data/lib/aws-sdk-core/rpc_v2/parser.rb +98 -0
- data/lib/aws-sdk-core/rpc_v2.rb +69 -0
- data/lib/aws-sdk-core/shared_config.rb +79 -22
- data/lib/aws-sdk-core/shared_credentials.rb +1 -7
- data/lib/aws-sdk-core/sso_credentials.rb +4 -1
- data/lib/aws-sdk-core/static_token_provider.rb +1 -2
- data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +12 -11
- data/lib/aws-sdk-core/stubbing/protocols/json.rb +11 -10
- data/lib/aws-sdk-core/stubbing/protocols/query.rb +7 -6
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +2 -1
- data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +9 -8
- data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +6 -5
- data/lib/aws-sdk-core/stubbing/protocols/rpc_v2.rb +39 -0
- data/lib/aws-sdk-core/stubbing.rb +22 -0
- data/lib/aws-sdk-core/telemetry/base.rb +177 -0
- data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
- data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
- data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
- data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
- data/lib/aws-sdk-core/telemetry.rb +78 -0
- data/lib/aws-sdk-core/token.rb +3 -3
- data/lib/aws-sdk-core/token_provider.rb +4 -0
- data/lib/aws-sdk-core/token_provider_chain.rb +2 -6
- data/lib/aws-sdk-core/util.rb +41 -1
- data/lib/aws-sdk-core/waiters/poller.rb +10 -5
- data/lib/aws-sdk-core/xml/builder.rb +17 -9
- data/lib/aws-sdk-core/xml/error_handler.rb +35 -43
- data/lib/aws-sdk-core/xml/parser/frame.rb +4 -20
- data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
- data/lib/aws-sdk-core/xml/parser.rb +2 -6
- data/lib/aws-sdk-core.rb +82 -107
- data/lib/aws-sdk-sso/client.rb +185 -89
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-sso/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-sso/endpoints.rb +2 -54
- data/lib/aws-sdk-sso/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-sso/types.rb +1 -0
- data/lib/aws-sdk-sso.rb +15 -11
- data/lib/aws-sdk-ssooidc/client.rb +270 -109
- data/lib/aws-sdk-ssooidc/client_api.rb +33 -0
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-ssooidc/endpoints.rb +2 -54
- data/lib/aws-sdk-ssooidc/errors.rb +21 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-ssooidc/types.rb +125 -24
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +393 -141
- data/lib/aws-sdk-sts/client_api.rb +36 -8
- data/lib/aws-sdk-sts/customizations.rb +5 -1
- data/lib/aws-sdk-sts/endpoint_parameters.rb +10 -9
- data/lib/aws-sdk-sts/endpoint_provider.rb +50 -55
- data/lib/aws-sdk-sts/endpoints.rb +2 -118
- data/lib/aws-sdk-sts/errors.rb +15 -0
- data/lib/aws-sdk-sts/plugins/endpoints.rb +19 -28
- data/lib/aws-sdk-sts/presigner.rb +2 -6
- data/lib/aws-sdk-sts/types.rb +171 -28
- data/lib/aws-sdk-sts.rb +15 -11
- data/lib/seahorse/client/async_base.rb +4 -5
- data/lib/seahorse/client/async_response.rb +19 -0
- data/lib/seahorse/client/base.rb +18 -21
- data/lib/seahorse/client/h2/connection.rb +18 -28
- data/lib/seahorse/client/h2/handler.rb +14 -3
- data/lib/seahorse/client/handler.rb +1 -1
- data/lib/seahorse/client/http/response.rb +1 -1
- data/lib/seahorse/client/net_http/connection_pool.rb +15 -12
- data/lib/seahorse/client/net_http/handler.rb +21 -9
- data/lib/seahorse/client/networking_error.rb +1 -1
- data/lib/seahorse/client/plugin.rb +8 -0
- data/lib/seahorse/client/plugins/endpoint.rb +0 -1
- data/lib/seahorse/client/plugins/h2.rb +4 -4
- data/lib/seahorse/client/plugins/net_http.rb +57 -16
- data/lib/seahorse/client/request_context.rb +9 -2
- data/lib/seahorse/client/response.rb +2 -0
- data/lib/seahorse/model/shapes.rb +2 -2
- data/lib/seahorse/util.rb +2 -1
- data/sig/aws-sdk-core/async_client_stubs.rbs +21 -0
- data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
- data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
- data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
- data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
- data/sig/seahorse/client/async_base.rbs +18 -0
- metadata +96 -23
- /data/lib/aws-sdk-core/xml/parser/{engines/libxml.rb → libxml_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/nokogiri.rb → nokogiri_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/oga.rb → oga_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/ox.rb → ox_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/rexml.rb → rexml_engine.rb} +0 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'cbor'
|
4
|
+
require_relative 'rpc_v2/builder'
|
5
|
+
require_relative 'rpc_v2/content_type_handler'
|
6
|
+
require_relative 'rpc_v2/error_handler'
|
7
|
+
require_relative 'rpc_v2/handler'
|
8
|
+
require_relative 'rpc_v2/parser'
|
9
|
+
|
10
|
+
module Aws
|
11
|
+
# @api private
|
12
|
+
module RpcV2
|
13
|
+
class << self
|
14
|
+
# @param [Symbol,Class] engine
|
15
|
+
# Must be one of the following values:
|
16
|
+
#
|
17
|
+
# * :cbor
|
18
|
+
#
|
19
|
+
def engine=(engine)
|
20
|
+
@engine = Class === engine ? engine : load_engine(engine)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Class] Returns the default engine.
|
24
|
+
# One of:
|
25
|
+
#
|
26
|
+
# * {CborEngine}
|
27
|
+
#
|
28
|
+
def engine
|
29
|
+
set_default_engine unless @engine
|
30
|
+
@engine
|
31
|
+
end
|
32
|
+
|
33
|
+
def encode(data)
|
34
|
+
@engine.encode(data)
|
35
|
+
end
|
36
|
+
|
37
|
+
def decode(bytes)
|
38
|
+
bytes.force_encoding(Encoding::BINARY)
|
39
|
+
@engine.decode(bytes)
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_default_engine
|
43
|
+
[:cbor].each do |name|
|
44
|
+
@engine ||= try_load_engine(name)
|
45
|
+
end
|
46
|
+
|
47
|
+
unless @engine
|
48
|
+
raise 'Unable to find a compatible cbor library.'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def load_engine(name)
|
55
|
+
require "aws-sdk-core/rpc_v2/#{name}_engine"
|
56
|
+
const_name = name[0].upcase + name[1..-1] + 'Engine'
|
57
|
+
const_get(const_name)
|
58
|
+
end
|
59
|
+
|
60
|
+
def try_load_engine(name)
|
61
|
+
load_engine(name)
|
62
|
+
rescue LoadError
|
63
|
+
false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
set_default_engine
|
68
|
+
end
|
69
|
+
end
|
@@ -138,7 +138,11 @@ module Aws
|
|
138
138
|
role_session_name: entry['role_session_name']
|
139
139
|
}
|
140
140
|
cfg[:region] = opts[:region] if opts[:region]
|
141
|
-
|
141
|
+
with_metrics('CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN') do
|
142
|
+
creds = AssumeRoleWebIdentityCredentials.new(cfg)
|
143
|
+
creds.metrics << 'CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN'
|
144
|
+
creds
|
145
|
+
end
|
142
146
|
end
|
143
147
|
end
|
144
148
|
end
|
@@ -198,6 +202,9 @@ module Aws
|
|
198
202
|
|
199
203
|
config_reader(
|
200
204
|
:region,
|
205
|
+
:account_id_endpoint_mode,
|
206
|
+
:auth_scheme_preference,
|
207
|
+
:sigv4a_signing_region_set,
|
201
208
|
:ca_bundle,
|
202
209
|
:credential_process,
|
203
210
|
:endpoint_discovery_enabled,
|
@@ -206,10 +213,13 @@ module Aws
|
|
206
213
|
:ec2_metadata_service_endpoint,
|
207
214
|
:ec2_metadata_service_endpoint_mode,
|
208
215
|
:ec2_metadata_v1_disabled,
|
216
|
+
:disable_host_prefix_injection,
|
209
217
|
:max_attempts,
|
210
218
|
:retry_mode,
|
211
219
|
:adaptive_retry_wait_to_fill,
|
212
220
|
:correct_clock_skew,
|
221
|
+
:request_checksum_calculation,
|
222
|
+
:response_checksum_validation,
|
213
223
|
:csm_client_id,
|
214
224
|
:csm_enabled,
|
215
225
|
:csm_host,
|
@@ -251,8 +261,8 @@ module Aws
|
|
251
261
|
'provide only source_profile or credential_source, not both.'
|
252
262
|
elsif opts[:source_profile]
|
253
263
|
opts[:visited_profiles] ||= Set.new
|
254
|
-
|
255
|
-
if opts[:credentials]
|
264
|
+
provider = resolve_source_profile(opts[:source_profile], opts)
|
265
|
+
if provider && (opts[:credentials] = provider.credentials)
|
256
266
|
opts[:role_session_name] ||= prof_cfg['role_session_name']
|
257
267
|
opts[:role_session_name] ||= 'default_session'
|
258
268
|
opts[:role_arn] ||= prof_cfg['role_arn']
|
@@ -261,17 +271,28 @@ module Aws
|
|
261
271
|
opts[:serial_number] ||= prof_cfg['mfa_serial']
|
262
272
|
opts[:profile] = opts.delete(:source_profile)
|
263
273
|
opts.delete(:visited_profiles)
|
264
|
-
|
274
|
+
|
275
|
+
metrics = provider.metrics
|
276
|
+
if provider.is_a?(AssumeRoleCredentials)
|
277
|
+
opts[:credentials] = provider
|
278
|
+
metrics.delete('CREDENTIALS_STS_ASSUME_ROLE')
|
279
|
+
else
|
280
|
+
metrics << 'CREDENTIALS_PROFILE_SOURCE_PROFILE'
|
281
|
+
end
|
282
|
+
# Set the original credentials metrics to [] to prevent duplicate metrics during sign plugin
|
283
|
+
opts[:credentials].metrics = []
|
284
|
+
with_metrics(metrics) do
|
285
|
+
creds = AssumeRoleCredentials.new(opts)
|
286
|
+
creds.metrics.push(*metrics)
|
287
|
+
creds
|
288
|
+
end
|
265
289
|
else
|
266
290
|
raise Errors::NoSourceProfileError,
|
267
291
|
"Profile #{profile} has a role_arn, and source_profile, but the"\
|
268
292
|
' source_profile does not have credentials.'
|
269
293
|
end
|
270
294
|
elsif credential_source
|
271
|
-
opts[:credentials] = credentials_from_source(
|
272
|
-
credential_source,
|
273
|
-
chain_config
|
274
|
-
)
|
295
|
+
opts[:credentials] = credentials_from_source(credential_source, chain_config)
|
275
296
|
if opts[:credentials]
|
276
297
|
opts[:role_session_name] ||= prof_cfg['role_session_name']
|
277
298
|
opts[:role_session_name] ||= 'default_session'
|
@@ -280,7 +301,16 @@ module Aws
|
|
280
301
|
opts[:external_id] ||= prof_cfg['external_id']
|
281
302
|
opts[:serial_number] ||= prof_cfg['mfa_serial']
|
282
303
|
opts.delete(:source_profile) # Cleanup
|
283
|
-
|
304
|
+
|
305
|
+
metrics = opts[:credentials].metrics
|
306
|
+
metrics << 'CREDENTIALS_PROFILE_NAMED_PROVIDER'
|
307
|
+
# Set the original credentials metrics to [] to prevent duplicate metrics during sign plugin
|
308
|
+
opts[:credentials].metrics = []
|
309
|
+
with_metrics(metrics) do
|
310
|
+
creds = AssumeRoleCredentials.new(opts)
|
311
|
+
creds.metrics.push(*metrics)
|
312
|
+
creds
|
313
|
+
end
|
284
314
|
else
|
285
315
|
raise Errors::NoSourceCredentials,
|
286
316
|
"Profile #{profile} could not get source credentials from"\
|
@@ -308,12 +338,24 @@ module Aws
|
|
308
338
|
elsif profile_config && profile_config['source_profile']
|
309
339
|
opts.delete(:source_profile)
|
310
340
|
assume_role_credentials_from_config(opts.merge(profile: profile))
|
311
|
-
elsif (provider =
|
312
|
-
provider
|
341
|
+
elsif (provider = assume_role_web_identity_credentials_from_config_with_metrics(opts.merge(profile: profile)))
|
342
|
+
provider if provider.credentials.set?
|
313
343
|
elsif (provider = assume_role_process_credentials_from_config(profile))
|
314
|
-
provider
|
315
|
-
elsif (provider =
|
316
|
-
provider
|
344
|
+
provider if provider.credentials.set?
|
345
|
+
elsif (provider = sso_credentials_from_config_with_metrics(profile))
|
346
|
+
provider if provider.credentials.set?
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
def assume_role_web_identity_credentials_from_config_with_metrics(opts)
|
351
|
+
with_metrics('CREDENTIALS_PROFILE_SOURCE_PROFILE') do
|
352
|
+
assume_role_web_identity_credentials_from_config(opts)
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
def sso_credentials_from_config_with_metrics(profile)
|
357
|
+
with_metrics('CREDENTIALS_PROFILE_SOURCE_PROFILE') do
|
358
|
+
sso_credentials_from_config(profile: profile)
|
317
359
|
end
|
318
360
|
end
|
319
361
|
|
@@ -338,7 +380,11 @@ module Aws
|
|
338
380
|
if @parsed_config
|
339
381
|
credential_process ||= @parsed_config.fetch(profile, {})['credential_process']
|
340
382
|
end
|
341
|
-
|
383
|
+
if credential_process
|
384
|
+
creds = ProcessCredentials.new([credential_process])
|
385
|
+
creds.metrics << 'CREDENTIALS_PROFILE_PROCESS'
|
386
|
+
creds
|
387
|
+
end
|
342
388
|
end
|
343
389
|
|
344
390
|
def credentials_from_shared(profile, _opts)
|
@@ -382,13 +428,18 @@ module Aws
|
|
382
428
|
sso_start_url = prof_config['sso_start_url']
|
383
429
|
end
|
384
430
|
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
431
|
+
metric = prof_config['sso_session'] ? 'CREDENTIALS_PROFILE_SSO' : 'CREDENTIALS_PROFILE_SSO_LEGACY'
|
432
|
+
with_metrics(metric) do
|
433
|
+
creds = SSOCredentials.new(
|
434
|
+
sso_account_id: prof_config['sso_account_id'],
|
435
|
+
sso_role_name: prof_config['sso_role_name'],
|
436
|
+
sso_session: prof_config['sso_session'],
|
437
|
+
sso_region: sso_region,
|
438
|
+
sso_start_url: sso_start_url
|
391
439
|
)
|
440
|
+
creds.metrics << metric
|
441
|
+
creds
|
442
|
+
end
|
392
443
|
end
|
393
444
|
end
|
394
445
|
|
@@ -413,8 +464,10 @@ module Aws
|
|
413
464
|
creds = Credentials.new(
|
414
465
|
prof_config['aws_access_key_id'],
|
415
466
|
prof_config['aws_secret_access_key'],
|
416
|
-
prof_config['aws_session_token']
|
467
|
+
prof_config['aws_session_token'],
|
468
|
+
account_id: prof_config['aws_account_id']
|
417
469
|
)
|
470
|
+
creds.metrics = ['CREDENTIALS_PROFILE']
|
418
471
|
creds if creds.set?
|
419
472
|
end
|
420
473
|
|
@@ -475,5 +528,9 @@ module Aws
|
|
475
528
|
|
476
529
|
sso_session
|
477
530
|
end
|
531
|
+
|
532
|
+
def with_metrics(metrics, &block)
|
533
|
+
Aws::Plugins::UserAgent.metric(*metrics, &block)
|
534
|
+
end
|
478
535
|
end
|
479
536
|
end
|
@@ -7,13 +7,6 @@ module Aws
|
|
7
7
|
|
8
8
|
include CredentialProvider
|
9
9
|
|
10
|
-
# @api private
|
11
|
-
KEY_MAP = {
|
12
|
-
'aws_access_key_id' => 'access_key_id',
|
13
|
-
'aws_secret_access_key' => 'secret_access_key',
|
14
|
-
'aws_session_token' => 'session_token',
|
15
|
-
}
|
16
|
-
|
17
10
|
# Constructs a new SharedCredentials object. This will load static
|
18
11
|
# (access_key_id, secret_access_key and session_token) AWS access
|
19
12
|
# credentials from an ini file, which supports profiles. The default
|
@@ -47,6 +40,7 @@ module Aws
|
|
47
40
|
)
|
48
41
|
@credentials = config.credentials(profile: @profile_name)
|
49
42
|
end
|
43
|
+
@metrics = ['CREDENTIALS_CODE']
|
50
44
|
end
|
51
45
|
|
52
46
|
# @return [String]
|
@@ -91,6 +91,7 @@ module Aws
|
|
91
91
|
client_opts[:credentials] = nil
|
92
92
|
@client = Aws::SSO::Client.new(client_opts)
|
93
93
|
end
|
94
|
+
@metrics = ['CREDENTIALS_SSO']
|
94
95
|
else # legacy behavior
|
95
96
|
missing_keys = LEGACY_REQUIRED_OPTS.select { |k| options[k].nil? }
|
96
97
|
unless missing_keys.empty?
|
@@ -111,6 +112,7 @@ module Aws
|
|
111
112
|
client_opts[:credentials] = nil
|
112
113
|
|
113
114
|
@client = options[:client] || Aws::SSO::Client.new(client_opts)
|
115
|
+
@metrics = ['CREDENTIALS_SSO_LEGACY']
|
114
116
|
end
|
115
117
|
|
116
118
|
@async_refresh = true
|
@@ -156,7 +158,8 @@ module Aws
|
|
156
158
|
@credentials = Credentials.new(
|
157
159
|
c.access_key_id,
|
158
160
|
c.secret_access_key,
|
159
|
-
c.session_token
|
161
|
+
c.session_token,
|
162
|
+
account_id: @sso_account_id
|
160
163
|
)
|
161
164
|
@expiration = Time.at(c.expiration / 1000.0)
|
162
165
|
end
|
@@ -2,12 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
class StaticTokenProvider
|
5
|
-
|
6
5
|
include TokenProvider
|
7
6
|
|
8
7
|
# @param [String] token
|
9
8
|
# @param [Time] expiration
|
10
|
-
def initialize(token, expiration=nil)
|
9
|
+
def initialize(token, expiration = nil)
|
11
10
|
@token = Token.new(token, expiration)
|
12
11
|
end
|
13
12
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Aws
|
4
4
|
module Stubbing
|
5
5
|
module Protocols
|
6
|
+
# @api private
|
6
7
|
class EC2
|
7
8
|
|
8
9
|
def stub_data(api, operation, data)
|
@@ -16,17 +17,17 @@ module Aws
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def stub_error(error_code)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<ErrorResponse>
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
</ErrorResponse>
|
20
|
+
resp = Seahorse::Client::Http::Response.new
|
21
|
+
resp.status_code = 400
|
22
|
+
resp.body = <<~XML.strip
|
23
|
+
<ErrorResponse>
|
24
|
+
<Error>
|
25
|
+
<Code>#{error_code}</Code>
|
26
|
+
<Message>stubbed-response-error-message</Message>
|
27
|
+
</Error>
|
28
|
+
</ErrorResponse>
|
28
29
|
XML
|
29
|
-
|
30
|
+
resp
|
30
31
|
end
|
31
32
|
|
32
33
|
private
|
@@ -37,7 +38,7 @@ module Aws
|
|
37
38
|
xml.shift
|
38
39
|
xml.pop
|
39
40
|
xmlns = "http://ec2.amazonaws.com/doc/#{api.version}/".inspect
|
40
|
-
xml.unshift(
|
41
|
+
xml.unshift(' <requestId>stubbed-request-id</requestId>')
|
41
42
|
xml.unshift("<#{operation.name}Response xmlns=#{xmlns}>\n")
|
42
43
|
xml.push("</#{operation.name}Response>\n")
|
43
44
|
xml.join
|
@@ -3,27 +3,28 @@
|
|
3
3
|
module Aws
|
4
4
|
module Stubbing
|
5
5
|
module Protocols
|
6
|
+
# @api private
|
6
7
|
class Json
|
7
8
|
|
8
9
|
def stub_data(api, operation, data)
|
9
10
|
resp = Seahorse::Client::Http::Response.new
|
10
11
|
resp.status_code = 200
|
11
|
-
resp.headers[
|
12
|
-
resp.headers[
|
12
|
+
resp.headers['Content-Type'] = content_type(api)
|
13
|
+
resp.headers['x-amzn-RequestId'] = 'stubbed-request-id'
|
13
14
|
resp.body = build_body(operation, data)
|
14
15
|
resp
|
15
16
|
end
|
16
17
|
|
17
18
|
def stub_error(error_code)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
{
|
22
|
-
|
23
|
-
|
24
|
-
}
|
19
|
+
resp = Seahorse::Client::Http::Response.new
|
20
|
+
resp.status_code = 400
|
21
|
+
resp.body = <<~JSON.strip
|
22
|
+
{
|
23
|
+
"code": #{error_code.inspect},
|
24
|
+
"message": "stubbed-response-error-message"
|
25
|
+
}
|
25
26
|
JSON
|
26
|
-
|
27
|
+
resp
|
27
28
|
end
|
28
29
|
|
29
30
|
private
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Aws
|
4
4
|
module Stubbing
|
5
5
|
module Protocols
|
6
|
+
# @api private
|
6
7
|
class Query
|
7
8
|
|
8
9
|
def stub_data(api, operation, data)
|
@@ -13,10 +14,10 @@ module Aws
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def stub_error(error_code)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
resp = Seahorse::Client::Http::Response.new
|
18
|
+
resp.status_code = 400
|
19
|
+
resp.body = XmlError.new(error_code).to_xml
|
20
|
+
resp
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -24,9 +25,9 @@ module Aws
|
|
24
25
|
def build_body(api, operation, data)
|
25
26
|
xml = []
|
26
27
|
builder = Aws::Xml::DocBuilder.new(target: xml, indent: ' ')
|
27
|
-
builder.node(operation.name
|
28
|
+
builder.node("#{operation.name}Response", xmlns: xmlns(api)) do
|
28
29
|
if (rules = operation.output)
|
29
|
-
rules.location_name = operation.name
|
30
|
+
rules.location_name = "#{operation.name}Result"
|
30
31
|
Xml::Builder.new(rules, target: xml, pad:' ').to_xml(data)
|
31
32
|
end
|
32
33
|
builder.node('ResponseMetadata') do
|
@@ -5,6 +5,7 @@ require 'aws-eventstream'
|
|
5
5
|
module Aws
|
6
6
|
module Stubbing
|
7
7
|
module Protocols
|
8
|
+
# @api private
|
8
9
|
class Rest
|
9
10
|
|
10
11
|
include Seahorse::Model::Shapes
|
@@ -22,7 +23,7 @@ module Aws
|
|
22
23
|
def new_http_response
|
23
24
|
resp = Seahorse::Client::Http::Response.new
|
24
25
|
resp.status_code = 200
|
25
|
-
resp.headers[
|
26
|
+
resp.headers['x-amzn-RequestId'] = 'stubbed-request-id'
|
26
27
|
resp
|
27
28
|
end
|
28
29
|
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Aws
|
4
4
|
module Stubbing
|
5
5
|
module Protocols
|
6
|
+
# @api private
|
6
7
|
class RestJson < Rest
|
7
8
|
|
8
9
|
def body_for(_a, _b, rules, data)
|
@@ -14,15 +15,15 @@ module Aws
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def stub_error(error_code)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
{
|
21
|
-
|
22
|
-
|
23
|
-
}
|
18
|
+
resp = Seahorse::Client::Http::Response.new
|
19
|
+
resp.status_code = 400
|
20
|
+
resp.body = <<~JSON.strip
|
21
|
+
{
|
22
|
+
"code": #{error_code.inspect},
|
23
|
+
"message": "stubbed-response-error-message"
|
24
|
+
}
|
24
25
|
JSON
|
25
|
-
|
26
|
+
resp
|
26
27
|
end
|
27
28
|
|
28
29
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module Aws
|
4
4
|
module Stubbing
|
5
5
|
module Protocols
|
6
|
+
# @api private
|
6
7
|
class RestXml < Rest
|
7
8
|
|
8
9
|
def body_for(api, operation, rules, data)
|
@@ -10,7 +11,7 @@ module Aws
|
|
10
11
|
encode_eventstream_response(rules, data, Xml::Builder)
|
11
12
|
else
|
12
13
|
xml = []
|
13
|
-
rules.location_name = operation.name
|
14
|
+
rules.location_name = "#{operation.name}Result"
|
14
15
|
rules['xmlNamespace'] = { 'uri' => api.metadata['xmlNamespace'] }
|
15
16
|
Xml::Builder.new(rules, target:xml).to_xml(data)
|
16
17
|
xml.join
|
@@ -18,10 +19,10 @@ module Aws
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def stub_error(error_code)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
resp = Seahorse::Client::Http::Response.new
|
23
|
+
resp.status_code = 400
|
24
|
+
resp.body = XmlError.new(error_code).to_xml
|
25
|
+
resp
|
25
26
|
end
|
26
27
|
|
27
28
|
def xmlns(api)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module Stubbing
|
5
|
+
module Protocols
|
6
|
+
# @api private
|
7
|
+
class RpcV2
|
8
|
+
|
9
|
+
def stub_data(_api, operation, data)
|
10
|
+
resp = Seahorse::Client::Http::Response.new
|
11
|
+
resp.status_code = 200
|
12
|
+
resp.headers['Smithy-Protocol'] = 'rpc-v2-cbor'
|
13
|
+
resp.headers['Content-Type'] = 'application/cbor'
|
14
|
+
resp.headers['x-amzn-RequestId'] = 'stubbed-request-id'
|
15
|
+
resp.body = build_body(operation, data)
|
16
|
+
resp
|
17
|
+
end
|
18
|
+
|
19
|
+
def stub_error(error_code)
|
20
|
+
resp = Seahorse::Client::Http::Response.new
|
21
|
+
resp.status_code = 400
|
22
|
+
resp.body = Aws::RpcV2.encode(
|
23
|
+
{
|
24
|
+
'code' => error_code,
|
25
|
+
'message' => 'stubbed-response-error-message'
|
26
|
+
}
|
27
|
+
)
|
28
|
+
resp
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def build_body(operation, data)
|
34
|
+
Aws::RpcV2::Builder.new(operation.output).serialize(data)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
# @api private
|
5
|
+
module Stubbing
|
6
|
+
autoload :EmptyStub, 'aws-sdk-core/stubbing/empty_stub'
|
7
|
+
autoload :DataApplicator, 'aws-sdk-core/stubbing/data_applicator'
|
8
|
+
autoload :StubData, 'aws-sdk-core/stubbing/stub_data'
|
9
|
+
autoload :XmlError, 'aws-sdk-core/stubbing/xml_error'
|
10
|
+
|
11
|
+
module Protocols
|
12
|
+
autoload :Json, 'aws-sdk-core/stubbing/protocols/json'
|
13
|
+
autoload :Rest, 'aws-sdk-core/stubbing/protocols/rest'
|
14
|
+
autoload :RestJson, 'aws-sdk-core/stubbing/protocols/rest_json'
|
15
|
+
autoload :RestXml, 'aws-sdk-core/stubbing/protocols/rest_xml'
|
16
|
+
autoload :Query, 'aws-sdk-core/stubbing/protocols/query'
|
17
|
+
autoload :EC2, 'aws-sdk-core/stubbing/protocols/ec2'
|
18
|
+
autoload :RpcV2, 'aws-sdk-core/stubbing/protocols/rpc_v2'
|
19
|
+
autoload :ApiGateway, 'aws-sdk-core/stubbing/protocols/api_gateway'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|