aws-sdk-core 3.165.0 → 3.174.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 +105 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-core/credential_provider_chain.rb +8 -5
- data/lib/aws-sdk-core/ecs_credentials.rb +111 -53
- data/lib/aws-sdk-core/endpoints/condition.rb +5 -0
- data/lib/aws-sdk-core/endpoints/endpoint_rule.rb +5 -1
- data/lib/aws-sdk-core/endpoints/error_rule.rb +5 -0
- data/lib/aws-sdk-core/endpoints/function.rb +5 -0
- data/lib/aws-sdk-core/endpoints/reference.rb +5 -0
- data/lib/aws-sdk-core/endpoints/rule.rb +5 -0
- data/lib/aws-sdk-core/endpoints/rule_set.rb +5 -0
- data/lib/aws-sdk-core/endpoints/rules_provider.rb +5 -0
- data/lib/aws-sdk-core/endpoints/templater.rb +6 -0
- data/lib/aws-sdk-core/endpoints/tree_rule.rb +5 -0
- data/lib/aws-sdk-core/endpoints/url.rb +1 -0
- data/lib/aws-sdk-core/json/error_handler.rb +15 -5
- data/lib/aws-sdk-core/log/formatter.rb +6 -0
- data/lib/aws-sdk-core/pageable_response.rb +3 -1
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +1 -1
- data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +2 -1
- data/lib/aws-sdk-core/plugins/sign.rb +17 -7
- data/lib/aws-sdk-core/plugins/user_agent.rb +117 -14
- data/lib/aws-sdk-core/shared_config.rb +38 -9
- data/lib/aws-sdk-core/sso_credentials.rb +79 -44
- data/lib/aws-sdk-core/sso_token_provider.rb +3 -2
- data/lib/aws-sdk-core/waiters/poller.rb +3 -1
- data/lib/aws-sdk-core/xml/parser/engines/oga.rb +2 -0
- data/lib/aws-sdk-core.rb +1 -0
- data/lib/aws-sdk-sso/client.rb +6 -1
- data/lib/aws-sdk-sso/endpoint_provider.rb +35 -96
- data/lib/aws-sdk-sso/types.rb +0 -35
- data/lib/aws-sdk-sso.rb +1 -1
- data/lib/aws-sdk-ssooidc/client.rb +6 -1
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +35 -95
- data/lib/aws-sdk-ssooidc/types.rb +0 -32
- data/lib/aws-sdk-ssooidc.rb +1 -1
- data/lib/aws-sdk-sts/client.rb +244 -241
- data/lib/aws-sdk-sts/endpoint_provider.rb +96 -213
- data/lib/aws-sdk-sts/types.rb +87 -195
- data/lib/aws-sdk-sts.rb +1 -1
- data/lib/seahorse/client/h2/connection.rb +12 -11
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4ecec9eaf3fee0d30bdd88558775c3553537df9dfd3fe4f62b694cba78b7991
|
4
|
+
data.tar.gz: f99bff124648f74105f216af8de264e71151357a4ec645531d5c59dcfc696ef9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2753ea337d9adde1dab3fbe9d72fbb3f31e9a8061e1a7be017f0eb48a1b56958edd03f8b84c2d634ff10254e4a7a565b40163739497420d5171affd6c880600f
|
7
|
+
data.tar.gz: 767e58ebbbf1f3e95e835f86cffda3bc4ed9ba99f5fdc663fcb65c0996f15df918f30a6f27b8cf70b2c888a4dc315c9338c717508bc98f5e75b3f3568ff7a00b
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,111 @@
|
|
1
1
|
Unreleased Changes
|
2
2
|
------------------
|
3
3
|
|
4
|
+
3.174.0 (2023-05-31)
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
8
|
+
|
9
|
+
* Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
|
10
|
+
|
11
|
+
* Feature - Updated Aws::SSO::Client with the latest API changes.
|
12
|
+
|
13
|
+
* Feature - Improve User-Agent metrics tracking.
|
14
|
+
|
15
|
+
3.173.1 (2023-05-24)
|
16
|
+
------------------
|
17
|
+
|
18
|
+
* Issue - Updated `checksum_algorithm` plugin to use IO.copy_stream for JRuby.
|
19
|
+
|
20
|
+
3.173.0 (2023-05-18)
|
21
|
+
------------------
|
22
|
+
|
23
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
24
|
+
|
25
|
+
3.172.0 (2023-05-08)
|
26
|
+
------------------
|
27
|
+
|
28
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
29
|
+
|
30
|
+
* Feature - Add :region option to `Aws::Log::Formatter`.
|
31
|
+
|
32
|
+
3.171.1 (2023-05-04)
|
33
|
+
------------------
|
34
|
+
|
35
|
+
* Issue - Fix error code parsing in AWS query compatible JSON services.
|
36
|
+
|
37
|
+
3.171.0 (2023-03-22)
|
38
|
+
------------------
|
39
|
+
|
40
|
+
* Feature - Add support for `AWS_CONTAINER_CREDENTIALS_FULL_URI` and `AWS_CONTAINER_AUTHORIZATION_TOKEN` environment variables to `ECSCredentials`.
|
41
|
+
|
42
|
+
3.170.1 (2023-03-17)
|
43
|
+
------------------
|
44
|
+
|
45
|
+
* Issue - Reduce memory usage in H2::Connection when `http_wire_log` is not set.
|
46
|
+
|
47
|
+
3.170.0 (2023-01-25)
|
48
|
+
------------------
|
49
|
+
|
50
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
51
|
+
|
52
|
+
3.169.0 (2023-01-18)
|
53
|
+
------------------
|
54
|
+
|
55
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
56
|
+
|
57
|
+
* Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
|
58
|
+
|
59
|
+
* Feature - Updated Aws::SSO::Client with the latest API changes.
|
60
|
+
|
61
|
+
* Issue - Replace runtime endpoint resolution approach with generated ruby code for STS, SSO, and SSOOIDC.
|
62
|
+
|
63
|
+
3.168.4 (2022-12-08)
|
64
|
+
------------------
|
65
|
+
|
66
|
+
* Issue - Fix Sign to not sign Sigv2 requests to S3.
|
67
|
+
|
68
|
+
3.168.3 (2022-12-02)
|
69
|
+
------------------
|
70
|
+
|
71
|
+
* Issue - Retry S3's `BadDigest` error
|
72
|
+
|
73
|
+
3.168.2 (2022-11-29)
|
74
|
+
------------------
|
75
|
+
|
76
|
+
* Issue - Allow region resolution in `AssumeRoleCredentials` from `CredentialProviderChain`.
|
77
|
+
|
78
|
+
3.168.1 (2022-11-18)
|
79
|
+
------------------
|
80
|
+
|
81
|
+
* Issue - Fix initialization of SSOTokenProvider when `AWS_PROFILE` is specified.
|
82
|
+
|
83
|
+
3.168.0 (2022-11-17)
|
84
|
+
------------------
|
85
|
+
|
86
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
87
|
+
|
88
|
+
3.167.0 (2022-11-09)
|
89
|
+
------------------
|
90
|
+
|
91
|
+
* Issue - Ensure the stream_thread is not killed before H2 connection status is updated (#2779).
|
92
|
+
|
93
|
+
* Feature - Add token refresh support to `SSOCredentialProvider`.
|
94
|
+
|
95
|
+
3.166.0 (2022-10-26)
|
96
|
+
------------------
|
97
|
+
|
98
|
+
* Feature - Updated Aws::STS::Client with the latest API changes.
|
99
|
+
|
100
|
+
* Feature - Updated Aws::SSOOIDC::Client with the latest API changes.
|
101
|
+
|
102
|
+
* Feature - Updated Aws::SSO::Client with the latest API changes.
|
103
|
+
|
104
|
+
3.165.1 (2022-10-25)
|
105
|
+
------------------
|
106
|
+
|
107
|
+
* Issue - Require the SignatureV4 plugin to fix compatability with older `aws-sdk-s3` versions (#2774).
|
108
|
+
|
4
109
|
3.165.0 (2022-10-25)
|
5
110
|
------------------
|
6
111
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.174.0
|
@@ -161,7 +161,8 @@ module Aws
|
|
161
161
|
|
162
162
|
def instance_profile_credentials(options)
|
163
163
|
profile_name = determine_profile_name(options)
|
164
|
-
if ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']
|
164
|
+
if ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] ||
|
165
|
+
ENV['AWS_CONTAINER_CREDENTIALS_FULL_URI']
|
165
166
|
ECSCredentials.new(options)
|
166
167
|
else
|
167
168
|
InstanceProfileCredentials.new(options.merge(profile: profile_name))
|
@@ -169,12 +170,14 @@ module Aws
|
|
169
170
|
end
|
170
171
|
|
171
172
|
def assume_role_with_profile(options, profile_name)
|
172
|
-
|
173
|
-
Aws.shared_config.assume_role_credentials_from_config(
|
173
|
+
assume_opts = {
|
174
174
|
profile: profile_name,
|
175
|
-
region: region,
|
176
175
|
chain_config: @config
|
177
|
-
|
176
|
+
}
|
177
|
+
if options[:config] && options[:config].region
|
178
|
+
assume_opts[:region] = options[:config].region
|
179
|
+
end
|
180
|
+
Aws.shared_config.assume_role_credentials_from_config(assume_opts)
|
178
181
|
end
|
179
182
|
end
|
180
183
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'time'
|
4
4
|
require 'net/http'
|
5
|
+
require 'resolv'
|
5
6
|
|
6
7
|
module Aws
|
7
8
|
# An auto-refreshing credential provider that loads credentials from
|
@@ -10,7 +11,6 @@ module Aws
|
|
10
11
|
# ecs_credentials = Aws::ECSCredentials.new(retries: 3)
|
11
12
|
# ec2 = Aws::EC2::Client.new(credentials: ecs_credentials)
|
12
13
|
class ECSCredentials
|
13
|
-
|
14
14
|
include CredentialProvider
|
15
15
|
include RefreshingCredentials
|
16
16
|
|
@@ -29,16 +29,22 @@ module Aws
|
|
29
29
|
Errno::ENETUNREACH,
|
30
30
|
SocketError,
|
31
31
|
Timeout::Error,
|
32
|
-
Non200Response
|
33
|
-
]
|
32
|
+
Non200Response
|
33
|
+
].freeze
|
34
34
|
|
35
35
|
# @param [Hash] options
|
36
36
|
# @option options [Integer] :retries (5) Number of times to retry
|
37
37
|
# when retrieving credentials.
|
38
|
-
# @option options [String] :ip_address ('169.254.170.2')
|
39
|
-
#
|
38
|
+
# @option options [String] :ip_address ('169.254.170.2') This value is
|
39
|
+
# ignored if `endpoint` is set and `credential_path` is not set.
|
40
|
+
# @option options [Integer] :port (80) This value is ignored if `endpoint`
|
41
|
+
# is set and `credential_path` is not set.
|
40
42
|
# @option options [String] :credential_path By default, the value of the
|
41
43
|
# AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable.
|
44
|
+
# @option options [String] :endpoint The ECS credential endpoint.
|
45
|
+
# By default, this is the value of the AWS_CONTAINER_CREDENTIALS_FULL_URI
|
46
|
+
# environment variable. This value is ignored if `credential_path` or
|
47
|
+
# ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'] is set.
|
42
48
|
# @option options [Float] :http_open_timeout (5)
|
43
49
|
# @option options [Float] :http_read_timeout (5)
|
44
50
|
# @option options [Numeric, Proc] :delay By default, failures are retried
|
@@ -52,17 +58,15 @@ module Aws
|
|
52
58
|
# credentials are refreshed. `before_refresh` is called
|
53
59
|
# with an instance of this object when
|
54
60
|
# AWS credentials are required and need to be refreshed.
|
55
|
-
def initialize
|
61
|
+
def initialize(options = {})
|
62
|
+
credential_path = options[:credential_path] ||
|
63
|
+
ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']
|
64
|
+
endpoint = options[:endpoint] ||
|
65
|
+
ENV['AWS_CONTAINER_CREDENTIALS_FULL_URI']
|
66
|
+
initialize_uri(options, credential_path, endpoint)
|
67
|
+
@authorization_token = ENV['AWS_CONTAINER_AUTHORIZATION_TOKEN']
|
68
|
+
|
56
69
|
@retries = options[:retries] || 5
|
57
|
-
@ip_address = options[:ip_address] || '169.254.170.2'
|
58
|
-
@port = options[:port] || 80
|
59
|
-
@credential_path = options[:credential_path]
|
60
|
-
@credential_path ||= ENV['AWS_CONTAINER_CREDENTIALS_RELATIVE_URI']
|
61
|
-
unless @credential_path
|
62
|
-
raise ArgumentError.new(
|
63
|
-
"Cannot instantiate an ECS Credential Provider without a credential path."
|
64
|
-
)
|
65
|
-
end
|
66
70
|
@http_open_timeout = options[:http_open_timeout] || 5
|
67
71
|
@http_read_timeout = options[:http_read_timeout] || 5
|
68
72
|
@http_debug_output = options[:http_debug_output]
|
@@ -77,11 +81,69 @@ module Aws
|
|
77
81
|
|
78
82
|
private
|
79
83
|
|
84
|
+
def initialize_uri(options, credential_path, endpoint)
|
85
|
+
if credential_path
|
86
|
+
initialize_relative_uri(options, credential_path)
|
87
|
+
# Use FULL_URI/endpoint only if RELATIVE_URI/path is not set
|
88
|
+
elsif endpoint
|
89
|
+
initialize_full_uri(endpoint)
|
90
|
+
else
|
91
|
+
raise ArgumentError,
|
92
|
+
'Cannot instantiate an ECS Credential Provider '\
|
93
|
+
'without a credential path or endpoint.'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def initialize_relative_uri(options, path)
|
98
|
+
@host = options[:ip_address] || '169.254.170.2'
|
99
|
+
@port = options[:port] || 80
|
100
|
+
@scheme = 'http'
|
101
|
+
@credential_path = path
|
102
|
+
end
|
103
|
+
|
104
|
+
def initialize_full_uri(endpoint)
|
105
|
+
uri = URI.parse(endpoint)
|
106
|
+
validate_full_uri!(uri)
|
107
|
+
@host = uri.host
|
108
|
+
@port = uri.port
|
109
|
+
@scheme = uri.scheme
|
110
|
+
@credential_path = uri.path
|
111
|
+
end
|
112
|
+
|
113
|
+
# Validate that the full URI is using a loopback address if scheme is http.
|
114
|
+
def validate_full_uri!(full_uri)
|
115
|
+
return unless full_uri.scheme == 'http'
|
116
|
+
|
117
|
+
begin
|
118
|
+
return if ip_loopback?(IPAddr.new(full_uri.host))
|
119
|
+
rescue IPAddr::InvalidAddressError
|
120
|
+
addresses = Resolv.getaddresses(full_uri.host)
|
121
|
+
return if addresses.all? { |addr| ip_loopback?(IPAddr.new(addr)) }
|
122
|
+
end
|
123
|
+
|
124
|
+
raise ArgumentError,
|
125
|
+
'AWS_CONTAINER_CREDENTIALS_FULL_URI must use a loopback '\
|
126
|
+
'address when using the http scheme.'
|
127
|
+
end
|
128
|
+
|
129
|
+
# loopback? method is available in Ruby 2.5+
|
130
|
+
# Replicate the logic here.
|
131
|
+
def ip_loopback?(ip_address)
|
132
|
+
case ip_address.family
|
133
|
+
when Socket::AF_INET
|
134
|
+
ip_address & 0xff000000 == 0x7f000000
|
135
|
+
when Socket::AF_INET6
|
136
|
+
ip_address == 1
|
137
|
+
else
|
138
|
+
false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
80
142
|
def backoff(backoff)
|
81
143
|
case backoff
|
82
144
|
when Proc then backoff
|
83
|
-
when Numeric then
|
84
|
-
else
|
145
|
+
when Numeric then ->(_) { sleep(backoff) }
|
146
|
+
else ->(num_failures) { Kernel.sleep(1.2**num_failures) }
|
85
147
|
end
|
86
148
|
end
|
87
149
|
|
@@ -89,68 +151,64 @@ module Aws
|
|
89
151
|
# Retry loading credentials up to 3 times is the instance metadata
|
90
152
|
# service is responding but is returning invalid JSON documents
|
91
153
|
# in response to the GET profile credentials call.
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
rescue Aws::Json::ParseError
|
103
|
-
raise Aws::Errors::MetadataParserError.new
|
154
|
+
|
155
|
+
retry_errors([Aws::Json::ParseError, StandardError], max_retries: 3) do
|
156
|
+
c = Aws::Json.load(get_credentials.to_s)
|
157
|
+
@credentials = Credentials.new(
|
158
|
+
c['AccessKeyId'],
|
159
|
+
c['SecretAccessKey'],
|
160
|
+
c['Token']
|
161
|
+
)
|
162
|
+
@expiration = c['Expiration'] ? Time.iso8601(c['Expiration']) : nil
|
104
163
|
end
|
164
|
+
rescue Aws::Json::ParseError
|
165
|
+
raise Aws::Errors::MetadataParserError
|
105
166
|
end
|
106
167
|
|
107
168
|
def get_credentials
|
108
169
|
# Retry loading credentials a configurable number of times if
|
109
170
|
# the instance metadata service is not responding.
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
end
|
171
|
+
|
172
|
+
retry_errors(NETWORK_ERRORS, max_retries: @retries) do
|
173
|
+
open_connection do |conn|
|
174
|
+
http_get(conn, @credential_path)
|
115
175
|
end
|
116
|
-
rescue
|
117
|
-
'{}'
|
118
176
|
end
|
177
|
+
rescue StandardError
|
178
|
+
'{}'
|
119
179
|
end
|
120
180
|
|
121
181
|
def open_connection
|
122
|
-
http = Net::HTTP.new(@
|
182
|
+
http = Net::HTTP.new(@host, @port, nil)
|
123
183
|
http.open_timeout = @http_open_timeout
|
124
184
|
http.read_timeout = @http_read_timeout
|
125
185
|
http.set_debug_output(@http_debug_output) if @http_debug_output
|
186
|
+
http.use_ssl = @scheme == 'https'
|
126
187
|
http.start
|
127
188
|
yield(http).tap { http.finish }
|
128
189
|
end
|
129
190
|
|
130
191
|
def http_get(connection, path)
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
192
|
+
request = Net::HTTP::Get.new(path)
|
193
|
+
request['Authorization'] = @authorization_token if @authorization_token
|
194
|
+
response = connection.request(request)
|
195
|
+
raise Non200Response unless response.code.to_i == 200
|
196
|
+
|
197
|
+
response.body
|
137
198
|
end
|
138
199
|
|
139
|
-
def retry_errors(error_classes, options = {}
|
200
|
+
def retry_errors(error_classes, options = {})
|
140
201
|
max_retries = options[:max_retries]
|
141
202
|
retries = 0
|
142
203
|
begin
|
143
204
|
yield
|
144
|
-
rescue *error_classes =>
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
raise
|
151
|
-
end
|
205
|
+
rescue *error_classes => _e
|
206
|
+
raise unless retries < max_retries
|
207
|
+
|
208
|
+
@backoff.call(retries)
|
209
|
+
retries += 1
|
210
|
+
retry
|
152
211
|
end
|
153
212
|
end
|
154
|
-
|
155
213
|
end
|
156
214
|
end
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class Condition
|
7
12
|
def initialize(fn:, argv:, assign: nil)
|
@@ -2,7 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
-
#
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version. # @api private
|
6
10
|
class EndpointRule < Rule
|
7
11
|
def initialize(type: 'endpoint', conditions:, endpoint:,
|
8
12
|
documentation: nil)
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class ErrorRule < Rule
|
7
12
|
def initialize(type: 'error', conditions:, error: nil, documentation: nil)
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class Function
|
7
12
|
def initialize(fn:, argv:)
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class Reference
|
7
12
|
def initialize(ref:)
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class Rule
|
7
12
|
# Resolves a value that is a function, reference, or template string.
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class RuleSet
|
7
12
|
def initialize(version:, service_id:, parameters:, rules:)
|
@@ -1,5 +1,10 @@
|
|
1
1
|
module Aws
|
2
2
|
module Endpoints
|
3
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
4
|
+
# resolution approach. It has been replaced by a code generated
|
5
|
+
# approach in each service gem. It can be removed in a new
|
6
|
+
# major version. It has to exist because
|
7
|
+
# old service gems can use a new core version.
|
3
8
|
# @api private
|
4
9
|
class RulesProvider
|
5
10
|
def initialize(rule_set)
|
@@ -3,6 +3,12 @@
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
5
|
# Does substitutions for templated endpoint strings
|
6
|
+
|
7
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
8
|
+
# resolution approach. It has been replaced by a code generated
|
9
|
+
# approach in each service gem. It can be removed in a new
|
10
|
+
# major version. It has to exist because
|
11
|
+
# old service gems can use a new core version.
|
6
12
|
# @api private
|
7
13
|
module Templater
|
8
14
|
class << self
|
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Aws
|
4
4
|
module Endpoints
|
5
|
+
# This class is deprecated. It is used by the Runtime endpoint
|
6
|
+
# resolution approach. It has been replaced by a code generated
|
7
|
+
# approach in each service gem. It can be removed in a new
|
8
|
+
# major version. It has to exist because
|
9
|
+
# old service gems can use a new core version.
|
5
10
|
# @api private
|
6
11
|
class TreeRule
|
7
12
|
def initialize(type: 'tree', conditions:, rules:, documentation: nil)
|
@@ -26,11 +26,13 @@ module Aws
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def error_code(json, context)
|
29
|
-
code =
|
30
|
-
context
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
code =
|
30
|
+
if aws_query_error?(context)
|
31
|
+
error = context.http_response.headers['x-amzn-query-error'].split(';')[0]
|
32
|
+
remove_prefix(error, context)
|
33
|
+
else
|
34
|
+
json['__type']
|
35
|
+
end
|
34
36
|
code ||= json['code']
|
35
37
|
code ||= context.http_response.headers['x-amzn-errortype']
|
36
38
|
if code
|
@@ -45,6 +47,14 @@ module Aws
|
|
45
47
|
context.http_response.headers['x-amzn-query-error']
|
46
48
|
end
|
47
49
|
|
50
|
+
def remove_prefix(error_code, context)
|
51
|
+
if prefix = context.config.api.metadata['errorPrefix']
|
52
|
+
error_code.sub(/^#{prefix}/, '')
|
53
|
+
else
|
54
|
+
error_code
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
48
58
|
def error_message(code, json)
|
49
59
|
if code == 'RequestEntityTooLarge'
|
50
60
|
'Request body must be less than 1 MB'
|
@@ -26,6 +26,8 @@ module Aws
|
|
26
26
|
#
|
27
27
|
# You can put any of these placeholders into you pattern.
|
28
28
|
#
|
29
|
+
# * `:region` - The region configured for the client.
|
30
|
+
#
|
29
31
|
# * `:client_class` - The name of the client class.
|
30
32
|
#
|
31
33
|
# * `:operation` - The name of the client request method.
|
@@ -116,6 +118,10 @@ module Aws
|
|
116
118
|
|
117
119
|
private
|
118
120
|
|
121
|
+
def _region(response)
|
122
|
+
response.context.config.region
|
123
|
+
end
|
124
|
+
|
119
125
|
def _client_class(response)
|
120
126
|
response.context.client.class.name
|
121
127
|
end
|
@@ -201,7 +201,9 @@ module Aws
|
|
201
201
|
def next_response(params)
|
202
202
|
params = next_page_params(params)
|
203
203
|
request = context.client.build_request(context.operation_name, params)
|
204
|
-
|
204
|
+
Aws::Plugins::UserAgent.feature('paginator') do
|
205
|
+
request.send_request
|
206
|
+
end
|
205
207
|
end
|
206
208
|
|
207
209
|
def next_page_params(params)
|
@@ -37,15 +37,25 @@ module Aws
|
|
37
37
|
|
38
38
|
class Handler < Seahorse::Client::Handler
|
39
39
|
def call(context)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
# Skip signing if using sigv2 signing from s3_signer in S3
|
41
|
+
unless v2_signing?(context.config)
|
42
|
+
signer = Sign.signer_for(
|
43
|
+
context[:auth_scheme],
|
44
|
+
context.config,
|
45
|
+
context[:sigv4_region]
|
46
|
+
)
|
47
|
+
signer.sign(context)
|
48
|
+
end
|
47
49
|
@handler.call(context)
|
48
50
|
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def v2_signing?(config)
|
55
|
+
# 's3' is legacy signing, 'v4' is default
|
56
|
+
config.respond_to?(:signature_version) &&
|
57
|
+
config.signature_version == 's3'
|
58
|
+
end
|
49
59
|
end
|
50
60
|
|
51
61
|
# @api private
|