aws-sdk-core 3.190.3 → 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 +645 -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 +36 -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 +16 -14
- 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 +148 -157
- 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/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 -170
- 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 +2 -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 +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 +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 +8 -11
- 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 +108 -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 +20 -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 +293 -122
- data/lib/aws-sdk-ssooidc/client_api.rb +38 -0
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +13 -10
- 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 +31 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +20 -20
- data/lib/aws-sdk-ssooidc/types.rb +142 -29
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +529 -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 +50 -55
- 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 +20 -28
- data/lib/aws-sdk-sts/presigner.rb +2 -6
- data/lib/aws-sdk-sts/types.rb +344 -32
- 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/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
|
@@ -11,7 +11,7 @@ module Aws
|
|
|
11
11
|
def resolve
|
|
12
12
|
providers.each do |method_name, options|
|
|
13
13
|
provider = send(method_name, options.merge(config: @config))
|
|
14
|
-
return provider if provider
|
|
14
|
+
return provider if provider&.set?
|
|
15
15
|
end
|
|
16
16
|
nil
|
|
17
17
|
end
|
|
@@ -25,12 +25,14 @@ module Aws
|
|
|
25
25
|
[:static_profile_sso_credentials, {}],
|
|
26
26
|
[:static_profile_assume_role_credentials, {}],
|
|
27
27
|
[:static_profile_credentials, {}],
|
|
28
|
+
[:static_profile_login_credentials, {}],
|
|
28
29
|
[:static_profile_process_credentials, {}],
|
|
29
30
|
[:env_credentials, {}],
|
|
30
31
|
[:assume_role_web_identity_credentials, {}],
|
|
31
32
|
[:sso_credentials, {}],
|
|
32
33
|
[:assume_role_credentials, {}],
|
|
33
34
|
[:shared_credentials, {}],
|
|
35
|
+
[:login_credentials, {}],
|
|
34
36
|
[:process_credentials, {}],
|
|
35
37
|
[:instance_profile_credentials, {
|
|
36
38
|
retries: @config ? @config.instance_profile_credentials_retries : 0,
|
|
@@ -42,50 +44,92 @@ module Aws
|
|
|
42
44
|
|
|
43
45
|
def static_credentials(options)
|
|
44
46
|
if options[:config]
|
|
45
|
-
Credentials.new(
|
|
47
|
+
creds = Credentials.new(
|
|
46
48
|
options[:config].access_key_id,
|
|
47
49
|
options[:config].secret_access_key,
|
|
48
|
-
options[:config].session_token
|
|
50
|
+
options[:config].session_token,
|
|
51
|
+
account_id: options[:config].account_id
|
|
49
52
|
)
|
|
53
|
+
creds.metrics = ['CREDENTIALS_PROFILE']
|
|
54
|
+
creds
|
|
50
55
|
end
|
|
51
56
|
end
|
|
52
57
|
|
|
53
58
|
def static_profile_assume_role_web_identity_credentials(options)
|
|
54
|
-
|
|
55
|
-
|
|
59
|
+
return unless Aws.shared_config.config_enabled? && options[:config]&.profile
|
|
60
|
+
|
|
61
|
+
with_metrics('CREDENTIALS_CODE') do
|
|
62
|
+
creds = Aws.shared_config.assume_role_web_identity_credentials_from_config(
|
|
56
63
|
profile: options[:config].profile,
|
|
57
64
|
region: options[:config].region
|
|
58
65
|
)
|
|
66
|
+
return unless creds
|
|
67
|
+
|
|
68
|
+
creds.metrics << 'CREDENTIALS_CODE'
|
|
69
|
+
creds
|
|
59
70
|
end
|
|
60
71
|
end
|
|
61
72
|
|
|
62
73
|
def static_profile_sso_credentials(options)
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
return unless Aws.shared_config.config_enabled? && options[:config]&.profile
|
|
75
|
+
|
|
76
|
+
with_metrics('CREDENTIALS_CODE') do
|
|
77
|
+
creds = Aws.shared_config.sso_credentials_from_config(
|
|
65
78
|
profile: options[:config].profile
|
|
66
79
|
)
|
|
80
|
+
return unless creds
|
|
81
|
+
|
|
82
|
+
creds.metrics << 'CREDENTIALS_CODE'
|
|
83
|
+
creds
|
|
67
84
|
end
|
|
68
85
|
end
|
|
69
86
|
|
|
70
87
|
def static_profile_assume_role_credentials(options)
|
|
71
|
-
|
|
72
|
-
|
|
88
|
+
return unless Aws.shared_config.config_enabled? && options[:config]&.profile
|
|
89
|
+
|
|
90
|
+
with_metrics('CREDENTIALS_CODE') do
|
|
91
|
+
creds = assume_role_with_profile(options, options[:config].profile)
|
|
92
|
+
return unless creds
|
|
93
|
+
|
|
94
|
+
creds.metrics << 'CREDENTIALS_CODE'
|
|
95
|
+
creds
|
|
73
96
|
end
|
|
74
97
|
end
|
|
75
98
|
|
|
76
99
|
def static_profile_credentials(options)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
return unless options[:config]&.profile
|
|
101
|
+
|
|
102
|
+
creds = SharedCredentials.new(profile_name: options[:config].profile)
|
|
103
|
+
creds.metrics << 'CREDENTIALS_PROFILE'
|
|
104
|
+
creds
|
|
80
105
|
rescue Errors::NoSuchProfileError
|
|
81
106
|
nil
|
|
82
107
|
end
|
|
83
108
|
|
|
84
|
-
def
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
def static_profile_login_credentials(options)
|
|
110
|
+
return unless Aws.shared_config.config_enabled? && options[:config]&.profile
|
|
111
|
+
|
|
112
|
+
with_metrics('CREDENTIALS_CODE') do
|
|
113
|
+
creds = Aws.shared_config.login_credentials_from_config(
|
|
114
|
+
profile: options[:config].profile,
|
|
115
|
+
region: options[:config].region
|
|
116
|
+
)
|
|
117
|
+
return unless creds
|
|
118
|
+
|
|
119
|
+
creds.metrics << 'CREDENTIALS_CODE'
|
|
120
|
+
creds
|
|
88
121
|
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def static_profile_process_credentials(options)
|
|
125
|
+
return unless Aws.shared_config.config_enabled? && options[:config]&.profile
|
|
126
|
+
|
|
127
|
+
process_provider = Aws.shared_config.credential_process(profile: options[:config].profile)
|
|
128
|
+
return unless process_provider
|
|
129
|
+
|
|
130
|
+
creds = ProcessCredentials.new([process_provider])
|
|
131
|
+
creds.metrics.concat(%w[CREDENTIALS_PROFILE_PROCESS CREDENTIALS_CODE])
|
|
132
|
+
creds
|
|
89
133
|
rescue Errors::NoSuchProfileError
|
|
90
134
|
nil
|
|
91
135
|
end
|
|
@@ -94,7 +138,15 @@ module Aws
|
|
|
94
138
|
key = %w[AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY]
|
|
95
139
|
secret = %w[AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY]
|
|
96
140
|
token = %w[AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN]
|
|
97
|
-
|
|
141
|
+
account_id = %w[AWS_ACCOUNT_ID]
|
|
142
|
+
creds = Credentials.new(
|
|
143
|
+
envar(key),
|
|
144
|
+
envar(secret),
|
|
145
|
+
envar(token),
|
|
146
|
+
account_id: envar(account_id)
|
|
147
|
+
)
|
|
148
|
+
creds.metrics = ['CREDENTIALS_ENV_VARS']
|
|
149
|
+
creds
|
|
98
150
|
end
|
|
99
151
|
|
|
100
152
|
def envar(keys)
|
|
@@ -105,21 +157,37 @@ module Aws
|
|
|
105
157
|
end
|
|
106
158
|
|
|
107
159
|
def determine_profile_name(options)
|
|
108
|
-
(options[:config]
|
|
160
|
+
(options[:config]&.profile) || ENV['AWS_PROFILE'] || ENV['AWS_DEFAULT_PROFILE'] || 'default'
|
|
109
161
|
end
|
|
110
162
|
|
|
111
163
|
def shared_credentials(options)
|
|
112
164
|
profile_name = determine_profile_name(options)
|
|
113
|
-
SharedCredentials.new(profile_name: profile_name)
|
|
165
|
+
creds = SharedCredentials.new(profile_name: profile_name)
|
|
166
|
+
creds.metrics = ['CREDENTIALS_PROFILE']
|
|
167
|
+
creds
|
|
168
|
+
rescue Errors::NoSuchProfileError
|
|
169
|
+
nil
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def login_credentials(options)
|
|
173
|
+
return unless Aws.shared_config.config_enabled?
|
|
174
|
+
|
|
175
|
+
profile_name = determine_profile_name(options)
|
|
176
|
+
region = options[:config].region if options[:config]
|
|
177
|
+
Aws.shared_config.login_credentials_from_config(profile: profile_name, region: region)
|
|
114
178
|
rescue Errors::NoSuchProfileError
|
|
115
179
|
nil
|
|
116
180
|
end
|
|
117
181
|
|
|
118
182
|
def process_credentials(options)
|
|
119
183
|
profile_name = determine_profile_name(options)
|
|
120
|
-
if Aws.shared_config.config_enabled?
|
|
121
|
-
|
|
122
|
-
|
|
184
|
+
if Aws.shared_config.config_enabled?
|
|
185
|
+
process_provider = Aws.shared_config.credential_process(profile: profile_name)
|
|
186
|
+
if process_provider
|
|
187
|
+
creds = ProcessCredentials.new([process_provider])
|
|
188
|
+
creds.metrics << 'CREDENTIALS_PROFILE_PROCESS'
|
|
189
|
+
creds
|
|
190
|
+
end
|
|
123
191
|
end
|
|
124
192
|
rescue Errors::NoSuchProfileError
|
|
125
193
|
nil
|
|
@@ -149,7 +217,11 @@ module Aws
|
|
|
149
217
|
role_session_name: ENV['AWS_ROLE_SESSION_NAME']
|
|
150
218
|
}
|
|
151
219
|
cfg[:region] = region if region
|
|
152
|
-
|
|
220
|
+
Aws::Plugins::UserAgent.metric('CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN') do
|
|
221
|
+
creds = AssumeRoleWebIdentityCredentials.new(cfg)
|
|
222
|
+
creds.metrics << 'CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN'
|
|
223
|
+
creds
|
|
224
|
+
end
|
|
153
225
|
elsif Aws.shared_config.config_enabled?
|
|
154
226
|
profile = options[:config].profile if options[:config]
|
|
155
227
|
Aws.shared_config.assume_role_web_identity_credentials_from_config(
|
|
@@ -164,7 +236,7 @@ module Aws
|
|
|
164
236
|
if ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] ||
|
|
165
237
|
ENV['AWS_CONTAINER_CREDENTIALS_FULL_URI']
|
|
166
238
|
ECSCredentials.new(options)
|
|
167
|
-
|
|
239
|
+
elsif !(ENV.fetch('AWS_EC2_METADATA_DISABLED', 'false').downcase == 'true')
|
|
168
240
|
InstanceProfileCredentials.new(options.merge(profile: profile_name))
|
|
169
241
|
end
|
|
170
242
|
end
|
|
@@ -174,10 +246,14 @@ module Aws
|
|
|
174
246
|
profile: profile_name,
|
|
175
247
|
chain_config: @config
|
|
176
248
|
}
|
|
177
|
-
if options[:config]
|
|
249
|
+
if options[:config]&.region
|
|
178
250
|
assume_opts[:region] = options[:config].region
|
|
179
251
|
end
|
|
180
252
|
Aws.shared_config.assume_role_credentials_from_config(assume_opts)
|
|
181
253
|
end
|
|
254
|
+
|
|
255
|
+
def with_metrics(metrics, &block)
|
|
256
|
+
Aws::Plugins::UserAgent.metric(*metrics, &block)
|
|
257
|
+
end
|
|
182
258
|
end
|
|
183
259
|
end
|
|
@@ -6,21 +6,34 @@ module Aws
|
|
|
6
6
|
# @param [String] access_key_id
|
|
7
7
|
# @param [String] secret_access_key
|
|
8
8
|
# @param [String] session_token (nil)
|
|
9
|
-
|
|
9
|
+
# @param [Hash] kwargs
|
|
10
|
+
# @option kwargs [String] :credential_scope (nil)
|
|
11
|
+
def initialize(access_key_id, secret_access_key, session_token = nil,
|
|
12
|
+
**kwargs)
|
|
10
13
|
@access_key_id = access_key_id
|
|
11
14
|
@secret_access_key = secret_access_key
|
|
12
15
|
@session_token = session_token
|
|
16
|
+
@account_id = kwargs[:account_id]
|
|
17
|
+
@metrics = ['CREDENTIALS_CODE']
|
|
13
18
|
end
|
|
14
19
|
|
|
15
|
-
# @return [String
|
|
20
|
+
# @return [String]
|
|
16
21
|
attr_reader :access_key_id
|
|
17
22
|
|
|
18
|
-
# @return [String
|
|
23
|
+
# @return [String]
|
|
19
24
|
attr_reader :secret_access_key
|
|
20
25
|
|
|
21
26
|
# @return [String, nil]
|
|
22
27
|
attr_reader :session_token
|
|
23
28
|
|
|
29
|
+
# @return [String, nil]
|
|
30
|
+
attr_reader :account_id
|
|
31
|
+
|
|
32
|
+
# @api private
|
|
33
|
+
# Returns the credentials source. Used for tracking credentials
|
|
34
|
+
# related UserAgent metrics.
|
|
35
|
+
attr_accessor :metrics
|
|
36
|
+
|
|
24
37
|
# @return [Credentials]
|
|
25
38
|
def credentials
|
|
26
39
|
self
|
|
@@ -30,9 +43,9 @@ module Aws
|
|
|
30
43
|
# access key are both set.
|
|
31
44
|
def set?
|
|
32
45
|
!access_key_id.nil? &&
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
!access_key_id.empty? &&
|
|
47
|
+
!secret_access_key.nil? &&
|
|
48
|
+
!secret_access_key.empty?
|
|
36
49
|
end
|
|
37
50
|
|
|
38
51
|
# Removing the secret access key from the default inspect string.
|
|
@@ -183,7 +183,7 @@ module Aws
|
|
|
183
183
|
|
|
184
184
|
def open_connection
|
|
185
185
|
uri = URI.parse(@endpoint)
|
|
186
|
-
http = Net::HTTP.new(uri.hostname || @endpoint,
|
|
186
|
+
http = Net::HTTP.new(uri.hostname || @endpoint, uri.port || @port)
|
|
187
187
|
http.open_timeout = @http_open_timeout
|
|
188
188
|
http.read_timeout = @http_read_timeout
|
|
189
189
|
http.set_debug_output(@http_debug_output) if @http_debug_output
|
|
@@ -42,26 +42,26 @@ module Aws
|
|
|
42
42
|
# @option options [Integer] :retries (5) Number of times to retry
|
|
43
43
|
# when retrieving credentials.
|
|
44
44
|
# @option options [String] :ip_address ('169.254.170.2') This value is
|
|
45
|
-
# ignored if
|
|
46
|
-
# @option options [Integer] :port (80) This value is ignored if
|
|
47
|
-
# is set and
|
|
45
|
+
# ignored if `:endpoint` is set and `:credential_path` is not set.
|
|
46
|
+
# @option options [Integer] :port (80) This value is ignored if `:endpoint`
|
|
47
|
+
# is set and `:credential_path` is not set.
|
|
48
48
|
# @option options [String] :credential_path By default, the value of the
|
|
49
|
-
# AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable.
|
|
49
|
+
# `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` environment variable.
|
|
50
50
|
# @option options [String] :endpoint The container credential endpoint.
|
|
51
|
-
# By default, this is the value of the AWS_CONTAINER_CREDENTIALS_FULL_URI
|
|
52
|
-
# environment variable. This value is ignored if
|
|
53
|
-
# ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] is set.
|
|
51
|
+
# By default, this is the value of the `AWS_CONTAINER_CREDENTIALS_FULL_URI`
|
|
52
|
+
# environment variable. This value is ignored if `:credential_path` or
|
|
53
|
+
# `ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']` is set.
|
|
54
54
|
# @option options [Float] :http_open_timeout (5)
|
|
55
55
|
# @option options [Float] :http_read_timeout (5)
|
|
56
|
-
# @option options [
|
|
56
|
+
# @option options [IO] :http_debug_output (nil) HTTP wire
|
|
57
|
+
# traces are sent to this object. You can specify something
|
|
58
|
+
# like `$stdout`.
|
|
59
|
+
# @option options [Numeric, Proc] :backoff By default, failures are retried
|
|
57
60
|
# with exponential back-off, i.e. `sleep(1.2 ** num_failures)`. You can
|
|
58
61
|
# pass a number of seconds to sleep between failed attempts, or
|
|
59
62
|
# a Proc that accepts the number of failures.
|
|
60
|
-
# @option options [
|
|
61
|
-
#
|
|
62
|
-
# like $stdout.
|
|
63
|
-
# @option options [Callable] before_refresh Proc called before
|
|
64
|
-
# credentials are refreshed. `before_refresh` is called
|
|
63
|
+
# @option options [Proc] :before_refresh A Proc called before
|
|
64
|
+
# credentials are refreshed. `:before_refresh` is called
|
|
65
65
|
# with an instance of this object when
|
|
66
66
|
# AWS credentials are required and need to be refreshed.
|
|
67
67
|
def initialize(options = {})
|
|
@@ -77,6 +77,7 @@ module Aws
|
|
|
77
77
|
@http_debug_output = options[:http_debug_output]
|
|
78
78
|
@backoff = backoff(options[:backoff])
|
|
79
79
|
@async_refresh = false
|
|
80
|
+
@metrics = ['CREDENTIALS_HTTP']
|
|
80
81
|
super
|
|
81
82
|
end
|
|
82
83
|
|
|
@@ -207,7 +208,8 @@ module Aws
|
|
|
207
208
|
end
|
|
208
209
|
rescue TokenFileReadError, InvalidTokenError
|
|
209
210
|
raise
|
|
210
|
-
rescue StandardError
|
|
211
|
+
rescue StandardError => e
|
|
212
|
+
warn("Error retrieving ECS Credentials: #{e.message}")
|
|
211
213
|
'{}'
|
|
212
214
|
end
|
|
213
215
|
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
module Aws
|
|
4
4
|
module Endpoints
|
|
5
5
|
class Endpoint
|
|
6
|
-
def initialize(url:, properties: {}, headers: {})
|
|
6
|
+
def initialize(url:, properties: {}, headers: {}, metadata: {})
|
|
7
7
|
@url = url
|
|
8
8
|
@properties = properties
|
|
9
9
|
@headers = headers
|
|
10
|
+
@metadata = metadata
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
attr_reader :url
|
|
13
14
|
attr_reader :properties
|
|
14
15
|
attr_reader :headers
|
|
16
|
+
attr_reader :metadata
|
|
15
17
|
end
|
|
16
18
|
end
|
|
17
19
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require "cgi/escape"
|
|
4
|
+
require "cgi/util" if RUBY_VERSION < "3.5"
|
|
4
5
|
|
|
5
6
|
module Aws
|
|
6
7
|
module Endpoints
|
|
@@ -28,7 +29,11 @@ module Aws
|
|
|
28
29
|
|
|
29
30
|
val = if (index = parts.first[BRACKET_REGEX, 1])
|
|
30
31
|
# remove brackets and index from part before indexing
|
|
31
|
-
|
|
32
|
+
if (base = parts.first.gsub(BRACKET_REGEX, '')) && !base.empty?
|
|
33
|
+
value[base][index.to_i]
|
|
34
|
+
else
|
|
35
|
+
value[index.to_i]
|
|
36
|
+
end
|
|
32
37
|
else
|
|
33
38
|
value[parts.first]
|
|
34
39
|
end
|
|
@@ -90,14 +95,7 @@ module Aws
|
|
|
90
95
|
|
|
91
96
|
# aws.partition(value: string) Option<Partition>
|
|
92
97
|
def self.aws_partition(value)
|
|
93
|
-
partition
|
|
94
|
-
Aws::Partitions.find { |p| p.region?(value) } ||
|
|
95
|
-
Aws::Partitions.find { |p| value.match(p.region_regex) } ||
|
|
96
|
-
Aws::Partitions.find { |p| p.name == 'aws' }
|
|
97
|
-
|
|
98
|
-
return nil unless partition
|
|
99
|
-
|
|
100
|
-
partition.metadata
|
|
98
|
+
Aws::Partitions::Metadata.partition(value)
|
|
101
99
|
end
|
|
102
100
|
|
|
103
101
|
# aws.parseArn(value: string) Option<ARN>
|
|
@@ -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 sigv4-s3express].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)
|