aws-sdk-core 3.191.1 → 3.228.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +530 -1
- data/VERSION +1 -1
- data/lib/aws-defaults/default_configuration.rb +1 -2
- data/lib/aws-defaults.rb +4 -1
- data/lib/aws-sdk-core/arn.rb +1 -3
- data/lib/aws-sdk-core/assume_role_credentials.rb +13 -5
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +14 -7
- data/lib/aws-sdk-core/binary/decode_handler.rb +3 -9
- data/lib/aws-sdk-core/binary/encode_handler.rb +1 -1
- data/lib/aws-sdk-core/binary/event_builder.rb +34 -37
- data/lib/aws-sdk-core/binary/event_stream_decoder.rb +1 -0
- data/lib/aws-sdk-core/binary/event_stream_encoder.rb +4 -3
- data/lib/aws-sdk-core/cbor/decoder.rb +308 -0
- data/lib/aws-sdk-core/cbor/encoder.rb +243 -0
- data/lib/aws-sdk-core/cbor.rb +53 -0
- data/lib/aws-sdk-core/client_side_monitoring.rb +9 -0
- data/lib/aws-sdk-core/client_stubs.rb +30 -55
- data/lib/aws-sdk-core/credential_provider.rb +4 -0
- data/lib/aws-sdk-core/credential_provider_chain.rb +38 -11
- data/lib/aws-sdk-core/credentials.rb +19 -6
- data/lib/aws-sdk-core/ec2_metadata.rb +1 -1
- data/lib/aws-sdk-core/ecs_credentials.rb +1 -0
- data/lib/aws-sdk-core/endpoints/endpoint.rb +3 -1
- data/lib/aws-sdk-core/endpoints/matchers.rb +8 -10
- data/lib/aws-sdk-core/endpoints.rb +101 -21
- data/lib/aws-sdk-core/error_handler.rb +46 -0
- data/lib/aws-sdk-core/errors.rb +11 -2
- data/lib/aws-sdk-core/event_emitter.rb +1 -17
- data/lib/aws-sdk-core/instance_profile_credentials.rb +148 -158
- data/lib/aws-sdk-core/json/builder.rb +8 -1
- data/lib/aws-sdk-core/json/error_handler.rb +29 -13
- data/lib/aws-sdk-core/json/handler.rb +6 -6
- data/lib/aws-sdk-core/json/json_engine.rb +3 -1
- data/lib/aws-sdk-core/json/oj_engine.rb +7 -1
- data/lib/aws-sdk-core/json/parser.rb +6 -1
- data/lib/aws-sdk-core/json.rb +43 -14
- data/lib/aws-sdk-core/log/param_filter.rb +2 -2
- data/lib/aws-sdk-core/log/param_formatter.rb +7 -3
- data/lib/aws-sdk-core/log.rb +10 -0
- data/lib/aws-sdk-core/lru_cache.rb +75 -0
- data/lib/aws-sdk-core/pageable_response.rb +1 -1
- data/lib/aws-sdk-core/param_validator.rb +7 -2
- data/lib/aws-sdk-core/plugins/bearer_authorization.rb +2 -0
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +332 -169
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +0 -1
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +87 -68
- data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +40 -32
- data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
- data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -8
- data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
- data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +3 -1
- data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -24
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +6 -8
- data/lib/aws-sdk-core/plugins/protocols/query.rb +4 -2
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +3 -15
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +3 -0
- data/lib/aws-sdk-core/plugins/protocols/rpc_v2.rb +17 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +74 -25
- data/lib/aws-sdk-core/plugins/request_compression.rb +11 -2
- data/lib/aws-sdk-core/plugins/retry_errors.rb +10 -3
- data/lib/aws-sdk-core/plugins/sign.rb +42 -26
- data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -1
- data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -1
- data/lib/aws-sdk-core/plugins/stub_responses.rb +58 -9
- data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
- data/lib/aws-sdk-core/plugins/transfer_encoding.rb +16 -9
- data/lib/aws-sdk-core/plugins/user_agent.rb +101 -26
- data/lib/aws-sdk-core/plugins.rb +39 -0
- data/lib/aws-sdk-core/process_credentials.rb +48 -29
- data/lib/aws-sdk-core/query/ec2_handler.rb +27 -0
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +5 -7
- data/lib/aws-sdk-core/query/handler.rb +4 -4
- data/lib/aws-sdk-core/query/param_builder.rb +2 -2
- data/lib/aws-sdk-core/query.rb +2 -1
- data/lib/aws-sdk-core/resources.rb +8 -0
- data/lib/aws-sdk-core/rest/content_type_handler.rb +60 -0
- data/lib/aws-sdk-core/rest/handler.rb +3 -4
- data/lib/aws-sdk-core/rest/request/body.rb +32 -5
- data/lib/aws-sdk-core/rest/request/endpoint.rb +24 -4
- data/lib/aws-sdk-core/rest/request/headers.rb +15 -7
- data/lib/aws-sdk-core/rest/request/querystring_builder.rb +23 -11
- data/lib/aws-sdk-core/rest/response/body.rb +15 -1
- data/lib/aws-sdk-core/rest/response/header_list_parser.rb +79 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +8 -3
- data/lib/aws-sdk-core/rest.rb +1 -0
- data/lib/aws-sdk-core/rpc_v2/builder.rb +62 -0
- data/lib/aws-sdk-core/rpc_v2/cbor_engine.rb +18 -0
- data/lib/aws-sdk-core/rpc_v2/content_type_handler.rb +47 -0
- data/lib/aws-sdk-core/rpc_v2/error_handler.rb +95 -0
- data/lib/aws-sdk-core/rpc_v2/handler.rb +79 -0
- data/lib/aws-sdk-core/rpc_v2/parser.rb +98 -0
- data/lib/aws-sdk-core/rpc_v2.rb +69 -0
- data/lib/aws-sdk-core/shared_config.rb +79 -22
- data/lib/aws-sdk-core/shared_credentials.rb +1 -7
- data/lib/aws-sdk-core/sso_credentials.rb +4 -1
- data/lib/aws-sdk-core/static_token_provider.rb +1 -2
- data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +12 -11
- data/lib/aws-sdk-core/stubbing/protocols/json.rb +11 -10
- data/lib/aws-sdk-core/stubbing/protocols/query.rb +7 -6
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +2 -1
- data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +9 -8
- data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +6 -5
- data/lib/aws-sdk-core/stubbing/protocols/rpc_v2.rb +39 -0
- data/lib/aws-sdk-core/stubbing.rb +22 -0
- data/lib/aws-sdk-core/telemetry/base.rb +177 -0
- data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
- data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
- data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
- data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
- data/lib/aws-sdk-core/telemetry.rb +78 -0
- data/lib/aws-sdk-core/token.rb +3 -3
- data/lib/aws-sdk-core/token_provider.rb +4 -0
- data/lib/aws-sdk-core/token_provider_chain.rb +2 -6
- data/lib/aws-sdk-core/util.rb +41 -1
- data/lib/aws-sdk-core/waiters/poller.rb +10 -5
- data/lib/aws-sdk-core/xml/builder.rb +17 -9
- data/lib/aws-sdk-core/xml/error_handler.rb +35 -43
- data/lib/aws-sdk-core/xml/parser/frame.rb +4 -20
- data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
- data/lib/aws-sdk-core/xml/parser.rb +2 -6
- data/lib/aws-sdk-core.rb +82 -107
- data/lib/aws-sdk-sso/client.rb +185 -89
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-sso/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-sso/endpoints.rb +2 -54
- data/lib/aws-sdk-sso/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-sso/types.rb +1 -0
- data/lib/aws-sdk-sso.rb +15 -11
- data/lib/aws-sdk-ssooidc/client.rb +270 -109
- data/lib/aws-sdk-ssooidc/client_api.rb +33 -0
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-ssooidc/endpoints.rb +2 -54
- data/lib/aws-sdk-ssooidc/errors.rb +21 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-ssooidc/types.rb +125 -24
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +393 -141
- data/lib/aws-sdk-sts/client_api.rb +36 -8
- data/lib/aws-sdk-sts/customizations.rb +5 -1
- data/lib/aws-sdk-sts/endpoint_parameters.rb +10 -9
- data/lib/aws-sdk-sts/endpoint_provider.rb +50 -55
- data/lib/aws-sdk-sts/endpoints.rb +2 -118
- data/lib/aws-sdk-sts/errors.rb +15 -0
- data/lib/aws-sdk-sts/plugins/endpoints.rb +19 -28
- data/lib/aws-sdk-sts/presigner.rb +2 -6
- data/lib/aws-sdk-sts/types.rb +171 -28
- data/lib/aws-sdk-sts.rb +15 -11
- data/lib/seahorse/client/async_base.rb +4 -5
- data/lib/seahorse/client/async_response.rb +19 -0
- data/lib/seahorse/client/base.rb +18 -21
- data/lib/seahorse/client/h2/connection.rb +18 -28
- data/lib/seahorse/client/h2/handler.rb +14 -3
- data/lib/seahorse/client/handler.rb +1 -1
- data/lib/seahorse/client/http/response.rb +1 -1
- data/lib/seahorse/client/net_http/connection_pool.rb +15 -12
- data/lib/seahorse/client/net_http/handler.rb +21 -9
- data/lib/seahorse/client/networking_error.rb +1 -1
- data/lib/seahorse/client/plugin.rb +8 -0
- data/lib/seahorse/client/plugins/endpoint.rb +0 -1
- data/lib/seahorse/client/plugins/h2.rb +4 -4
- data/lib/seahorse/client/plugins/net_http.rb +57 -16
- data/lib/seahorse/client/request_context.rb +9 -2
- data/lib/seahorse/client/response.rb +2 -0
- data/lib/seahorse/model/shapes.rb +2 -2
- data/lib/seahorse/util.rb +2 -1
- data/sig/aws-sdk-core/async_client_stubs.rbs +21 -0
- data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
- data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
- data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
- data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
- data/sig/seahorse/client/async_base.rbs +18 -0
- metadata +96 -23
- /data/lib/aws-sdk-core/xml/parser/{engines/libxml.rb → libxml_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/nokogiri.rb → nokogiri_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/oga.rb → oga_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/ox.rb → ox_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/rexml.rb → rexml_engine.rb} +0 -0
@@ -12,62 +12,71 @@ module Aws
|
|
12
12
|
|
13
13
|
option(:session_token, doc_type: String, docstring: '')
|
14
14
|
|
15
|
+
option(:account_id, doc_type: String, docstring: '')
|
16
|
+
|
15
17
|
option(:profile,
|
16
18
|
doc_default: 'default',
|
17
19
|
doc_type: String,
|
18
|
-
docstring:
|
19
|
-
Used when loading credentials from the shared credentials file
|
20
|
-
|
20
|
+
docstring: <<~DOCS)
|
21
|
+
Used when loading credentials from the shared credentials file at `HOME/.aws/credentials`.
|
22
|
+
When not specified, 'default' is used.
|
21
23
|
DOCS
|
22
24
|
|
23
25
|
option(:credentials,
|
24
26
|
required: true,
|
25
27
|
doc_type: 'Aws::CredentialProvider',
|
26
28
|
rbs_type: 'untyped',
|
27
|
-
docstring:
|
28
|
-
Your AWS credentials. This can be an instance of any one of the
|
29
|
-
following classes:
|
30
|
-
|
31
|
-
* `Aws::Credentials` - Used for configuring static, non-refreshing
|
32
|
-
|
33
|
-
|
34
|
-
* `Aws::SharedCredentials` - Used for loading static credentials from a
|
35
|
-
|
36
|
-
|
37
|
-
* `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
|
38
|
-
|
39
|
-
* `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
|
40
|
-
|
41
|
-
|
42
|
-
* `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
|
43
|
-
|
44
|
-
|
45
|
-
* `Aws::ProcessCredentials` - Used for loading credentials from a
|
46
|
-
|
47
|
-
|
48
|
-
* `Aws::InstanceProfileCredentials` - Used for loading credentials
|
49
|
-
|
50
|
-
|
51
|
-
* `Aws::ECSCredentials` - Used for loading credentials from
|
52
|
-
|
53
|
-
|
54
|
-
* `Aws::CognitoIdentityCredentials` - Used for loading credentials
|
55
|
-
|
56
|
-
|
57
|
-
When `:credentials` are not configured directly, the following
|
58
|
-
locations will be searched for credentials:
|
59
|
-
|
60
|
-
* `Aws.config[:credentials]`
|
61
|
-
|
62
|
-
*
|
63
|
-
|
64
|
-
|
65
|
-
*
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
29
|
+
docstring: <<~DOCS
|
30
|
+
Your AWS credentials used for authentication. This can be an instance of any one of the
|
31
|
+
following classes:
|
32
|
+
|
33
|
+
* `Aws::Credentials` - Used for configuring static, non-refreshing
|
34
|
+
credentials.
|
35
|
+
|
36
|
+
* `Aws::SharedCredentials` - Used for loading static credentials from a
|
37
|
+
shared file, such as `~/.aws/config`.
|
38
|
+
|
39
|
+
* `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
|
40
|
+
|
41
|
+
* `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
|
42
|
+
assume a role after providing credentials via the web.
|
43
|
+
|
44
|
+
* `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
|
45
|
+
access token generated from `aws login`.
|
46
|
+
|
47
|
+
* `Aws::ProcessCredentials` - Used for loading credentials from a
|
48
|
+
process that outputs to stdout.
|
49
|
+
|
50
|
+
* `Aws::InstanceProfileCredentials` - Used for loading credentials
|
51
|
+
from an EC2 IMDS on an EC2 instance.
|
52
|
+
|
53
|
+
* `Aws::ECSCredentials` - Used for loading credentials from
|
54
|
+
instances running in ECS.
|
55
|
+
|
56
|
+
* `Aws::CognitoIdentityCredentials` - Used for loading credentials
|
57
|
+
from the Cognito Identity service.
|
58
|
+
|
59
|
+
When `:credentials` are not configured directly, the following
|
60
|
+
locations will be searched for credentials:
|
61
|
+
|
62
|
+
* `Aws.config[:credentials]`
|
63
|
+
|
64
|
+
* The `:access_key_id`, `:secret_access_key`, `:session_token`, and
|
65
|
+
`:account_id` options.
|
66
|
+
|
67
|
+
* `ENV['AWS_ACCESS_KEY_ID']`, `ENV['AWS_SECRET_ACCESS_KEY']`,
|
68
|
+
`ENV['AWS_SESSION_TOKEN']`, and `ENV['AWS_ACCOUNT_ID']`.
|
69
|
+
|
70
|
+
* `~/.aws/credentials`
|
71
|
+
|
72
|
+
* `~/.aws/config`
|
73
|
+
|
74
|
+
* EC2/ECS IMDS instance profile - When used by default, the timeouts
|
75
|
+
are very aggressive. Construct and pass an instance of
|
76
|
+
`Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
|
77
|
+
enable retries and extended timeouts. Instance profile credential
|
78
|
+
fetching can be disabled by setting `ENV['AWS_EC2_METADATA_DISABLED']`
|
79
|
+
to `true`.
|
71
80
|
DOCS
|
72
81
|
) do |config|
|
73
82
|
CredentialProviderChain.new(config).resolve
|
@@ -78,30 +87,40 @@ locations will be searched for credentials:
|
|
78
87
|
option(:instance_profile_credentials_timeout, 1)
|
79
88
|
|
80
89
|
option(:token_provider,
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
DOCS
|
90
|
+
doc_type: 'Aws::TokenProvider',
|
91
|
+
rbs_type: 'untyped',
|
92
|
+
docstring: <<~DOCS
|
93
|
+
Your Bearer token used for authentication. This can be an instance of any one of the
|
94
|
+
following classes:
|
95
|
+
|
96
|
+
* `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
|
97
|
+
tokens.
|
98
|
+
|
99
|
+
* `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
|
100
|
+
access token generated from `aws login`.
|
101
|
+
|
102
|
+
When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
|
103
|
+
will be used to search for tokens configured for your profile in shared configuration files.
|
104
|
+
DOCS
|
97
105
|
) do |config|
|
98
|
-
|
99
|
-
StaticTokenProvider.new('token')
|
100
|
-
else
|
101
|
-
TokenProviderChain.new(config).resolve
|
102
|
-
end
|
106
|
+
TokenProviderChain.new(config).resolve
|
103
107
|
end
|
104
108
|
|
109
|
+
option(:auth_scheme_preference,
|
110
|
+
doc_type: 'Array<String>',
|
111
|
+
rbs_type: 'Array[String]',
|
112
|
+
docstring: <<~DOCS
|
113
|
+
A list of preferred authentication schemes to use when making a request. Supported values are:
|
114
|
+
`sigv4`, `sigv4a`, `httpBearerAuth`, and `noAuth`. When set using `ENV['AWS_AUTH_SCHEME_PREFERENCE']` or in
|
115
|
+
shared config as `auth_scheme_preference`, the value should be a comma-separated list.
|
116
|
+
DOCS
|
117
|
+
) do |config|
|
118
|
+
value =
|
119
|
+
ENV['AWS_AUTH_SCHEME_PREFERENCE'] ||
|
120
|
+
Aws.shared_config.auth_scheme_preference(profile: config.profile) ||
|
121
|
+
''
|
122
|
+
value.gsub(' ', '').gsub("\t", '').split(',')
|
123
|
+
end
|
105
124
|
end
|
106
125
|
end
|
107
126
|
end
|
@@ -4,62 +4,70 @@ module Aws
|
|
4
4
|
module Plugins
|
5
5
|
# @api private
|
6
6
|
class EndpointPattern < Seahorse::Client::Plugin
|
7
|
-
|
8
|
-
|
7
|
+
option(
|
8
|
+
:disable_host_prefix_injection,
|
9
9
|
default: false,
|
10
10
|
doc_type: 'Boolean',
|
11
|
-
docstring:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
)
|
11
|
+
docstring: 'When `true`, the SDK will not prepend the modeled host prefix to the endpoint.'
|
12
|
+
) do |cfg|
|
13
|
+
resolve_disable_host_prefix_injection(cfg)
|
14
|
+
end
|
16
15
|
|
17
|
-
def add_handlers(handlers,
|
16
|
+
def add_handlers(handlers, _config)
|
18
17
|
handlers.add(Handler, priority: 10)
|
19
18
|
end
|
20
19
|
|
21
|
-
class
|
20
|
+
class << self
|
21
|
+
private
|
22
|
+
|
23
|
+
def resolve_disable_host_prefix_injection(cfg)
|
24
|
+
value = ENV['AWS_DISABLE_HOST_PREFIX_INJECTION'] ||
|
25
|
+
Aws.shared_config.disable_host_prefix_injection(profile: cfg.profile) ||
|
26
|
+
'false'
|
27
|
+
value = Aws::Util.str_2_bool(value)
|
28
|
+
unless [true, false].include?(value)
|
29
|
+
raise ArgumentError,
|
30
|
+
'Must provide either `true` or `false` for '\
|
31
|
+
'disable_host_prefix_injection profile option or for '\
|
32
|
+
'ENV[\'AWS_DISABLE_HOST_PREFIX_INJECTION\']'
|
33
|
+
end
|
34
|
+
value
|
35
|
+
end
|
36
|
+
end
|
22
37
|
|
38
|
+
# @api private
|
39
|
+
class Handler < Seahorse::Client::Handler
|
23
40
|
def call(context)
|
24
|
-
|
41
|
+
unless context.config.disable_host_prefix_injection
|
25
42
|
endpoint_trait = context.operation.endpoint_pattern
|
26
|
-
if endpoint_trait && !endpoint_trait.empty?
|
27
|
-
_apply_endpoint_trait(context, endpoint_trait)
|
28
|
-
end
|
43
|
+
apply_endpoint_trait(context, endpoint_trait) if endpoint_trait && !endpoint_trait.empty?
|
29
44
|
end
|
30
45
|
@handler.call(context)
|
31
46
|
end
|
32
47
|
|
33
48
|
private
|
34
49
|
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
ori_host, label, context.operation.input, context.params)
|
43
|
-
end
|
44
|
-
context.http_request.endpoint.host = host_prefix + context.http_request.endpoint.host
|
50
|
+
def apply_endpoint_trait(context, trait)
|
51
|
+
pattern = trait['hostPrefix']
|
52
|
+
return unless pattern
|
53
|
+
|
54
|
+
host_prefix = pattern.gsub(/\{.+?}/) do |label|
|
55
|
+
label = label.delete('{}')
|
56
|
+
replace_label_value(label, context.operation.input, context.params)
|
45
57
|
end
|
58
|
+
context.http_request.endpoint.host = host_prefix + context.http_request.endpoint.host
|
46
59
|
end
|
47
60
|
|
48
|
-
def
|
61
|
+
def replace_label_value(label, input_ref, params)
|
49
62
|
name = nil
|
50
63
|
input_ref.shape.members.each do |m_name, ref|
|
51
|
-
if ref['hostLabel'] && ref['hostLabelName'] == label
|
52
|
-
name = m_name
|
53
|
-
end
|
54
|
-
end
|
55
|
-
if name.nil? || params[name].nil?
|
56
|
-
raise Errors::MissingEndpointHostLabelValue.new(name)
|
64
|
+
name = m_name if ref['hostLabel'] && ref['hostLabelName'] == label
|
57
65
|
end
|
66
|
+
raise Errors::MissingEndpointHostLabelValue, name if name.nil? || params[name].nil?
|
67
|
+
|
58
68
|
params[name]
|
59
69
|
end
|
60
|
-
|
61
70
|
end
|
62
|
-
|
63
71
|
end
|
64
72
|
end
|
65
73
|
end
|
@@ -43,7 +43,7 @@ module Aws
|
|
43
43
|
# @api private
|
44
44
|
class GlobalConfiguration < Seahorse::Client::Plugin
|
45
45
|
|
46
|
-
@identifiers = Set.new
|
46
|
+
@identifiers = Set.new
|
47
47
|
|
48
48
|
# @api private
|
49
49
|
def before_initialize(client_class, options)
|
@@ -55,17 +55,18 @@ module Aws
|
|
55
55
|
private
|
56
56
|
|
57
57
|
def apply_service_defaults(client_class, options)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
return unless (defaults = Aws.config[client_class.identifier])
|
59
|
+
|
60
|
+
defaults.each do |option_name, default|
|
61
|
+
options[option_name] = default unless options.key?(option_name)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def apply_aws_defaults(
|
65
|
+
def apply_aws_defaults(_client_class, options)
|
66
66
|
Aws.config.each do |option_name, default|
|
67
67
|
next if self.class.identifiers.include?(option_name)
|
68
68
|
next if options.key?(option_name)
|
69
|
+
|
69
70
|
options[option_name] = default
|
70
71
|
end
|
71
72
|
end
|
@@ -80,9 +81,7 @@ module Aws
|
|
80
81
|
|
81
82
|
# @return [Set<String>]
|
82
83
|
# @api private
|
83
|
-
|
84
|
-
@identifiers
|
85
|
-
end
|
84
|
+
attr_reader :identifiers
|
86
85
|
|
87
86
|
end
|
88
87
|
end
|
@@ -11,8 +11,8 @@ module Aws
|
|
11
11
|
CHUNK_SIZE = 1 * 1024 * 1024 # one MB
|
12
12
|
|
13
13
|
def call(context)
|
14
|
-
if
|
15
|
-
!context[:
|
14
|
+
if context.operation.http_checksum_required &&
|
15
|
+
!context[:http_checksum][:request_algorithm] && # skip in favor of flexible checksum
|
16
16
|
!context[:s3_express_endpoint] # s3 express endpoints do not support md5
|
17
17
|
body = context.http_request.body
|
18
18
|
context.http_request.headers['Content-Md5'] ||= md5(body)
|
@@ -22,12 +22,6 @@ module Aws
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
def checksum_required?(context)
|
26
|
-
context.operation.http_checksum_required ||
|
27
|
-
(context.operation.http_checksum &&
|
28
|
-
context.operation.http_checksum['requestChecksumRequired'])
|
29
|
-
end
|
30
|
-
|
31
25
|
# @param [File, Tempfile, IO#read, String] value
|
32
26
|
# @return [String<MD5>]
|
33
27
|
def md5(value)
|
@@ -12,18 +12,8 @@ module Aws
|
|
12
12
|
class Handler < Seahorse::Client::Handler
|
13
13
|
|
14
14
|
def call(context)
|
15
|
-
apply_invocation_id(context)
|
16
|
-
@handler.call(context)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def apply_invocation_id(context)
|
22
15
|
context.http_request.headers['amz-sdk-invocation-id'] = SecureRandom.uuid
|
23
|
-
|
24
|
-
# only used for eventstreaming at input
|
25
|
-
context.http_request.headers['x-amz-content-sha256'] = 'STREAMING-AWS4-HMAC-SHA256-EVENTS'
|
26
|
-
end
|
16
|
+
@handler.call(context)
|
27
17
|
end
|
28
18
|
|
29
19
|
end
|
@@ -5,6 +5,8 @@ module Aws
|
|
5
5
|
module Protocols
|
6
6
|
class ApiGateway < Seahorse::Client::Plugin
|
7
7
|
|
8
|
+
option(:protocol, 'api-gateway')
|
9
|
+
|
8
10
|
class ContentTypeHandler < Seahorse::Client::Handler
|
9
11
|
def call(context)
|
10
12
|
body = context.http_request.body
|
@@ -22,8 +24,8 @@ module Aws
|
|
22
24
|
handler(Rest::Handler)
|
23
25
|
handler(ContentTypeHandler, priority: 30)
|
24
26
|
handler(Json::ErrorHandler, step: :sign)
|
25
|
-
end
|
26
27
|
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end
|
@@ -1,35 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '../../query'
|
4
|
-
|
5
3
|
module Aws
|
6
4
|
module Plugins
|
7
5
|
module Protocols
|
8
6
|
class EC2 < Seahorse::Client::Plugin
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
def apply_params(param_list, params, rules)
|
13
|
-
Aws::Query::EC2ParamBuilder.new(param_list).apply(rules, params)
|
14
|
-
end
|
15
|
-
|
16
|
-
def parse_xml(context)
|
17
|
-
if rules = context.operation.output
|
18
|
-
parser = Xml::Parser.new(rules)
|
19
|
-
data = parser.parse(xml(context)) do |path, value|
|
20
|
-
if path.size == 2 && path.last == 'requestId'
|
21
|
-
context.metadata[:request_id] = value
|
22
|
-
end
|
23
|
-
end
|
24
|
-
data
|
25
|
-
else
|
26
|
-
EmptyStructure.new
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
8
|
+
option(:protocol, 'ec2')
|
31
9
|
|
32
|
-
handler(
|
10
|
+
handler(Aws::Query::EC2Handler)
|
33
11
|
handler(Xml::ErrorHandler, step: :sign)
|
34
12
|
|
35
13
|
end
|
@@ -5,18 +5,17 @@ module Aws
|
|
5
5
|
module Protocols
|
6
6
|
class JsonRpc < Seahorse::Client::Plugin
|
7
7
|
|
8
|
+
option(:protocol, 'json')
|
9
|
+
|
8
10
|
option(:simple_json,
|
9
11
|
default: false,
|
10
12
|
doc_type: 'Boolean',
|
11
13
|
docstring: <<-DOCS)
|
12
14
|
Disables request parameter conversion, validation, and formatting.
|
13
|
-
Also
|
14
|
-
|
15
|
-
|
16
|
-
structures.
|
17
|
-
|
18
|
-
When `:simple_json` is enabled, the request parameters hash must
|
19
|
-
be formatted exactly as the DynamoDB API expects.
|
15
|
+
Also disables response data type conversions. The request parameters
|
16
|
+
hash must be formatted exactly as the API expects.This option is useful
|
17
|
+
when you want to ensure the highest level of performance by avoiding
|
18
|
+
overhead of walking request parameters and response data structures.
|
20
19
|
DOCS
|
21
20
|
|
22
21
|
option(:validate_params) { |config| !config.simple_json }
|
@@ -24,7 +23,6 @@ be formatted exactly as the DynamoDB API expects.
|
|
24
23
|
option(:convert_params) { |config| !config.simple_json }
|
25
24
|
|
26
25
|
handler(Json::Handler)
|
27
|
-
|
28
26
|
handler(Json::ErrorHandler, step: :sign)
|
29
27
|
|
30
28
|
end
|
@@ -1,13 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '../../query'
|
4
|
-
|
5
3
|
module Aws
|
6
4
|
module Plugins
|
7
5
|
module Protocols
|
8
6
|
class Query < Seahorse::Client::Plugin
|
7
|
+
|
8
|
+
option(:protocol, 'query')
|
9
|
+
|
9
10
|
handler(Aws::Query::Handler)
|
10
11
|
handler(Xml::ErrorHandler, step: :sign)
|
12
|
+
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
@@ -5,25 +5,13 @@ module Aws
|
|
5
5
|
module Protocols
|
6
6
|
class RestJson < Seahorse::Client::Plugin
|
7
7
|
|
8
|
-
|
9
|
-
def call(context)
|
10
|
-
body = context.http_request.body
|
11
|
-
# Rest::Handler will set a default JSON body, so size can be checked
|
12
|
-
# if this handler is run after serialization.
|
13
|
-
if !body.respond_to?(:size) ||
|
14
|
-
(body.respond_to?(:size) && body.size > 0)
|
15
|
-
context.http_request.headers['Content-Type'] ||=
|
16
|
-
'application/json'
|
17
|
-
end
|
18
|
-
@handler.call(context)
|
19
|
-
end
|
20
|
-
end
|
8
|
+
option(:protocol, 'rest-json')
|
21
9
|
|
22
10
|
handler(Rest::Handler)
|
23
|
-
handler(ContentTypeHandler, priority: 30)
|
11
|
+
handler(Rest::ContentTypeHandler, priority: 30)
|
24
12
|
handler(Json::ErrorHandler, step: :sign)
|
25
|
-
end
|
26
13
|
|
14
|
+
end
|
27
15
|
end
|
28
16
|
end
|
29
17
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module Plugins
|
5
|
+
module Protocols
|
6
|
+
class RpcV2 < Seahorse::Client::Plugin
|
7
|
+
|
8
|
+
option(:protocol, 'smithy-rpc-v2-cbor')
|
9
|
+
|
10
|
+
handler(Aws::RpcV2::Handler)
|
11
|
+
handler(Aws::RpcV2::ContentTypeHandler, priority: 30)
|
12
|
+
handler(Aws::RpcV2::ErrorHandler, step: :sign)
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|