aws-sdk-core 3.185.1 → 3.240.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 +705 -0
- data/VERSION +1 -1
- 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 +21 -13
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +16 -9
- 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 +39 -55
- data/lib/aws-sdk-core/credential_provider.rb +5 -1
- data/lib/aws-sdk-core/credential_provider_chain.rb +101 -25
- 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 +92 -24
- 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 +16 -4
- data/lib/aws-sdk-core/event_emitter.rb +1 -17
- data/lib/aws-sdk-core/instance_profile_credentials.rb +168 -155
- 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 +13 -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 +32 -2
- 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/login_credentials.rb +229 -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 +347 -168
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +1 -1
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +78 -56
- 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 +3 -8
- data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
- data/lib/aws-sdk-core/plugins/logging.rb +2 -0
- 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 +12 -3
- data/lib/aws-sdk-core/plugins/sign.rb +55 -34
- 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 +59 -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 +103 -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/refreshing_credentials.rb +20 -17
- 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 +62 -36
- 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 +110 -22
- data/lib/aws-sdk-core/shared_credentials.rb +1 -7
- data/lib/aws-sdk-core/sso_credentials.rb +5 -2
- 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 +86 -107
- data/lib/aws-sdk-signin/client.rb +604 -0
- data/lib/aws-sdk-signin/client_api.rb +119 -0
- data/lib/aws-sdk-signin/customizations.rb +1 -0
- data/lib/aws-sdk-signin/endpoint_parameters.rb +69 -0
- data/lib/aws-sdk-signin/endpoint_provider.rb +59 -0
- data/lib/aws-sdk-signin/endpoints.rb +20 -0
- data/lib/aws-sdk-signin/errors.rb +122 -0
- data/lib/aws-sdk-signin/plugins/endpoints.rb +77 -0
- data/lib/aws-sdk-signin/resource.rb +26 -0
- data/lib/aws-sdk-signin/types.rb +299 -0
- data/lib/aws-sdk-signin.rb +63 -0
- data/lib/aws-sdk-sso/client.rb +189 -96
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_parameters.rb +13 -10
- data/lib/aws-sdk-sso/endpoint_provider.rb +16 -20
- data/lib/aws-sdk-sso/endpoints.rb +2 -54
- data/lib/aws-sdk-sso/plugins/endpoints.rb +23 -22
- data/lib/aws-sdk-sso/types.rb +1 -0
- data/lib/aws-sdk-sso.rb +15 -11
- data/lib/aws-sdk-ssooidc/client.rb +609 -129
- data/lib/aws-sdk-ssooidc/client_api.rb +94 -1
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +13 -10
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +16 -20
- data/lib/aws-sdk-ssooidc/endpoints.rb +2 -40
- data/lib/aws-sdk-ssooidc/errors.rb +62 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +23 -20
- data/lib/aws-sdk-ssooidc/types.rb +419 -53
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +537 -156
- data/lib/aws-sdk-sts/client_api.rb +108 -8
- data/lib/aws-sdk-sts/customizations.rb +5 -2
- data/lib/aws-sdk-sts/endpoint_parameters.rb +15 -14
- data/lib/aws-sdk-sts/endpoint_provider.rb +52 -57
- data/lib/aws-sdk-sts/endpoints.rb +2 -118
- data/lib/aws-sdk-sts/errors.rb +79 -0
- data/lib/aws-sdk-sts/plugins/endpoints.rb +23 -30
- data/lib/aws-sdk-sts/presigner.rb +3 -7
- data/lib/aws-sdk-sts/types.rb +361 -35
- 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 +19 -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/net_http/patches.rb +1 -4
- data/lib/seahorse/client/networking_error.rb +1 -1
- data/lib/seahorse/client/plugin.rb +9 -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/client_stubs.rbs +10 -0
- data/sig/aws-sdk-core/errors.rbs +22 -0
- data/sig/aws-sdk-core/resources/collection.rbs +21 -0
- data/sig/aws-sdk-core/structure.rbs +4 -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/aws-sdk-core/waiters/errors.rbs +20 -0
- data/sig/aws-sdk-core.rbs +7 -0
- data/sig/seahorse/client/async_base.rbs +18 -0
- data/sig/seahorse/client/base.rbs +25 -0
- data/sig/seahorse/client/handler_builder.rbs +16 -0
- data/sig/seahorse/client/response.rbs +61 -0
- metadata +117 -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
|
@@ -14,15 +14,33 @@ require_relative 'endpoints/templater'
|
|
|
14
14
|
require_relative 'endpoints/tree_rule'
|
|
15
15
|
require_relative 'endpoints/url'
|
|
16
16
|
|
|
17
|
+
require 'aws-sigv4'
|
|
18
|
+
|
|
17
19
|
module Aws
|
|
18
20
|
# @api private
|
|
19
21
|
module Endpoints
|
|
22
|
+
# Maps config auth scheme preferences to endpoint auth scheme names.
|
|
23
|
+
ENDPOINT_AUTH_PREFERENCE_MAP = {
|
|
24
|
+
'sigv4' => %w[sigv4 sigv4-s3express],
|
|
25
|
+
'sigv4a' => ['sigv4a'],
|
|
26
|
+
'httpBearerAuth' => ['bearer'],
|
|
27
|
+
'noAuth' => ['none']
|
|
28
|
+
}.freeze
|
|
29
|
+
SUPPORTED_ENDPOINT_AUTH = ENDPOINT_AUTH_PREFERENCE_MAP.values.flatten.freeze
|
|
30
|
+
|
|
31
|
+
# Maps configured auth scheme preferences to modeled auth traits.
|
|
32
|
+
MODELED_AUTH_PREFERENCE_MAP = {
|
|
33
|
+
'sigv4' => 'aws.auth#sigv4',
|
|
34
|
+
'sigv4a' => 'aws.auth#sigv4a',
|
|
35
|
+
'httpBearerAuth' => 'smithy.api#httpBearerAuth',
|
|
36
|
+
'noAuth' => 'smithy.api#noAuth'
|
|
37
|
+
}.freeze
|
|
38
|
+
SUPPORTED_MODELED_AUTH = MODELED_AUTH_PREFERENCE_MAP.values.freeze
|
|
39
|
+
|
|
20
40
|
class << self
|
|
21
41
|
def resolve_auth_scheme(context, endpoint)
|
|
22
42
|
if endpoint && (auth_schemes = endpoint.properties['authSchemes'])
|
|
23
|
-
auth_scheme = auth_schemes.
|
|
24
|
-
Aws::Plugins::Sign::SUPPORTED_AUTH_TYPES.include?(scheme['name'])
|
|
25
|
-
end
|
|
43
|
+
auth_scheme = endpoint_auth_scheme_preference(auth_schemes, context.config.auth_scheme_preference)
|
|
26
44
|
raise 'No supported auth scheme for this endpoint.' unless auth_scheme
|
|
27
45
|
|
|
28
46
|
merge_signing_defaults(auth_scheme, context.config)
|
|
@@ -33,8 +51,86 @@ module Aws
|
|
|
33
51
|
|
|
34
52
|
private
|
|
35
53
|
|
|
54
|
+
def endpoint_auth_scheme_preference(auth_schemes, preferred_auth)
|
|
55
|
+
ordered_auth = preferred_auth.each_with_object([]) do |pref, list|
|
|
56
|
+
next unless ENDPOINT_AUTH_PREFERENCE_MAP.key?(pref)
|
|
57
|
+
|
|
58
|
+
ENDPOINT_AUTH_PREFERENCE_MAP[pref].each { |name| list << { 'name' => name } }
|
|
59
|
+
end
|
|
60
|
+
ordered_auth += auth_schemes
|
|
61
|
+
ordered_auth.find { |auth| SUPPORTED_ENDPOINT_AUTH.include?(auth['name']) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def merge_signing_defaults(auth_scheme, config)
|
|
65
|
+
if %w[sigv4 sigv4a sigv4-s3express].include?(auth_scheme['name'])
|
|
66
|
+
auth_scheme['signingName'] ||= sigv4_name(config)
|
|
67
|
+
|
|
68
|
+
# back fill disableNormalizePath for S3 until it gets correctly set in the rules
|
|
69
|
+
if auth_scheme['signingName'] == 's3' &&
|
|
70
|
+
!auth_scheme.include?('disableNormalizePath') &&
|
|
71
|
+
auth_scheme.include?('disableDoubleEncoding')
|
|
72
|
+
auth_scheme['disableNormalizePath'] = auth_scheme['disableDoubleEncoding']
|
|
73
|
+
end
|
|
74
|
+
if auth_scheme['name'] == 'sigv4a'
|
|
75
|
+
# config option supersedes endpoint properties
|
|
76
|
+
auth_scheme['signingRegionSet'] =
|
|
77
|
+
config.sigv4a_signing_region_set || auth_scheme['signingRegionSet'] || [config.region]
|
|
78
|
+
else
|
|
79
|
+
auth_scheme['signingRegion'] ||= config.region
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
auth_scheme
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def sigv4_name(config)
|
|
86
|
+
config.api.metadata['signingName'] || config.api.metadata['endpointPrefix']
|
|
87
|
+
end
|
|
88
|
+
|
|
36
89
|
def default_auth_scheme(context)
|
|
37
|
-
|
|
90
|
+
if (modeled_auth = default_api_auth(context))
|
|
91
|
+
auth = modeled_auth_scheme_preference(modeled_auth, context.config.auth_scheme_preference)
|
|
92
|
+
case auth
|
|
93
|
+
when 'aws.auth#sigv4', 'aws.auth#sigv4a'
|
|
94
|
+
auth_scheme = { 'name' => auth.split('#').last }
|
|
95
|
+
if s3_or_s3v4_signature_version?(context)
|
|
96
|
+
auth_scheme = auth_scheme.merge(
|
|
97
|
+
'disableDoubleEncoding' => true,
|
|
98
|
+
'disableNormalizePath' => true
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
merge_signing_defaults(auth_scheme, context.config)
|
|
102
|
+
when 'smithy.api#httpBearerAuth'
|
|
103
|
+
{ 'name' => 'bearer' }
|
|
104
|
+
when 'smithy.api#noAuth'
|
|
105
|
+
{ 'name' => 'none' }
|
|
106
|
+
else
|
|
107
|
+
raise 'No supported auth trait for this endpoint.'
|
|
108
|
+
end
|
|
109
|
+
else
|
|
110
|
+
legacy_default_auth_scheme(context)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def modeled_auth_scheme_preference(modeled_auth, preferred_auth)
|
|
115
|
+
ordered_auth = preferred_auth.map { |pref| MODELED_AUTH_PREFERENCE_MAP[pref] }.compact
|
|
116
|
+
ordered_auth += modeled_auth
|
|
117
|
+
ordered_auth.find { |auth| SUPPORTED_MODELED_AUTH.include?(auth) }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def default_api_auth(context)
|
|
121
|
+
context.config.api.operation(context.operation_name)['auth'] ||
|
|
122
|
+
context.config.api.metadata['auth']
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def s3_or_s3v4_signature_version?(context)
|
|
126
|
+
%w[s3 s3v4].include?(context.config.api.metadata['signatureVersion'])
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Legacy auth resolution - looks for deprecated signatureVersion
|
|
130
|
+
# and authType traits.
|
|
131
|
+
|
|
132
|
+
def legacy_default_auth_scheme(context)
|
|
133
|
+
case legacy_default_api_authtype(context)
|
|
38
134
|
when 'v4', 'v4-unsigned-body'
|
|
39
135
|
auth_scheme = { 'name' => 'sigv4' }
|
|
40
136
|
merge_signing_defaults(auth_scheme, context.config)
|
|
@@ -52,27 +148,11 @@ module Aws
|
|
|
52
148
|
end
|
|
53
149
|
end
|
|
54
150
|
|
|
55
|
-
def
|
|
56
|
-
if %w[sigv4 sigv4a].include?(auth_scheme['name'])
|
|
57
|
-
auth_scheme['signingName'] ||= sigv4_name(config)
|
|
58
|
-
if auth_scheme['name'] == 'sigv4a'
|
|
59
|
-
auth_scheme['signingRegionSet'] ||= ['*']
|
|
60
|
-
else
|
|
61
|
-
auth_scheme['signingRegion'] ||= config.region
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
auth_scheme
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def default_api_authtype(context)
|
|
151
|
+
def legacy_default_api_authtype(context)
|
|
68
152
|
context.config.api.operation(context.operation_name)['authtype'] ||
|
|
69
153
|
context.config.api.metadata['signatureVersion']
|
|
70
154
|
end
|
|
71
155
|
|
|
72
|
-
def sigv4_name(config)
|
|
73
|
-
config.api.metadata['signingName'] ||
|
|
74
|
-
config.api.metadata['endpointPrefix']
|
|
75
|
-
end
|
|
76
156
|
end
|
|
77
157
|
end
|
|
78
158
|
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
# @api private
|
|
5
|
+
class ErrorHandler < Seahorse::Client::Handler
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def error(context)
|
|
10
|
+
body = context.http_response.body_contents
|
|
11
|
+
# This is not correct per protocol tests. Some headers will determine the error code.
|
|
12
|
+
# If the body is empty, there is still potentially an error code from the header, but
|
|
13
|
+
# we are making a generic http status error instead. In a new major version, we should
|
|
14
|
+
# always try to extract header, and during extraction, check headers and body.
|
|
15
|
+
if body.empty?
|
|
16
|
+
code, message, data = http_status_error(context)
|
|
17
|
+
else
|
|
18
|
+
code, message, data = extract_error(body, context)
|
|
19
|
+
end
|
|
20
|
+
build_error(context, code, message, data)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def build_error(context, code, message, data)
|
|
24
|
+
errors_module = context.client.class.errors_module
|
|
25
|
+
errors_module.error_class(code).new(context, message, data)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def http_status_error(context)
|
|
29
|
+
[http_status_error_code(context), '', EmptyStructure.new]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def http_status_error_code(context)
|
|
33
|
+
status_code = context.http_response.status_code
|
|
34
|
+
{
|
|
35
|
+
302 => 'MovedTemporarily',
|
|
36
|
+
304 => 'NotModified',
|
|
37
|
+
400 => 'BadRequest',
|
|
38
|
+
403 => 'Forbidden',
|
|
39
|
+
404 => 'NotFound',
|
|
40
|
+
412 => 'PreconditionFailed',
|
|
41
|
+
413 => 'RequestEntityTooLarge',
|
|
42
|
+
}[status_code] || "Http#{status_code}Error"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/aws-sdk-core/errors.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Aws
|
|
|
12
12
|
class ServiceError < RuntimeError
|
|
13
13
|
|
|
14
14
|
# @param [Seahorse::Client::RequestContext] context
|
|
15
|
-
# @param [String] message
|
|
15
|
+
# @param [String, nil] message
|
|
16
16
|
# @param [Aws::Structure] data
|
|
17
17
|
def initialize(context, message, data = Aws::EmptyStructure.new)
|
|
18
18
|
@code = self.class.code
|
|
@@ -34,7 +34,7 @@ module Aws
|
|
|
34
34
|
|
|
35
35
|
class << self
|
|
36
36
|
|
|
37
|
-
# @return [String]
|
|
37
|
+
# @return [String, nil]
|
|
38
38
|
attr_accessor :code
|
|
39
39
|
|
|
40
40
|
end
|
|
@@ -68,7 +68,7 @@ module Aws
|
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
#
|
|
71
|
+
# Raised when endpoint discovery failed for operations
|
|
72
72
|
# that requires endpoints from endpoint discovery
|
|
73
73
|
class EndpointDiscoveryError < RuntimeError
|
|
74
74
|
def initialize(*args)
|
|
@@ -78,7 +78,7 @@ module Aws
|
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
#
|
|
81
|
+
# Raised when hostLabel member is not provided
|
|
82
82
|
# at operation input when endpoint trait is available
|
|
83
83
|
# with 'hostPrefix' requirement
|
|
84
84
|
class MissingEndpointHostLabelValue < RuntimeError
|
|
@@ -213,6 +213,9 @@ module Aws
|
|
|
213
213
|
# Raised when SSO Token is invalid
|
|
214
214
|
class InvalidSSOToken < RuntimeError; end
|
|
215
215
|
|
|
216
|
+
# Raised when Login Token is invalid
|
|
217
|
+
class InvalidLoginToken < RuntimeError; end
|
|
218
|
+
|
|
216
219
|
# Raised when a client is unable to sign a request because
|
|
217
220
|
# the bearer token is not configured or available
|
|
218
221
|
class MissingBearerTokenError < RuntimeError
|
|
@@ -236,6 +239,15 @@ module Aws
|
|
|
236
239
|
end
|
|
237
240
|
end
|
|
238
241
|
|
|
242
|
+
# Raised when a client is constructed and the sigv4a region set is invalid.
|
|
243
|
+
# It is invalid when it is empty and/or contains empty strings.
|
|
244
|
+
class InvalidRegionSetError < ArgumentError
|
|
245
|
+
def initialize(*args)
|
|
246
|
+
msg = 'The provided sigv4a region set was empty or invalid.'
|
|
247
|
+
super(msg)
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
239
251
|
# Raised when a client is contsructed and the region is not valid.
|
|
240
252
|
class InvalidRegionError < ArgumentError
|
|
241
253
|
def initialize(*args)
|
|
@@ -6,7 +6,6 @@ module Aws
|
|
|
6
6
|
def initialize
|
|
7
7
|
@listeners = {}
|
|
8
8
|
@validate_event = true
|
|
9
|
-
@status = :sleep
|
|
10
9
|
@signal_queue = Queue.new
|
|
11
10
|
end
|
|
12
11
|
|
|
@@ -32,7 +31,7 @@ module Aws
|
|
|
32
31
|
def emit(type, params)
|
|
33
32
|
unless @stream
|
|
34
33
|
raise Aws::Errors::SignalEventError.new(
|
|
35
|
-
"
|
|
34
|
+
"Signaling events before making async request"\
|
|
36
35
|
" is not allowed."
|
|
37
36
|
)
|
|
38
37
|
end
|
|
@@ -40,25 +39,10 @@ module Aws
|
|
|
40
39
|
Aws::ParamValidator.validate!(
|
|
41
40
|
@encoder.rules.shape.member(type), params)
|
|
42
41
|
end
|
|
43
|
-
_ready_for_events?
|
|
44
42
|
@stream.data(
|
|
45
43
|
@encoder.encode(type, params),
|
|
46
44
|
end_stream: type == :end_stream
|
|
47
45
|
)
|
|
48
46
|
end
|
|
49
|
-
|
|
50
|
-
private
|
|
51
|
-
|
|
52
|
-
def _ready_for_events?
|
|
53
|
-
return true if @status == :ready
|
|
54
|
-
|
|
55
|
-
# blocked until once initial 200 response is received
|
|
56
|
-
# signal will be available in @signal_queue
|
|
57
|
-
# and this check will no longer be blocked
|
|
58
|
-
@signal_queue.pop
|
|
59
|
-
@status = :ready
|
|
60
|
-
true
|
|
61
|
-
end
|
|
62
|
-
|
|
63
47
|
end
|
|
64
48
|
end
|