aws-sdk-core 3.152.0 → 3.234.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 +942 -1
- data/VERSION +1 -1
- data/lib/aws-defaults/default_configuration.rb +5 -6
- data/lib/aws-defaults.rb +4 -1
- data/lib/aws-sdk-core/arn.rb +14 -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 +13 -2
- 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 +33 -55
- data/lib/aws-sdk-core/credential_provider.rb +8 -1
- data/lib/aws-sdk-core/credential_provider_chain.rb +81 -29
- 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 +186 -60
- data/lib/aws-sdk-core/endpoints/condition.rb +41 -0
- data/lib/aws-sdk-core/endpoints/endpoint.rb +19 -0
- data/lib/aws-sdk-core/endpoints/endpoint_rule.rb +75 -0
- data/lib/aws-sdk-core/endpoints/error_rule.rb +42 -0
- data/lib/aws-sdk-core/endpoints/function.rb +80 -0
- data/lib/aws-sdk-core/endpoints/matchers.rb +129 -0
- data/lib/aws-sdk-core/endpoints/reference.rb +31 -0
- data/lib/aws-sdk-core/endpoints/rule.rb +25 -0
- data/lib/aws-sdk-core/endpoints/rule_set.rb +52 -0
- data/lib/aws-sdk-core/endpoints/rules_provider.rb +37 -0
- data/lib/aws-sdk-core/endpoints/templater.rb +58 -0
- data/lib/aws-sdk-core/endpoints/tree_rule.rb +45 -0
- data/lib/aws-sdk-core/endpoints/url.rb +60 -0
- data/lib/aws-sdk-core/endpoints.rb +158 -0
- data/lib/aws-sdk-core/error_handler.rb +46 -0
- data/lib/aws-sdk-core/errors.rb +14 -5
- data/lib/aws-sdk-core/event_emitter.rb +1 -17
- data/lib/aws-sdk-core/ini_parser.rb +7 -0
- data/lib/aws-sdk-core/instance_profile_credentials.rb +168 -155
- data/lib/aws-sdk-core/json/builder.rb +8 -1
- data/lib/aws-sdk-core/json/error_handler.rb +46 -11
- data/lib/aws-sdk-core/json/handler.rb +13 -6
- data/lib/aws-sdk-core/json/json_engine.rb +3 -1
- data/lib/aws-sdk-core/json/oj_engine.rb +7 -1
- data/lib/aws-sdk-core/json/parser.rb +33 -3
- data/lib/aws-sdk-core/json.rb +43 -14
- data/lib/aws-sdk-core/log/formatter.rb +6 -0
- 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 +3 -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 +348 -169
- 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 +84 -38
- data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +6 -2
- data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +40 -32
- data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
- data/lib/aws-sdk-core/plugins/http_checksum.rb +3 -8
- data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
- data/lib/aws-sdk-core/plugins/logging.rb +2 -0
- data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +3 -1
- data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -24
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +6 -8
- data/lib/aws-sdk-core/plugins/protocols/query.rb +4 -2
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +3 -15
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +3 -0
- data/lib/aws-sdk-core/plugins/protocols/rpc_v2.rb +17 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +164 -34
- data/lib/aws-sdk-core/plugins/request_compression.rb +226 -0
- data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +2 -1
- data/lib/aws-sdk-core/plugins/retry_errors.rb +12 -3
- data/lib/aws-sdk-core/plugins/sign.rb +222 -0
- data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -0
- data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -0
- 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 +192 -14
- data/lib/aws-sdk-core/plugins.rb +39 -0
- data/lib/aws-sdk-core/process_credentials.rb +48 -29
- data/lib/aws-sdk-core/query/ec2_handler.rb +27 -0
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +5 -7
- data/lib/aws-sdk-core/query/handler.rb +4 -4
- data/lib/aws-sdk-core/query/param_builder.rb +2 -2
- data/lib/aws-sdk-core/query.rb +2 -1
- data/lib/aws-sdk-core/refreshing_credentials.rb +20 -23
- 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 +14 -10
- data/lib/aws-sdk-core/rest/request/querystring_builder.rb +62 -36
- data/lib/aws-sdk-core/rest/response/body.rb +15 -1
- data/lib/aws-sdk-core/rest/response/header_list_parser.rb +79 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +8 -3
- data/lib/aws-sdk-core/rest.rb +1 -0
- data/lib/aws-sdk-core/rpc_v2/builder.rb +62 -0
- data/lib/aws-sdk-core/rpc_v2/cbor_engine.rb +18 -0
- data/lib/aws-sdk-core/rpc_v2/content_type_handler.rb +47 -0
- data/lib/aws-sdk-core/rpc_v2/error_handler.rb +95 -0
- data/lib/aws-sdk-core/rpc_v2/handler.rb +79 -0
- data/lib/aws-sdk-core/rpc_v2/parser.rb +98 -0
- data/lib/aws-sdk-core/rpc_v2.rb +69 -0
- data/lib/aws-sdk-core/shared_config.rb +160 -36
- data/lib/aws-sdk-core/shared_credentials.rb +1 -7
- data/lib/aws-sdk-core/sso_credentials.rb +84 -46
- data/lib/aws-sdk-core/sso_token_provider.rb +3 -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/stub_data.rb +11 -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 +12 -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/{engines/oga.rb → oga_engine.rb} +2 -0
- 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 -103
- data/lib/aws-sdk-sso/client.rb +219 -89
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_parameters.rb +69 -0
- data/lib/aws-sdk-sso/endpoint_provider.rb +53 -0
- data/lib/aws-sdk-sso/endpoints.rb +20 -0
- data/lib/aws-sdk-sso/plugins/endpoints.rb +77 -0
- data/lib/aws-sdk-sso/types.rb +1 -35
- data/lib/aws-sdk-sso.rb +15 -7
- data/lib/aws-sdk-ssooidc/client.rb +650 -118
- data/lib/aws-sdk-ssooidc/client_api.rb +94 -1
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +69 -0
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +53 -0
- data/lib/aws-sdk-ssooidc/endpoints.rb +20 -0
- data/lib/aws-sdk-ssooidc/errors.rb +62 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +77 -0
- data/lib/aws-sdk-ssooidc/types.rb +437 -67
- data/lib/aws-sdk-ssooidc.rb +15 -7
- data/lib/aws-sdk-sts/client.rb +670 -368
- data/lib/aws-sdk-sts/client_api.rb +48 -9
- data/lib/aws-sdk-sts/customizations.rb +5 -2
- data/lib/aws-sdk-sts/endpoint_parameters.rb +79 -0
- data/lib/aws-sdk-sts/endpoint_provider.rb +107 -0
- data/lib/aws-sdk-sts/endpoints.rb +20 -0
- data/lib/aws-sdk-sts/errors.rb +15 -0
- data/lib/aws-sdk-sts/plugins/endpoints.rb +77 -0
- data/lib/aws-sdk-sts/presigner.rb +12 -18
- data/lib/aws-sdk-sts/types.rb +296 -222
- data/lib/aws-sdk-sts.rb +15 -7
- data/lib/seahorse/client/async_base.rb +4 -6
- data/lib/seahorse/client/async_response.rb +19 -0
- data/lib/seahorse/client/base.rb +18 -21
- data/lib/seahorse/client/configuration.rb +1 -5
- data/lib/seahorse/client/h2/connection.rb +27 -36
- 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/net_http/patches.rb +1 -4
- data/lib/seahorse/client/networking_error.rb +1 -1
- data/lib/seahorse/client/plugin.rb +9 -0
- data/lib/seahorse/client/plugins/endpoint.rb +0 -1
- data/lib/seahorse/client/plugins/h2.rb +4 -4
- data/lib/seahorse/client/plugins/net_http.rb +57 -16
- data/lib/seahorse/client/plugins/request_callback.rb +40 -9
- data/lib/seahorse/client/request_context.rb +9 -2
- data/lib/seahorse/client/response.rb +8 -0
- data/lib/seahorse/model/operation.rb +3 -0
- data/lib/seahorse/model/shapes.rb +2 -2
- data/lib/seahorse/util.rb +6 -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 +133 -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/ox.rb → ox_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/rexml.rb → rexml_engine.rb} +0 -0
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.234.0
|
|
@@ -20,7 +20,7 @@ module Aws
|
|
|
20
20
|
# * Globally via the "AWS_DEFAULTS_MODE" environment variable.
|
|
21
21
|
#
|
|
22
22
|
#
|
|
23
|
-
#
|
|
23
|
+
# #defaults START - documentation
|
|
24
24
|
# The following `:default_mode` values are supported:
|
|
25
25
|
#
|
|
26
26
|
# * `'standard'` -
|
|
@@ -105,10 +105,10 @@ module Aws
|
|
|
105
105
|
# [2]: https://docs.aws.amazon.com/sdkref/latest/guide/setting-global-retry_mode.html
|
|
106
106
|
# [3]: https://docs.aws.amazon.com/sdkref/latest/guide/setting-global-sts_regional_endpoints.html
|
|
107
107
|
#
|
|
108
|
-
#
|
|
108
|
+
# #defaults END - documentation
|
|
109
109
|
module DefaultsModeConfiguration
|
|
110
110
|
# @api private
|
|
111
|
-
#
|
|
111
|
+
# #defaults START - configuration
|
|
112
112
|
SDK_DEFAULT_CONFIGURATION =
|
|
113
113
|
{
|
|
114
114
|
"version" => 1,
|
|
@@ -128,8 +128,7 @@ module Aws
|
|
|
128
128
|
"override" => 3100
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
-
"in-region" => {
|
|
132
|
-
},
|
|
131
|
+
"in-region" => {},
|
|
133
132
|
"cross-region" => {
|
|
134
133
|
"connectTimeoutInMillis" => {
|
|
135
134
|
"override" => 3100
|
|
@@ -148,6 +147,6 @@ module Aws
|
|
|
148
147
|
}
|
|
149
148
|
}
|
|
150
149
|
}
|
|
151
|
-
#
|
|
150
|
+
# #defaults END - configuration
|
|
152
151
|
end
|
|
153
152
|
end
|
data/lib/aws-defaults.rb
CHANGED
data/lib/aws-sdk-core/arn.rb
CHANGED
|
@@ -24,9 +24,7 @@ module Aws
|
|
|
24
24
|
# arn.resource
|
|
25
25
|
# # => foo/bar
|
|
26
26
|
#
|
|
27
|
-
#
|
|
28
|
-
# @see Aws::ARNParser#parse_resource
|
|
29
|
-
#
|
|
27
|
+
# @see ARNParser
|
|
30
28
|
# @see https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-arns
|
|
31
29
|
class ARN
|
|
32
30
|
|
|
@@ -88,5 +86,18 @@ module Aws
|
|
|
88
86
|
resource: @resource
|
|
89
87
|
}
|
|
90
88
|
end
|
|
89
|
+
|
|
90
|
+
# Return the ARN as JSON
|
|
91
|
+
#
|
|
92
|
+
# @return [Hash]
|
|
93
|
+
def as_json(_options = nil)
|
|
94
|
+
{
|
|
95
|
+
'partition' => @partition,
|
|
96
|
+
'service' => @service,
|
|
97
|
+
'region' => @region,
|
|
98
|
+
'accountId' => @account_id,
|
|
99
|
+
'resource' => @resource
|
|
100
|
+
}
|
|
101
|
+
end
|
|
91
102
|
end
|
|
92
103
|
end
|
|
@@ -7,7 +7,7 @@ module Aws
|
|
|
7
7
|
# {Aws::STS::Client#assume_role}.
|
|
8
8
|
#
|
|
9
9
|
# role_credentials = Aws::AssumeRoleCredentials.new(
|
|
10
|
-
# client: Aws::STS::Client.new(
|
|
10
|
+
# client: Aws::STS::Client.new(sts_options),
|
|
11
11
|
# role_arn: "linked::account::arn",
|
|
12
12
|
# role_session_name: "session-name"
|
|
13
13
|
# )
|
|
@@ -28,15 +28,15 @@ module Aws
|
|
|
28
28
|
# @option options [Integer] :duration_seconds
|
|
29
29
|
# @option options [String] :external_id
|
|
30
30
|
# @option options [STS::Client] :client
|
|
31
|
-
# @option options [
|
|
31
|
+
# @option options [Proc] :before_refresh A Proc called before
|
|
32
32
|
# credentials are refreshed. Useful for updating tokens.
|
|
33
|
-
#
|
|
34
|
-
# required and need to be refreshed.
|
|
35
|
-
# the following example:
|
|
33
|
+
# `:before_refresh` is called when AWS credentials are
|
|
34
|
+
# required and need to be refreshed. See the example in this doc.
|
|
36
35
|
#
|
|
37
|
-
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
36
|
+
# @example Tokens can be refreshed using a Proc.
|
|
37
|
+
# before_refresh = Proc.new do |assume_role_credentials|
|
|
38
|
+
# assume_role_credentials.assume_role_params['token_code'] = update_token
|
|
39
|
+
# end
|
|
40
40
|
#
|
|
41
41
|
def initialize(options = {})
|
|
42
42
|
client_opts = {}
|
|
@@ -50,6 +50,7 @@ module Aws
|
|
|
50
50
|
end
|
|
51
51
|
@client = client_opts[:client] || STS::Client.new(client_opts)
|
|
52
52
|
@async_refresh = true
|
|
53
|
+
@metrics = ['CREDENTIALS_STS_ASSUME_ROLE']
|
|
53
54
|
super
|
|
54
55
|
end
|
|
55
56
|
|
|
@@ -62,13 +63,20 @@ module Aws
|
|
|
62
63
|
private
|
|
63
64
|
|
|
64
65
|
def refresh
|
|
65
|
-
|
|
66
|
+
resp = @client.assume_role(@assume_role_params)
|
|
67
|
+
creds = resp.credentials
|
|
66
68
|
@credentials = Credentials.new(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
creds.access_key_id,
|
|
70
|
+
creds.secret_access_key,
|
|
71
|
+
creds.session_token,
|
|
72
|
+
account_id: parse_account_id(resp)
|
|
70
73
|
)
|
|
71
|
-
@expiration =
|
|
74
|
+
@expiration = creds.expiration
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def parse_account_id(resp)
|
|
78
|
+
arn = resp.assumed_role_user&.arn
|
|
79
|
+
ARNParser.parse(arn).account_id if ARNParser.arn?(arn)
|
|
72
80
|
end
|
|
73
81
|
|
|
74
82
|
class << self
|
|
@@ -9,11 +9,11 @@ module Aws
|
|
|
9
9
|
# {Aws::STS::Client#assume_role_with_web_identity}.
|
|
10
10
|
#
|
|
11
11
|
# role_credentials = Aws::AssumeRoleWebIdentityCredentials.new(
|
|
12
|
-
# client: Aws::STS::Client.new(
|
|
12
|
+
# client: Aws::STS::Client.new(sts_options),
|
|
13
13
|
# role_arn: "linked::account::arn",
|
|
14
14
|
# web_identity_token_file: "/path/to/token/file",
|
|
15
15
|
# role_session_name: "session-name"
|
|
16
|
-
# ...
|
|
16
|
+
# # ...
|
|
17
17
|
# )
|
|
18
18
|
# ec2 = Aws::EC2::Client.new(credentials: role_credentials)
|
|
19
19
|
#
|
|
@@ -60,7 +60,8 @@ module Aws
|
|
|
60
60
|
# not provided, generate encoded UUID as session name
|
|
61
61
|
@assume_role_web_identity_params[:role_session_name] = _session_name
|
|
62
62
|
end
|
|
63
|
-
@client = client_opts[:client] || STS::Client.new(client_opts.merge(credentials:
|
|
63
|
+
@client = client_opts[:client] || STS::Client.new(client_opts.merge(credentials: nil))
|
|
64
|
+
@metrics = ['CREDENTIALS_STS_ASSUME_ROLE_WEB_ID']
|
|
64
65
|
super
|
|
65
66
|
end
|
|
66
67
|
|
|
@@ -73,14 +74,15 @@ module Aws
|
|
|
73
74
|
# read from token file everytime it refreshes
|
|
74
75
|
@assume_role_web_identity_params[:web_identity_token] = _token_from_file(@token_file)
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
resp = @client.assume_role_with_web_identity(@assume_role_web_identity_params)
|
|
78
|
+
creds = resp.credentials
|
|
78
79
|
@credentials = Credentials.new(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
creds.access_key_id,
|
|
81
|
+
creds.secret_access_key,
|
|
82
|
+
creds.session_token,
|
|
83
|
+
account_id: parse_account_id(resp)
|
|
82
84
|
)
|
|
83
|
-
@expiration =
|
|
85
|
+
@expiration = creds.expiration
|
|
84
86
|
end
|
|
85
87
|
|
|
86
88
|
def _token_from_file(path)
|
|
@@ -94,6 +96,11 @@ module Aws
|
|
|
94
96
|
Base64.strict_encode64(SecureRandom.uuid)
|
|
95
97
|
end
|
|
96
98
|
|
|
99
|
+
def parse_account_id(resp)
|
|
100
|
+
arn = resp.assumed_role_user&.arn
|
|
101
|
+
ARNParser.parse(arn).account_id if ARNParser.arn?(arn)
|
|
102
|
+
end
|
|
103
|
+
|
|
97
104
|
class << self
|
|
98
105
|
|
|
99
106
|
# @api private
|
|
@@ -22,22 +22,16 @@ module Aws
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def attach_eventstream_listeners(context, rules)
|
|
25
|
-
|
|
26
25
|
context.http_response.on_headers(200) do
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
output_handler = context[:output_event_stream_handler] ||
|
|
27
|
+
context[:event_stream_handler]
|
|
29
28
|
context.http_response.body = EventStreamDecoder.new(
|
|
30
|
-
protocol,
|
|
29
|
+
context.config.protocol,
|
|
31
30
|
rules,
|
|
32
31
|
context.operation.output,
|
|
33
32
|
context.operation.errors,
|
|
34
33
|
context.http_response.body,
|
|
35
34
|
output_handler)
|
|
36
|
-
if input_emitter = context[:input_event_emitter]
|
|
37
|
-
# #emit will be blocked until 200 success
|
|
38
|
-
# see Aws::EventEmitter#emit
|
|
39
|
-
input_emitter.signal_queue << "ready"
|
|
40
|
-
end
|
|
41
35
|
end
|
|
42
36
|
|
|
43
37
|
context.http_response.on_success(200) do
|
|
@@ -10,10 +10,10 @@ module Aws
|
|
|
10
10
|
if eventstream_member = eventstream_input?(context)
|
|
11
11
|
input_es_handler = context[:input_event_stream_handler]
|
|
12
12
|
input_es_handler.event_emitter.encoder = EventStreamEncoder.new(
|
|
13
|
-
context.config.
|
|
13
|
+
context.config.protocol,
|
|
14
14
|
eventstream_member,
|
|
15
15
|
context.operation.input,
|
|
16
|
-
context
|
|
16
|
+
signer_for(context)
|
|
17
17
|
)
|
|
18
18
|
context[:input_event_emitter] = input_es_handler.event_emitter
|
|
19
19
|
end
|
|
@@ -22,6 +22,17 @@ module Aws
|
|
|
22
22
|
|
|
23
23
|
private
|
|
24
24
|
|
|
25
|
+
def signer_for(context)
|
|
26
|
+
# New endpoint/signing logic, use the auth scheme to make a signer
|
|
27
|
+
if context[:auth_scheme]
|
|
28
|
+
Aws::Plugins::Sign.signer_for(context[:auth_scheme], context.config)
|
|
29
|
+
else
|
|
30
|
+
# Previous implementation always assumed sigv4_signer from config.
|
|
31
|
+
# Relies only on sigv4 signing (and plugin) for event stream services
|
|
32
|
+
context.config.sigv4_signer
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
25
36
|
def eventstream_input?(ctx)
|
|
26
37
|
ctx.operation.input.shape.members.each do |_, ref|
|
|
27
38
|
return ref if ref.eventstream
|
|
@@ -42,41 +42,39 @@ module Aws
|
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
#
|
|
46
|
-
if !explicit_payload && !implicit_payload_members.empty?
|
|
47
|
-
if implicit_payload_members.size > 1
|
|
48
|
-
payload_shape = Shapes::StructureShape.new
|
|
49
|
-
implicit_payload_members.each do |m_name, m_ref|
|
|
50
|
-
payload_shape.add_member(m_name, m_ref)
|
|
51
|
-
end
|
|
52
|
-
payload_ref = Shapes::ShapeRef.new(shape: payload_shape)
|
|
53
|
-
|
|
54
|
-
payload = build_payload_members(payload_ref, params)
|
|
55
|
-
else
|
|
56
|
-
m_name, m_ref = implicit_payload_members.first
|
|
57
|
-
streaming, content_type = _content_type(m_ref.shape)
|
|
58
|
-
|
|
59
|
-
es_headers[":content-type"] = Aws::EventStream::HeaderValue.new(
|
|
60
|
-
type: "string", value: content_type)
|
|
61
|
-
payload = _build_payload(streaming, m_ref, params[m_name])
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
|
|
45
|
+
# handle header members for all cases
|
|
66
46
|
event_ref.shape.members.each do |member_name, member_ref|
|
|
67
47
|
if member_ref.eventheader && params[member_name]
|
|
68
48
|
header_value = params[member_name]
|
|
69
49
|
es_headers[member_ref.shape.name] = Aws::EventStream::HeaderValue.new(
|
|
70
|
-
type:
|
|
50
|
+
type: header_value_type(member_ref.shape, header_value),
|
|
71
51
|
value: header_value
|
|
72
52
|
)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# implict payload
|
|
57
|
+
if !explicit_payload && !implicit_payload_members.empty?
|
|
58
|
+
payload_shape = StructureShape.new
|
|
59
|
+
implicit_payload_members.each do |m_name, m_ref|
|
|
60
|
+
payload_shape.add_member(m_name, m_ref)
|
|
61
|
+
end
|
|
62
|
+
payload_ref = ShapeRef.new(shape: payload_shape)
|
|
76
63
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
64
|
+
payload = build_payload_members(payload_ref, params)
|
|
65
|
+
.force_encoding(Encoding::BINARY)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
es_headers[":content-type"] = Aws::EventStream::HeaderValue.new(
|
|
69
|
+
type: "string", value: content_type(payload_ref.shape))
|
|
70
|
+
else
|
|
71
|
+
# explicit payload, serialize just the payload member
|
|
72
|
+
event_ref.shape.members.each do |member_name, member_ref|
|
|
73
|
+
if member_ref.eventpayload && params[member_name]
|
|
74
|
+
es_headers[":content-type"] = Aws::EventStream::HeaderValue.new(
|
|
75
|
+
type: "string", value: content_type(member_ref.shape))
|
|
76
|
+
payload = params[member_name]
|
|
77
|
+
end
|
|
80
78
|
end
|
|
81
79
|
end
|
|
82
80
|
|
|
@@ -86,15 +84,15 @@ module Aws
|
|
|
86
84
|
)
|
|
87
85
|
end
|
|
88
86
|
|
|
89
|
-
def
|
|
87
|
+
def content_type(shape)
|
|
90
88
|
case shape
|
|
91
|
-
when BlobShape then
|
|
92
|
-
when StringShape then
|
|
89
|
+
when BlobShape then "application/octet-stream"
|
|
90
|
+
when StringShape then "text/plain"
|
|
93
91
|
when StructureShape then
|
|
94
92
|
if @serializer_class.name.include?('Xml')
|
|
95
|
-
|
|
93
|
+
"text/xml"
|
|
96
94
|
elsif @serializer_class.name.include?('Json')
|
|
97
|
-
|
|
95
|
+
"application/json"
|
|
98
96
|
end
|
|
99
97
|
else
|
|
100
98
|
raise Aws::Errors::EventStreamBuilderError.new(
|
|
@@ -102,7 +100,7 @@ module Aws
|
|
|
102
100
|
end
|
|
103
101
|
end
|
|
104
102
|
|
|
105
|
-
def
|
|
103
|
+
def header_value_type(shape, value)
|
|
106
104
|
case shape
|
|
107
105
|
when StringShape then "string"
|
|
108
106
|
when IntegerShape then "integer"
|
|
@@ -115,10 +113,9 @@ module Aws
|
|
|
115
113
|
end
|
|
116
114
|
end
|
|
117
115
|
|
|
118
|
-
def
|
|
119
|
-
|
|
116
|
+
def build_payload_members(payload_ref, params)
|
|
117
|
+
@serializer_class.new(payload_ref).serialize(params)
|
|
120
118
|
end
|
|
121
|
-
|
|
122
119
|
end
|
|
123
120
|
end
|
|
124
121
|
end
|
|
@@ -47,6 +47,7 @@ module Aws
|
|
|
47
47
|
when 'rest-xml' then Aws::Xml::Parser
|
|
48
48
|
when 'rest-json' then Aws::Json::Parser
|
|
49
49
|
when 'json' then Aws::Json::Parser
|
|
50
|
+
when 'smithy-rpc-v2-cbor' then Aws::RpcV2::Parser
|
|
50
51
|
else raise "unsupported protocol #{protocol} for event stream"
|
|
51
52
|
end
|
|
52
53
|
end
|
|
@@ -43,9 +43,10 @@ module Aws
|
|
|
43
43
|
|
|
44
44
|
def serializer_class(protocol)
|
|
45
45
|
case protocol
|
|
46
|
-
when 'rest-xml' then Xml::Builder
|
|
47
|
-
when 'rest-json' then Json::Builder
|
|
48
|
-
when 'json' then Json::Builder
|
|
46
|
+
when 'rest-xml' then Aws::Xml::Builder
|
|
47
|
+
when 'rest-json' then Aws::Json::Builder
|
|
48
|
+
when 'json' then Aws::Json::Builder
|
|
49
|
+
when 'smithy-rpc-v2-cbor' then Aws::RpcV2::Builder
|
|
49
50
|
else raise "unsupported protocol #{protocol} for event stream"
|
|
50
51
|
end
|
|
51
52
|
end
|