aws-sdk-core 3.181.0 → 3.209.1
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 +413 -0
- data/VERSION +1 -1
- data/lib/aws-defaults.rb +4 -1
- data/lib/aws-sdk-core/assume_role_credentials.rb +12 -5
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +13 -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/cbor_engine.rb +19 -0
- data/lib/aws-sdk-core/cbor/decoder.rb +310 -0
- data/lib/aws-sdk-core/cbor/encoder.rb +243 -0
- data/lib/aws-sdk-core/cbor.rb +106 -0
- data/lib/aws-sdk-core/client_side_monitoring.rb +9 -0
- data/lib/aws-sdk-core/client_stubs.rb +18 -14
- data/lib/aws-sdk-core/credential_provider.rb +1 -1
- data/lib/aws-sdk-core/credential_provider_chain.rb +13 -6
- data/lib/aws-sdk-core/credentials.rb +13 -6
- data/lib/aws-sdk-core/ec2_metadata.rb +1 -1
- data/lib/aws-sdk-core/ecs_credentials.rb +78 -11
- data/lib/aws-sdk-core/endpoints/endpoint.rb +3 -1
- data/lib/aws-sdk-core/endpoints/matchers.rb +18 -10
- data/lib/aws-sdk-core/endpoints.rb +74 -18
- data/lib/aws-sdk-core/error_handler.rb +41 -0
- data/lib/aws-sdk-core/errors.rb +12 -3
- data/lib/aws-sdk-core/event_emitter.rb +0 -16
- data/lib/aws-sdk-core/instance_profile_credentials.rb +55 -32
- data/lib/aws-sdk-core/json/builder.rb +8 -1
- data/lib/aws-sdk-core/json/error_handler.rb +15 -10
- data/lib/aws-sdk-core/json/handler.rb +12 -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 +33 -3
- 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.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 +9 -4
- data/lib/aws-sdk-core/plugins/bearer_authorization.rb +2 -0
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +6 -3
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +1 -0
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +9 -3
- data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
- data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -1
- 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 +33 -3
- 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 +27 -15
- 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 +30 -2
- 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 +70 -26
- data/lib/aws-sdk-core/plugins.rb +39 -0
- data/lib/aws-sdk-core/process_credentials.rb +47 -28
- 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 +12 -6
- 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/content_type_handler.rb +45 -0
- data/lib/aws-sdk-core/rpc_v2/error_handler.rb +84 -0
- data/lib/aws-sdk-core/rpc_v2/handler.rb +78 -0
- data/lib/aws-sdk-core/rpc_v2/parser.rb +90 -0
- data/lib/aws-sdk-core/rpc_v2.rb +6 -0
- data/lib/aws-sdk-core/shared_config.rb +7 -2
- data/lib/aws-sdk-core/shared_credentials.rb +0 -7
- data/lib/aws-sdk-core/sso_credentials.rb +2 -1
- data/lib/aws-sdk-core/stubbing/protocols/rpc_v2.rb +41 -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/util.rb +39 -0
- 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 +32 -42
- 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 +119 -55
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_provider.rb +30 -24
- data/lib/aws-sdk-sso/endpoints.rb +4 -16
- data/lib/aws-sdk-sso/plugins/endpoints.rb +22 -8
- data/lib/aws-sdk-sso/types.rb +1 -0
- data/lib/aws-sdk-sso.rb +15 -11
- data/lib/aws-sdk-ssooidc/client.rb +504 -83
- data/lib/aws-sdk-ssooidc/client_api.rb +83 -1
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +30 -24
- data/lib/aws-sdk-ssooidc/endpoints.rb +14 -12
- data/lib/aws-sdk-ssooidc/errors.rb +52 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +24 -8
- data/lib/aws-sdk-ssooidc/types.rb +373 -51
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +129 -57
- data/lib/aws-sdk-sts/client_api.rb +15 -11
- data/lib/aws-sdk-sts/customizations.rb +5 -1
- data/lib/aws-sdk-sts/endpoint_provider.rb +2 -2
- data/lib/aws-sdk-sts/endpoints.rb +8 -32
- data/lib/aws-sdk-sts/plugins/endpoints.rb +22 -8
- data/lib/aws-sdk-sts/presigner.rb +1 -1
- data/lib/aws-sdk-sts/types.rb +19 -4
- data/lib/aws-sdk-sts.rb +15 -11
- data/lib/seahorse/client/async_base.rb +1 -1
- data/lib/seahorse/client/async_response.rb +19 -0
- data/lib/seahorse/client/base.rb +18 -7
- data/lib/seahorse/client/h2/handler.rb +14 -3
- data/lib/seahorse/client/handler.rb +1 -1
- data/lib/seahorse/client/net_http/connection_pool.rb +11 -11
- data/lib/seahorse/client/net_http/handler.rb +21 -9
- data/lib/seahorse/client/net_http/patches.rb +1 -4
- data/lib/seahorse/client/plugin.rb +9 -0
- data/lib/seahorse/client/plugins/endpoint.rb +0 -1
- data/lib/seahorse/client/plugins/h2.rb +3 -3
- data/lib/seahorse/client/plugins/net_http.rb +57 -16
- data/lib/seahorse/client/request_context.rb +8 -1
- data/lib/seahorse/model/shapes.rb +2 -2
- 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/base.rbs +25 -0
- data/sig/seahorse/client/handler_builder.rbs +16 -0
- data/sig/seahorse/client/response.rbs +61 -0
- metadata +59 -17
- /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
data/lib/aws-sdk-sts/types.rb
CHANGED
|
@@ -288,7 +288,16 @@ module Aws::STS
|
|
|
288
288
|
# @return [String]
|
|
289
289
|
#
|
|
290
290
|
# @!attribute [rw] provided_contexts
|
|
291
|
-
#
|
|
291
|
+
# A list of previously acquired trusted context assertions in the
|
|
292
|
+
# format of a JSON array. The trusted context assertion is signed and
|
|
293
|
+
# encrypted by Amazon Web Services STS.
|
|
294
|
+
#
|
|
295
|
+
# The following is an example of a `ProvidedContext` value that
|
|
296
|
+
# includes a single trusted context assertion and the ARN of the
|
|
297
|
+
# context provider from which the trusted context assertion was
|
|
298
|
+
# generated.
|
|
299
|
+
#
|
|
300
|
+
# `[\{"ProviderArn":"arn:aws:iam::aws:contextProvider/IdentityCenter","ContextAssertion":"trusted-context-assertion"\}]`
|
|
292
301
|
# @return [Array<Types::ProvidedContext>]
|
|
293
302
|
#
|
|
294
303
|
# @see http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumeRoleRequest AWS API Documentation
|
|
@@ -1503,14 +1512,19 @@ module Aws::STS
|
|
|
1503
1512
|
include Aws::Structure
|
|
1504
1513
|
end
|
|
1505
1514
|
|
|
1506
|
-
#
|
|
1515
|
+
# Contains information about the provided context. This includes the
|
|
1516
|
+
# signed and encrypted trusted context assertion and the context
|
|
1517
|
+
# provider ARN from which the trusted context assertion was generated.
|
|
1507
1518
|
#
|
|
1508
1519
|
# @!attribute [rw] provider_arn
|
|
1509
|
-
#
|
|
1520
|
+
# The context provider ARN from which the trusted context assertion
|
|
1521
|
+
# was generated.
|
|
1510
1522
|
# @return [String]
|
|
1511
1523
|
#
|
|
1512
1524
|
# @!attribute [rw] context_assertion
|
|
1513
|
-
#
|
|
1525
|
+
# The signed and encrypted trusted context assertion generated by the
|
|
1526
|
+
# context provider. The trusted context assertion is signed and
|
|
1527
|
+
# encrypted by Amazon Web Services STS.
|
|
1514
1528
|
# @return [String]
|
|
1515
1529
|
#
|
|
1516
1530
|
# @see http://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/ProvidedContext AWS API Documentation
|
|
@@ -1588,3 +1602,4 @@ module Aws::STS
|
|
|
1588
1602
|
|
|
1589
1603
|
end
|
|
1590
1604
|
end
|
|
1605
|
+
|
data/lib/aws-sdk-sts.rb
CHANGED
|
@@ -13,16 +13,7 @@ unless Module.const_defined?(:Aws)
|
|
|
13
13
|
require 'aws-sigv4'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
require_relative 'aws-sdk-sts/client_api'
|
|
18
|
-
require_relative 'aws-sdk-sts/plugins/endpoints.rb'
|
|
19
|
-
require_relative 'aws-sdk-sts/client'
|
|
20
|
-
require_relative 'aws-sdk-sts/errors'
|
|
21
|
-
require_relative 'aws-sdk-sts/resource'
|
|
22
|
-
require_relative 'aws-sdk-sts/endpoint_parameters'
|
|
23
|
-
require_relative 'aws-sdk-sts/endpoint_provider'
|
|
24
|
-
require_relative 'aws-sdk-sts/endpoints'
|
|
25
|
-
require_relative 'aws-sdk-sts/customizations'
|
|
16
|
+
Aws::Plugins::GlobalConfiguration.add_identifier(:sts)
|
|
26
17
|
|
|
27
18
|
# This module provides support for AWS Security Token Service. This module is available in the
|
|
28
19
|
# `aws-sdk-core` gem.
|
|
@@ -53,7 +44,20 @@ require_relative 'aws-sdk-sts/customizations'
|
|
|
53
44
|
#
|
|
54
45
|
# @!group service
|
|
55
46
|
module Aws::STS
|
|
47
|
+
autoload :Types, 'aws-sdk-sts/types'
|
|
48
|
+
autoload :ClientApi, 'aws-sdk-sts/client_api'
|
|
49
|
+
module Plugins
|
|
50
|
+
autoload :Endpoints, 'aws-sdk-sts/plugins/endpoints.rb'
|
|
51
|
+
end
|
|
52
|
+
autoload :Client, 'aws-sdk-sts/client'
|
|
53
|
+
autoload :Errors, 'aws-sdk-sts/errors'
|
|
54
|
+
autoload :Resource, 'aws-sdk-sts/resource'
|
|
55
|
+
autoload :EndpointParameters, 'aws-sdk-sts/endpoint_parameters'
|
|
56
|
+
autoload :EndpointProvider, 'aws-sdk-sts/endpoint_provider'
|
|
57
|
+
autoload :Endpoints, 'aws-sdk-sts/endpoints'
|
|
56
58
|
|
|
57
|
-
GEM_VERSION = '3.
|
|
59
|
+
GEM_VERSION = '3.209.1'
|
|
58
60
|
|
|
59
61
|
end
|
|
62
|
+
|
|
63
|
+
require_relative 'aws-sdk-sts/customizations'
|
|
@@ -5,12 +5,12 @@ module Seahorse
|
|
|
5
5
|
class AsyncBase < Seahorse::Client::Base
|
|
6
6
|
|
|
7
7
|
# default H2 plugins
|
|
8
|
+
# @api private
|
|
8
9
|
@plugins = PluginList.new([
|
|
9
10
|
Plugins::Endpoint,
|
|
10
11
|
Plugins::H2,
|
|
11
12
|
Plugins::ResponseTarget
|
|
12
13
|
])
|
|
13
|
-
|
|
14
14
|
def initialize(plugins, options)
|
|
15
15
|
super
|
|
16
16
|
@connection = H2::Connection.new(options)
|
|
@@ -12,24 +12,43 @@ module Seahorse
|
|
|
12
12
|
@sync_queue = options[:sync_queue]
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
# @return [RequestContext]
|
|
15
16
|
def context
|
|
16
17
|
@response.context
|
|
17
18
|
end
|
|
18
19
|
|
|
20
|
+
# @return [StandardError, nil]
|
|
19
21
|
def error
|
|
20
22
|
@response.error
|
|
21
23
|
end
|
|
22
24
|
|
|
25
|
+
# @overload on(status_code, &block)
|
|
26
|
+
# @param [Integer] status_code The block will be
|
|
27
|
+
# triggered only for responses with the given status code.
|
|
28
|
+
#
|
|
29
|
+
# @overload on(status_code_range, &block)
|
|
30
|
+
# @param [Range<Integer>] status_code_range The block will be
|
|
31
|
+
# triggered only for responses with a status code that falls
|
|
32
|
+
# witin the given range.
|
|
33
|
+
#
|
|
34
|
+
# @return [self]
|
|
23
35
|
def on(range, &block)
|
|
24
36
|
@response.on(range, &block)
|
|
25
37
|
self
|
|
26
38
|
end
|
|
27
39
|
|
|
40
|
+
# @api private
|
|
28
41
|
def on_complete(&block)
|
|
29
42
|
@response.on_complete(&block)
|
|
30
43
|
self
|
|
31
44
|
end
|
|
32
45
|
|
|
46
|
+
# @return [Boolean] Returns `true` if the response is complete with
|
|
47
|
+
# no error.
|
|
48
|
+
def successful?
|
|
49
|
+
@response.error.nil?
|
|
50
|
+
end
|
|
51
|
+
|
|
33
52
|
def wait
|
|
34
53
|
if error && context.config.raise_response_errors
|
|
35
54
|
raise error
|
data/lib/seahorse/client/base.rb
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'thread'
|
|
4
|
-
|
|
5
3
|
module Seahorse
|
|
6
4
|
module Client
|
|
7
5
|
class Base
|
|
@@ -9,6 +7,7 @@ module Seahorse
|
|
|
9
7
|
include HandlerBuilder
|
|
10
8
|
|
|
11
9
|
# default plugins
|
|
10
|
+
# @api private
|
|
12
11
|
@plugins = PluginList.new([
|
|
13
12
|
Plugins::Endpoint,
|
|
14
13
|
Plugins::NetHttp,
|
|
@@ -59,6 +58,7 @@ module Seahorse
|
|
|
59
58
|
def build_config(plugins, options)
|
|
60
59
|
config = Configuration.new
|
|
61
60
|
config.add_option(:api)
|
|
61
|
+
config.add_option(:plugins)
|
|
62
62
|
plugins.each do |plugin|
|
|
63
63
|
plugin.add_options(config) if plugin.respond_to?(:add_options)
|
|
64
64
|
end
|
|
@@ -95,9 +95,9 @@ module Seahorse
|
|
|
95
95
|
class << self
|
|
96
96
|
|
|
97
97
|
def new(options = {})
|
|
98
|
-
plugins = build_plugins
|
|
99
98
|
options = options.dup
|
|
100
|
-
|
|
99
|
+
plugins = build_plugins(self.plugins + options.fetch(:plugins, []))
|
|
100
|
+
plugins = before_initialize(plugins, options)
|
|
101
101
|
client = allocate
|
|
102
102
|
client.send(:initialize, plugins, options)
|
|
103
103
|
client
|
|
@@ -208,17 +208,28 @@ module Seahorse
|
|
|
208
208
|
include(operations_module)
|
|
209
209
|
end
|
|
210
210
|
|
|
211
|
-
def build_plugins
|
|
211
|
+
def build_plugins(plugins)
|
|
212
212
|
plugins.map { |plugin| plugin.is_a?(Class) ? plugin.new : plugin }
|
|
213
213
|
end
|
|
214
214
|
|
|
215
215
|
def before_initialize(plugins, options)
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
queue = Queue.new
|
|
217
|
+
plugins.each { |plugin| queue.push(plugin) }
|
|
218
|
+
until queue.empty?
|
|
219
|
+
plugin = queue.pop
|
|
220
|
+
next unless plugin.respond_to?(:before_initialize)
|
|
221
|
+
|
|
222
|
+
plugins_before = options.fetch(:plugins, [])
|
|
223
|
+
plugin.before_initialize(self, options)
|
|
224
|
+
plugins_after = build_plugins(options.fetch(:plugins, []) - plugins_before)
|
|
225
|
+
# Plugins with before_initialize can add other plugins
|
|
226
|
+
plugins_after.each { |p| queue.push(p); plugins << p }
|
|
218
227
|
end
|
|
228
|
+
plugins
|
|
219
229
|
end
|
|
220
230
|
|
|
221
231
|
def inherited(subclass)
|
|
232
|
+
super
|
|
222
233
|
subclass.instance_variable_set('@plugins', PluginList.new(@plugins))
|
|
223
234
|
end
|
|
224
235
|
|
|
@@ -27,6 +27,12 @@ module Seahorse
|
|
|
27
27
|
class Handler < Client::Handler
|
|
28
28
|
|
|
29
29
|
def call(context)
|
|
30
|
+
span_wrapper(context) { _call(context) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def _call(context)
|
|
30
36
|
stream = nil
|
|
31
37
|
begin
|
|
32
38
|
conn = context.client.connection
|
|
@@ -80,8 +86,6 @@ module Seahorse
|
|
|
80
86
|
)
|
|
81
87
|
end
|
|
82
88
|
|
|
83
|
-
private
|
|
84
|
-
|
|
85
89
|
def _register_callbacks(resp, stream, stream_mutex, close_condition, sync_queue)
|
|
86
90
|
stream.on(:headers) do |headers|
|
|
87
91
|
resp.signal_headers(headers)
|
|
@@ -126,6 +130,7 @@ module Seahorse
|
|
|
126
130
|
# https://http2.github.io/http2-spec/#rfc.section.8.1.2.3
|
|
127
131
|
def _h2_headers(req)
|
|
128
132
|
headers = {}
|
|
133
|
+
headers[':authority'] = req.endpoint.host
|
|
129
134
|
headers[':method'] = req.http_method.upcase
|
|
130
135
|
headers[':scheme'] = req.endpoint.scheme
|
|
131
136
|
headers[':path'] = req.endpoint.path.empty? ? '/' : req.endpoint.path
|
|
@@ -145,8 +150,14 @@ module Seahorse
|
|
|
145
150
|
end
|
|
146
151
|
end
|
|
147
152
|
|
|
153
|
+
def span_wrapper(context, &block)
|
|
154
|
+
context.tracer.in_span(
|
|
155
|
+
'Handler.H2',
|
|
156
|
+
attributes: Aws::Telemetry.http_request_attrs(context),
|
|
157
|
+
&block
|
|
158
|
+
)
|
|
159
|
+
end
|
|
148
160
|
end
|
|
149
|
-
|
|
150
161
|
end
|
|
151
162
|
end
|
|
152
163
|
end
|
|
@@ -34,7 +34,9 @@ module Seahorse
|
|
|
34
34
|
ssl_ca_bundle: nil,
|
|
35
35
|
ssl_ca_directory: nil,
|
|
36
36
|
ssl_ca_store: nil,
|
|
37
|
-
ssl_timeout: nil
|
|
37
|
+
ssl_timeout: nil,
|
|
38
|
+
ssl_cert: nil,
|
|
39
|
+
ssl_key: nil
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
# @api private
|
|
@@ -119,11 +121,7 @@ module Seahorse
|
|
|
119
121
|
# pool, not counting those currently in use.
|
|
120
122
|
def size
|
|
121
123
|
@pool_mutex.synchronize do
|
|
122
|
-
size
|
|
123
|
-
@pool.each_pair do |endpoint,sessions|
|
|
124
|
-
size += sessions.size
|
|
125
|
-
end
|
|
126
|
-
size
|
|
124
|
+
@pool.values.flatten.size
|
|
127
125
|
end
|
|
128
126
|
end
|
|
129
127
|
|
|
@@ -142,9 +140,7 @@ module Seahorse
|
|
|
142
140
|
# @return [nil]
|
|
143
141
|
def empty!
|
|
144
142
|
@pool_mutex.synchronize do
|
|
145
|
-
@pool.
|
|
146
|
-
sessions.each(&:finish)
|
|
147
|
-
end
|
|
143
|
+
@pool.values.flatten.map(&:finish)
|
|
148
144
|
@pool.clear
|
|
149
145
|
end
|
|
150
146
|
nil
|
|
@@ -252,7 +248,9 @@ module Seahorse
|
|
|
252
248
|
:ssl_ca_bundle => options[:ssl_ca_bundle],
|
|
253
249
|
:ssl_ca_directory => options[:ssl_ca_directory],
|
|
254
250
|
:ssl_ca_store => options[:ssl_ca_store],
|
|
255
|
-
:ssl_timeout => options[:ssl_timeout]
|
|
251
|
+
:ssl_timeout => options[:ssl_timeout],
|
|
252
|
+
:ssl_cert => options[:ssl_cert],
|
|
253
|
+
:ssl_key => options[:ssl_key]
|
|
256
254
|
}
|
|
257
255
|
end
|
|
258
256
|
|
|
@@ -297,6 +295,8 @@ module Seahorse
|
|
|
297
295
|
http.ca_file = ssl_ca_bundle if ssl_ca_bundle
|
|
298
296
|
http.ca_path = ssl_ca_directory if ssl_ca_directory
|
|
299
297
|
http.cert_store = ssl_ca_store if ssl_ca_store
|
|
298
|
+
http.cert = ssl_cert if ssl_cert
|
|
299
|
+
http.key = ssl_key if ssl_key
|
|
300
300
|
else
|
|
301
301
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
302
302
|
end
|
|
@@ -312,7 +312,7 @@ module Seahorse
|
|
|
312
312
|
# @note **Must** be called behind a `@pool_mutex` synchronize block.
|
|
313
313
|
def _clean
|
|
314
314
|
now = Aws::Util.monotonic_milliseconds
|
|
315
|
-
@pool.
|
|
315
|
+
@pool.values.each do |sessions|
|
|
316
316
|
sessions.delete_if do |session|
|
|
317
317
|
if session.last_used.nil? or now - session.last_used > http_idle_timeout * 1000
|
|
318
318
|
session.finish
|
|
@@ -23,17 +23,12 @@ module Seahorse
|
|
|
23
23
|
|
|
24
24
|
NETWORK_ERRORS = [
|
|
25
25
|
SocketError, EOFError, IOError, Timeout::Error,
|
|
26
|
-
Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE,
|
|
27
|
-
Errno::
|
|
28
|
-
|
|
26
|
+
Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE, Errno::EINVAL,
|
|
27
|
+
Errno::ETIMEDOUT, Errno::EHOSTUNREACH, Errno::ECONNREFUSED,
|
|
28
|
+
OpenSSL::SSL::SSLError, OpenSSL::SSL::SSLErrorWaitReadable,
|
|
29
29
|
Net::HTTPFatalError # for proxy connection failures
|
|
30
30
|
]
|
|
31
31
|
|
|
32
|
-
# does not exist in Ruby 1.9.3
|
|
33
|
-
if OpenSSL::SSL.const_defined?(:SSLErrorWaitReadable)
|
|
34
|
-
NETWORK_ERRORS << OpenSSL::SSL::SSLErrorWaitReadable
|
|
35
|
-
end
|
|
36
|
-
|
|
37
32
|
# @api private
|
|
38
33
|
DNS_ERROR_MESSAGES = [
|
|
39
34
|
'getaddrinfo: nodename nor servname provided, or not known', # MacOS
|
|
@@ -47,7 +42,13 @@ module Seahorse
|
|
|
47
42
|
# @param [RequestContext] context
|
|
48
43
|
# @return [Response]
|
|
49
44
|
def call(context)
|
|
50
|
-
|
|
45
|
+
span_wrapper(context) do
|
|
46
|
+
transmit(
|
|
47
|
+
context.config,
|
|
48
|
+
context.http_request,
|
|
49
|
+
context.http_response
|
|
50
|
+
)
|
|
51
|
+
end
|
|
51
52
|
Response.new(context: context)
|
|
52
53
|
end
|
|
53
54
|
|
|
@@ -197,6 +198,17 @@ module Seahorse
|
|
|
197
198
|
end
|
|
198
199
|
end
|
|
199
200
|
|
|
201
|
+
def span_wrapper(context, &block)
|
|
202
|
+
context.tracer.in_span(
|
|
203
|
+
'Handler.NetHttp',
|
|
204
|
+
attributes: Aws::Telemetry.http_request_attrs(context)
|
|
205
|
+
) do |span|
|
|
206
|
+
block.call
|
|
207
|
+
span.add_attributes(
|
|
208
|
+
Aws::Telemetry.http_response_attrs(context)
|
|
209
|
+
)
|
|
210
|
+
end
|
|
211
|
+
end
|
|
200
212
|
end
|
|
201
213
|
end
|
|
202
214
|
end
|
|
@@ -12,12 +12,9 @@ module Seahorse
|
|
|
12
12
|
|
|
13
13
|
def self.apply!
|
|
14
14
|
Net::HTTPGenericRequest.prepend(PatchDefaultContentType)
|
|
15
|
-
return unless RUBY_VERSION < '2.5'
|
|
16
|
-
|
|
17
|
-
Net::HTTP::IDEMPOTENT_METHODS_.clear
|
|
18
15
|
end
|
|
19
16
|
|
|
20
|
-
# For requests with
|
|
17
|
+
# For requests with bodies, Net::HTTP sets a default content type of:
|
|
21
18
|
# 'application/x-www-form-urlencoded'
|
|
22
19
|
# There are cases where we should not send content type at all.
|
|
23
20
|
# Even when no body is supplied, Net::HTTP uses a default empty body
|
|
@@ -111,7 +111,15 @@ module Seahorse
|
|
|
111
111
|
|
|
112
112
|
def initialize(name, options = {})
|
|
113
113
|
@name = name
|
|
114
|
+
# prevent unstable object shapes by ensuring
|
|
115
|
+
# order and presence of instance variables
|
|
116
|
+
@default = nil
|
|
117
|
+
@default_block = nil
|
|
118
|
+
@required = nil
|
|
119
|
+
@doc_type = nil
|
|
114
120
|
@doc_default = nil
|
|
121
|
+
@docstring = nil
|
|
122
|
+
@rbs_type = nil
|
|
115
123
|
options.each_pair do |opt_name, opt_value|
|
|
116
124
|
self.send("#{opt_name}=", opt_value)
|
|
117
125
|
end
|
|
@@ -124,6 +132,7 @@ module Seahorse
|
|
|
124
132
|
attr_accessor :doc_type
|
|
125
133
|
attr_writer :doc_default
|
|
126
134
|
attr_accessor :docstring
|
|
135
|
+
attr_accessor :rbs_type
|
|
127
136
|
|
|
128
137
|
def doc_default(options)
|
|
129
138
|
if @doc_default.nil? && !default.is_a?(Proc)
|
|
@@ -54,9 +54,9 @@ When `true`, HTTP2 debug output will be sent to the `:logger`.
|
|
|
54
54
|
DOCS
|
|
55
55
|
|
|
56
56
|
option(:enable_alpn, default: false, doc_type: 'Boolean', docstring: <<-DOCS)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
Set to `true` to enable ALPN in HTTP2 over TLS. Requires Openssl version >= 1.0.2.
|
|
58
|
+
Defaults to false. Note: not all service HTTP2 operations supports ALPN on server
|
|
59
|
+
side, please refer to service documentation.
|
|
60
60
|
DOCS
|
|
61
61
|
|
|
62
62
|
option(:logger)
|
|
@@ -7,37 +7,78 @@ module Seahorse
|
|
|
7
7
|
module Plugins
|
|
8
8
|
class NetHttp < Plugin
|
|
9
9
|
|
|
10
|
-
option(:http_proxy, default: nil, doc_type: String, docstring:
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
option(:http_proxy, default: nil, doc_type: "URI::HTTP,String", docstring: <<-DOCS)
|
|
11
|
+
A proxy to send requests through. Formatted like 'http://proxy.com:123'.
|
|
12
|
+
DOCS
|
|
13
|
+
|
|
14
|
+
option(:http_open_timeout, default: 15, doc_type: Float, docstring: <<-DOCS) do |cfg|
|
|
15
|
+
The default number of seconds to wait for response data.
|
|
16
|
+
This value can safely be set per-request on the session.
|
|
17
|
+
DOCS
|
|
13
18
|
resolve_http_open_timeout(cfg)
|
|
14
19
|
end
|
|
15
20
|
|
|
16
|
-
option(:http_read_timeout, default: 60, doc_type:
|
|
21
|
+
option(:http_read_timeout, default: 60, doc_type: Float, docstring: <<-DOCS) do |cfg|
|
|
22
|
+
The default number of seconds to wait for response data.
|
|
23
|
+
This value can safely be set per-request on the session.
|
|
24
|
+
DOCS
|
|
17
25
|
resolve_http_read_timeout(cfg)
|
|
18
26
|
end
|
|
19
27
|
|
|
20
|
-
option(:http_idle_timeout, default: 5, doc_type:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
option(:
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
option(:http_idle_timeout, default: 5, doc_type: Float, docstring: <<-DOCS)
|
|
29
|
+
The number of seconds a connection is allowed to sit idle before it
|
|
30
|
+
is considered stale. Stale connections are closed and removed from the
|
|
31
|
+
pool before making a request.
|
|
32
|
+
DOCS
|
|
33
|
+
|
|
34
|
+
option(:http_continue_timeout, default: 1, doc_type: Float, docstring: <<-DOCS)
|
|
35
|
+
The number of seconds to wait for a 100-continue response before sending the
|
|
36
|
+
request body. This option has no effect unless the request has "Expect"
|
|
37
|
+
header set to "100-continue". Defaults to `nil` which disables this
|
|
38
|
+
behaviour. This value can safely be set per request on the session.
|
|
39
|
+
DOCS
|
|
40
|
+
|
|
41
|
+
option(:http_wire_trace, default: false, doc_type: 'Boolean', docstring: <<-DOCS)
|
|
42
|
+
When `true`, HTTP debug output will be sent to the `:logger`.
|
|
43
|
+
DOCS
|
|
44
|
+
|
|
45
|
+
option(:ssl_verify_peer, default: true, doc_type: 'Boolean', docstring: <<-DOCS)
|
|
46
|
+
When `true`, SSL peer certificates are verified when establishing a connection.
|
|
47
|
+
DOCS
|
|
48
|
+
|
|
49
|
+
option(:ssl_ca_bundle, doc_type: String, docstring: <<-DOCS) do |cfg|
|
|
50
|
+
Full path to the SSL certificate authority bundle file that should be used when
|
|
51
|
+
verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
|
|
52
|
+
`:ssl_ca_directory` the the system default will be used if available.
|
|
53
|
+
DOCS
|
|
29
54
|
ENV['AWS_CA_BUNDLE'] ||
|
|
30
55
|
Aws.shared_config.ca_bundle(profile: cfg.profile) if cfg.respond_to?(:profile)
|
|
31
56
|
end
|
|
32
57
|
|
|
33
|
-
option(:ssl_ca_directory, default: nil, doc_type: String, docstring:
|
|
58
|
+
option(:ssl_ca_directory, default: nil, doc_type: String, docstring: <<-DOCS)
|
|
59
|
+
Full path of the directory that contains the unbundled SSL certificate
|
|
60
|
+
authority files for verifying peer certificates. If you do
|
|
61
|
+
not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
|
|
62
|
+
default will be used if available.
|
|
63
|
+
DOCS
|
|
34
64
|
|
|
35
|
-
option(:ssl_ca_store, default: nil, doc_type: String, docstring:
|
|
65
|
+
option(:ssl_ca_store, default: nil, doc_type: String, docstring: <<-DOCS)
|
|
66
|
+
Sets the X509::Store to verify peer certificate.
|
|
67
|
+
DOCS
|
|
36
68
|
|
|
37
|
-
option(:ssl_timeout, default: nil, doc_type: Float, docstring: '') do |cfg|
|
|
69
|
+
option(:ssl_timeout, default: nil, doc_type: Float, docstring: 'Sets the SSL timeout in seconds') do |cfg|
|
|
38
70
|
resolve_ssl_timeout(cfg)
|
|
39
71
|
end
|
|
40
72
|
|
|
73
|
+
option(:ssl_cert, default: nil, doc_type: OpenSSL::X509::Certificate, docstring: <<-DOCS)
|
|
74
|
+
Sets a client certificate when creating http connections.
|
|
75
|
+
DOCS
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
option(:ssl_key, default: nil, doc_type: OpenSSL::PKey, docstring: <<-DOCS)
|
|
79
|
+
Sets a client key when creating http connections.
|
|
80
|
+
DOCS
|
|
81
|
+
|
|
41
82
|
option(:logger) # for backwards compat
|
|
42
83
|
|
|
43
84
|
handler(Client::NetHttp::Handler, step: :send)
|
|
@@ -9,11 +9,14 @@ module Seahorse
|
|
|
9
9
|
# @option options [required,Symbol] :operation_name (nil)
|
|
10
10
|
# @option options [required,Model::Operation] :operation (nil)
|
|
11
11
|
# @option options [Model::Authorizer] :authorizer (nil)
|
|
12
|
+
# @option options [Client] :client (nil)
|
|
12
13
|
# @option options [Hash] :params ({})
|
|
13
14
|
# @option options [Configuration] :config (nil)
|
|
14
15
|
# @option options [Http::Request] :http_request (Http::Request.new)
|
|
15
16
|
# @option options [Http::Response] :http_response (Http::Response.new)
|
|
16
|
-
#
|
|
17
|
+
# @option options [Integer] :retries (0)
|
|
18
|
+
# @option options [Aws::Telemetry::TracerBase] :tracer (Aws::Telemetry::NoOpTracer.new)
|
|
19
|
+
# @options options [Hash] :metadata ({})
|
|
17
20
|
def initialize(options = {})
|
|
18
21
|
@operation_name = options[:operation_name]
|
|
19
22
|
@operation = options[:operation]
|
|
@@ -24,6 +27,7 @@ module Seahorse
|
|
|
24
27
|
@http_request = options[:http_request] || Http::Request.new
|
|
25
28
|
@http_response = options[:http_response] || Http::Response.new
|
|
26
29
|
@retries = 0
|
|
30
|
+
@tracer = options[:tracer] || Aws::Telemetry::NoOpTracer.new
|
|
27
31
|
@metadata = {}
|
|
28
32
|
end
|
|
29
33
|
|
|
@@ -54,6 +58,9 @@ module Seahorse
|
|
|
54
58
|
# @return [Integer]
|
|
55
59
|
attr_accessor :retries
|
|
56
60
|
|
|
61
|
+
# @return [Tracer]
|
|
62
|
+
attr_accessor :tracer
|
|
63
|
+
|
|
57
64
|
# @return [Hash]
|
|
58
65
|
attr_reader :metadata
|
|
59
66
|
|
|
@@ -75,7 +75,7 @@ module Seahorse
|
|
|
75
75
|
|
|
76
76
|
# @return [String, nil]
|
|
77
77
|
def location_name
|
|
78
|
-
@location_name || (shape && shape[
|
|
78
|
+
@location_name || (shape && shape['locationName'])
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def location_name= location_name
|
|
@@ -86,7 +86,7 @@ module Seahorse
|
|
|
86
86
|
def [](key)
|
|
87
87
|
if @metadata.key?(key.to_s)
|
|
88
88
|
@metadata[key.to_s]
|
|
89
|
-
|
|
89
|
+
elsif @shape
|
|
90
90
|
@shape[key.to_s]
|
|
91
91
|
end
|
|
92
92
|
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
module ClientStubs
|
|
3
|
+
def stub_responses: (Symbol operation_name, *untyped stubs) -> void
|
|
4
|
+
|
|
5
|
+
def api_requests: (?exclude_presign: bool) -> Array[{ operation_name: Symbol, params: untyped, context: untyped }]
|
|
6
|
+
| (?Hash[:exclude_presign, bool] options) -> Array[{ operation_name: Symbol, params: untyped, context: untyped }]
|
|
7
|
+
|
|
8
|
+
def stub_data: (Symbol operation_name, ?untyped data) -> untyped
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
module Errors
|
|
3
|
+
class NonSupportedRubyVersionError < RuntimeError
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
# The base class for all errors returned by an Amazon Web Service.
|
|
7
|
+
# All ~400 level client errors and ~500 level server errors are raised
|
|
8
|
+
# as service errors. This indicates it was an error returned from the
|
|
9
|
+
# service and not one generated by the client.
|
|
10
|
+
class ServiceError < RuntimeError
|
|
11
|
+
def initialize: (untyped context, String? message, ?untyped data) -> void
|
|
12
|
+
|
|
13
|
+
attr_reader code: String
|
|
14
|
+
|
|
15
|
+
attr_reader context: untyped
|
|
16
|
+
|
|
17
|
+
attr_reader data: untyped
|
|
18
|
+
|
|
19
|
+
attr_accessor self.code: String?
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
module Resources
|
|
3
|
+
class Collection[T]
|
|
4
|
+
include Enumerable[T]
|
|
5
|
+
|
|
6
|
+
def initialize: (Enumerable[Enumerable[T]] batches, ?size: Integer, ?limit: Integer) -> void
|
|
7
|
+
|
|
8
|
+
def each: () -> Enumerator[T, untyped]
|
|
9
|
+
| () { (T) -> untyped } -> Enumerator[T, untyped]
|
|
10
|
+
|
|
11
|
+
def size: () -> Integer?
|
|
12
|
+
|
|
13
|
+
alias length size
|
|
14
|
+
|
|
15
|
+
def first: () -> T?
|
|
16
|
+
| (Integer) -> self
|
|
17
|
+
|
|
18
|
+
def limit: (Integer) -> self
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|