aws-sdk-core 3.46.2 → 3.126.2
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 +5 -5
- data/CHANGELOG.md +1258 -0
- data/LICENSE.txt +202 -0
- data/VERSION +1 -1
- data/lib/aws-defaults/default_configuration.rb +153 -0
- data/lib/aws-defaults/defaults_mode_config_resolver.rb +107 -0
- data/lib/aws-defaults.rb +3 -0
- data/lib/aws-sdk-core/arn.rb +92 -0
- data/lib/aws-sdk-core/arn_parser.rb +40 -0
- data/lib/aws-sdk-core/assume_role_credentials.rb +20 -0
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +109 -0
- data/lib/aws-sdk-core/async_client_stubs.rb +82 -0
- data/lib/aws-sdk-core/binary/decode_handler.rb +11 -1
- data/lib/aws-sdk-core/binary/encode_handler.rb +34 -0
- data/lib/aws-sdk-core/binary/event_builder.rb +124 -0
- data/lib/aws-sdk-core/binary/event_parser.rb +50 -18
- data/lib/aws-sdk-core/binary/event_stream_decoder.rb +7 -2
- data/lib/aws-sdk-core/binary/event_stream_encoder.rb +55 -0
- data/lib/aws-sdk-core/binary.rb +5 -0
- data/lib/aws-sdk-core/client_side_monitoring/publisher.rb +11 -1
- data/lib/aws-sdk-core/client_side_monitoring/request_metrics.rb +2 -0
- data/lib/aws-sdk-core/client_stubs.rb +16 -13
- data/lib/aws-sdk-core/credential_provider.rb +1 -30
- data/lib/aws-sdk-core/credential_provider_chain.rb +102 -40
- data/lib/aws-sdk-core/credentials.rb +2 -0
- data/lib/aws-sdk-core/deprecations.rb +17 -11
- data/lib/aws-sdk-core/eager_loader.rb +2 -0
- data/lib/aws-sdk-core/ec2_metadata.rb +238 -0
- data/lib/aws-sdk-core/ecs_credentials.rb +18 -9
- data/lib/aws-sdk-core/endpoint_cache.rb +16 -11
- data/lib/aws-sdk-core/errors.rb +138 -15
- data/lib/aws-sdk-core/event_emitter.rb +44 -0
- data/lib/aws-sdk-core/ini_parser.rb +2 -0
- data/lib/aws-sdk-core/instance_profile_credentials.rb +179 -42
- data/lib/aws-sdk-core/json/builder.rb +2 -0
- data/lib/aws-sdk-core/json/error_handler.rb +21 -2
- data/lib/aws-sdk-core/json/handler.rb +21 -1
- data/lib/aws-sdk-core/json/json_engine.rb +12 -8
- data/lib/aws-sdk-core/json/oj_engine.rb +35 -6
- data/lib/aws-sdk-core/json/parser.rb +10 -0
- data/lib/aws-sdk-core/json.rb +11 -28
- data/lib/aws-sdk-core/log/formatter.rb +16 -4
- data/lib/aws-sdk-core/log/handler.rb +2 -0
- data/lib/aws-sdk-core/log/param_filter.rb +38 -13
- data/lib/aws-sdk-core/log/param_formatter.rb +2 -0
- data/lib/aws-sdk-core/pageable_response.rb +48 -24
- data/lib/aws-sdk-core/pager.rb +5 -0
- data/lib/aws-sdk-core/param_converter.rb +2 -0
- data/lib/aws-sdk-core/param_validator.rb +63 -7
- data/lib/aws-sdk-core/plugins/api_key.rb +5 -1
- data/lib/aws-sdk-core/plugins/apig_authorizer_token.rb +2 -0
- data/lib/aws-sdk-core/plugins/apig_credentials_configuration.rb +2 -0
- data/lib/aws-sdk-core/plugins/apig_user_agent.rb +2 -0
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +28 -1
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +2 -0
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +26 -7
- data/lib/aws-sdk-core/plugins/defaults_mode.rb +40 -0
- data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +12 -4
- data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +8 -6
- data/lib/aws-sdk-core/plugins/event_stream_configuration.rb +16 -0
- data/lib/aws-sdk-core/plugins/global_configuration.rb +2 -0
- data/lib/aws-sdk-core/plugins/helpful_socket_errors.rb +2 -0
- data/lib/aws-sdk-core/plugins/http_checksum.rb +57 -0
- data/lib/aws-sdk-core/plugins/idempotency_token.rb +2 -0
- data/lib/aws-sdk-core/plugins/invocation_id.rb +35 -0
- data/lib/aws-sdk-core/plugins/jsonvalue_converter.rb +2 -0
- data/lib/aws-sdk-core/plugins/logging.rb +2 -0
- data/lib/aws-sdk-core/plugins/param_converter.rb +2 -0
- data/lib/aws-sdk-core/plugins/param_validator.rb +2 -0
- data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +19 -0
- data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -0
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +2 -0
- data/lib/aws-sdk-core/plugins/protocols/query.rb +2 -0
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +18 -1
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +2 -0
- data/lib/aws-sdk-core/plugins/recursion_detection.rb +27 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +74 -16
- data/lib/aws-sdk-core/plugins/response_paging.rb +2 -0
- data/lib/aws-sdk-core/plugins/retries/client_rate_limiter.rb +139 -0
- data/lib/aws-sdk-core/plugins/retries/clock_skew.rb +100 -0
- data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +146 -0
- data/lib/aws-sdk-core/plugins/retries/retry_quota.rb +59 -0
- data/lib/aws-sdk-core/plugins/retry_errors.rb +295 -107
- data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -0
- data/lib/aws-sdk-core/plugins/signature_v4.rb +28 -25
- data/lib/aws-sdk-core/plugins/stub_responses.rb +24 -7
- data/lib/aws-sdk-core/plugins/transfer_encoding.rb +53 -0
- data/lib/aws-sdk-core/plugins/user_agent.rb +6 -8
- data/lib/aws-sdk-core/process_credentials.rb +12 -5
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +2 -0
- data/lib/aws-sdk-core/query/handler.rb +2 -0
- data/lib/aws-sdk-core/query/param.rb +2 -0
- data/lib/aws-sdk-core/query/param_builder.rb +2 -0
- data/lib/aws-sdk-core/query/param_list.rb +2 -0
- data/lib/aws-sdk-core/query.rb +2 -0
- data/lib/aws-sdk-core/refreshing_credentials.rb +15 -2
- data/lib/aws-sdk-core/resources/collection.rb +2 -0
- data/lib/aws-sdk-core/rest/handler.rb +2 -0
- data/lib/aws-sdk-core/rest/request/body.rb +21 -1
- data/lib/aws-sdk-core/rest/request/builder.rb +2 -0
- data/lib/aws-sdk-core/rest/request/endpoint.rb +10 -3
- data/lib/aws-sdk-core/rest/request/headers.rb +20 -6
- data/lib/aws-sdk-core/rest/request/querystring_builder.rb +4 -2
- data/lib/aws-sdk-core/rest/response/body.rb +2 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +6 -3
- data/lib/aws-sdk-core/rest/response/parser.rb +2 -0
- data/lib/aws-sdk-core/rest/response/status_code.rb +2 -0
- data/lib/aws-sdk-core/rest.rb +2 -0
- data/lib/aws-sdk-core/shared_config.rb +153 -127
- data/lib/aws-sdk-core/shared_credentials.rb +9 -1
- data/lib/aws-sdk-core/sso_credentials.rb +136 -0
- data/lib/aws-sdk-core/structure.rb +14 -4
- data/lib/aws-sdk-core/stubbing/data_applicator.rb +2 -0
- data/lib/aws-sdk-core/stubbing/empty_stub.rb +2 -0
- data/lib/aws-sdk-core/stubbing/protocols/api_gateway.rb +2 -0
- data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +2 -0
- data/lib/aws-sdk-core/stubbing/protocols/json.rb +3 -1
- data/lib/aws-sdk-core/stubbing/protocols/query.rb +4 -2
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +52 -7
- data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +3 -1
- data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +2 -2
- data/lib/aws-sdk-core/stubbing/stub_data.rb +15 -4
- data/lib/aws-sdk-core/stubbing/xml_error.rb +2 -0
- data/lib/aws-sdk-core/type_builder.rb +2 -0
- data/lib/aws-sdk-core/util.rb +6 -0
- data/lib/aws-sdk-core/waiters/errors.rb +2 -0
- data/lib/aws-sdk-core/waiters/poller.rb +2 -0
- data/lib/aws-sdk-core/waiters/waiter.rb +4 -2
- data/lib/aws-sdk-core/waiters.rb +2 -0
- data/lib/aws-sdk-core/xml/builder.rb +5 -3
- data/lib/aws-sdk-core/xml/default_list.rb +2 -0
- data/lib/aws-sdk-core/xml/default_map.rb +2 -0
- data/lib/aws-sdk-core/xml/doc_builder.rb +15 -4
- data/lib/aws-sdk-core/xml/error_handler.rb +29 -4
- data/lib/aws-sdk-core/xml/parser/engines/libxml.rb +2 -0
- data/lib/aws-sdk-core/xml/parser/engines/nokogiri.rb +2 -0
- data/lib/aws-sdk-core/xml/parser/engines/oga.rb +2 -0
- data/lib/aws-sdk-core/xml/parser/engines/ox.rb +3 -1
- data/lib/aws-sdk-core/xml/parser/engines/rexml.rb +4 -1
- data/lib/aws-sdk-core/xml/parser/frame.rb +25 -0
- data/lib/aws-sdk-core/xml/parser/parsing_error.rb +2 -0
- data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
- data/lib/aws-sdk-core/xml/parser.rb +7 -0
- data/lib/aws-sdk-core/xml.rb +2 -0
- data/lib/aws-sdk-core.rb +23 -4
- data/lib/aws-sdk-sso/client.rb +568 -0
- data/lib/aws-sdk-sso/client_api.rb +190 -0
- data/lib/aws-sdk-sso/customizations.rb +1 -0
- data/lib/aws-sdk-sso/errors.rb +102 -0
- data/lib/aws-sdk-sso/resource.rb +26 -0
- data/lib/aws-sdk-sso/types.rb +352 -0
- data/lib/aws-sdk-sso.rb +55 -0
- data/lib/aws-sdk-sts/client.rb +1282 -531
- data/lib/aws-sdk-sts/client_api.rb +76 -1
- data/lib/aws-sdk-sts/customizations.rb +4 -0
- data/lib/aws-sdk-sts/errors.rb +153 -1
- data/lib/aws-sdk-sts/plugins/sts_regional_endpoints.rb +38 -0
- data/lib/aws-sdk-sts/presigner.rb +75 -0
- data/lib/aws-sdk-sts/resource.rb +4 -1
- data/lib/aws-sdk-sts/types.rb +958 -229
- data/lib/aws-sdk-sts.rb +16 -6
- data/lib/seahorse/client/async_base.rb +52 -0
- data/lib/seahorse/client/async_response.rb +64 -0
- data/lib/seahorse/client/base.rb +7 -2
- data/lib/seahorse/client/block_io.rb +6 -2
- data/lib/seahorse/client/configuration.rb +7 -1
- data/lib/seahorse/client/events.rb +3 -1
- data/lib/seahorse/client/h2/connection.rb +250 -0
- data/lib/seahorse/client/h2/handler.rb +152 -0
- data/lib/seahorse/client/handler.rb +2 -0
- data/lib/seahorse/client/handler_builder.rb +2 -0
- data/lib/seahorse/client/handler_list.rb +2 -0
- data/lib/seahorse/client/handler_list_entry.rb +6 -4
- data/lib/seahorse/client/http/async_response.rb +44 -0
- data/lib/seahorse/client/http/headers.rb +2 -0
- data/lib/seahorse/client/http/request.rb +5 -3
- data/lib/seahorse/client/http/response.rb +18 -11
- data/lib/seahorse/client/logging/formatter.rb +6 -2
- data/lib/seahorse/client/logging/handler.rb +2 -0
- data/lib/seahorse/client/managed_file.rb +2 -0
- data/lib/seahorse/client/net_http/connection_pool.rb +30 -23
- data/lib/seahorse/client/net_http/handler.rb +24 -7
- data/lib/seahorse/client/net_http/patches.rb +15 -84
- data/lib/seahorse/client/networking_error.rb +30 -0
- data/lib/seahorse/client/plugin.rb +10 -7
- data/lib/seahorse/client/plugin_list.rb +2 -0
- data/lib/seahorse/client/plugins/content_length.rb +14 -3
- data/lib/seahorse/client/plugins/endpoint.rb +4 -2
- data/lib/seahorse/client/plugins/h2.rb +69 -0
- data/lib/seahorse/client/plugins/logging.rb +2 -0
- data/lib/seahorse/client/plugins/net_http.rb +39 -3
- data/lib/seahorse/client/plugins/operation_methods.rb +2 -0
- data/lib/seahorse/client/plugins/raise_response_errors.rb +2 -0
- data/lib/seahorse/client/plugins/request_callback.rb +110 -0
- data/lib/seahorse/client/plugins/response_target.rb +23 -14
- data/lib/seahorse/client/request.rb +2 -0
- data/lib/seahorse/client/request_context.rb +2 -0
- data/lib/seahorse/client/response.rb +5 -5
- data/lib/seahorse/model/api.rb +10 -0
- data/lib/seahorse/model/authorizer.rb +2 -0
- data/lib/seahorse/model/operation.rb +9 -0
- data/lib/seahorse/model/shapes.rb +29 -2
- data/lib/seahorse/util.rb +8 -1
- data/lib/seahorse/version.rb +2 -0
- data/lib/seahorse.rb +12 -0
- metadata +64 -14
|
@@ -1,43 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'pathname'
|
|
2
4
|
require 'set'
|
|
3
5
|
|
|
4
6
|
module Aws
|
|
5
7
|
module Log
|
|
6
8
|
class ParamFilter
|
|
7
|
-
|
|
9
|
+
# DEPRECATED - This must exist for backwards compatibility. Sensitive
|
|
10
|
+
# members are now computed for each request/response type. This can be
|
|
11
|
+
# removed in a new major version. This list is no longer updated.
|
|
12
|
+
#
|
|
8
13
|
# A managed list of sensitive parameters that should be filtered from
|
|
9
14
|
# logs. This is updated automatically as part of each release. See the
|
|
10
|
-
# `tasks/sensitive.rake` for more information.
|
|
15
|
+
# `tasks/update-sensitive-params.rake` for more information.
|
|
11
16
|
#
|
|
12
17
|
# @api private
|
|
13
18
|
# begin
|
|
14
|
-
SENSITIVE = [:access_token, :account_name, :account_password, :address, :admin_contact, :artifact_credentials, :auth_code, :authentication_token, :authorization_result, :backup_plan_tags, :backup_vault_tags, :base_32_string_seed, :body, :bot_configuration, :cause, :client_id, :client_secret, :configuration, :copy_source_sse_customer_key, :credentials, :custom_attributes, :db_password, :definition, :description, :display_name, :email, :email_address, :email_message, :embed_url, :error, :feedback_token, :file, :first_name, :id, :id_token, :input, :input_text, :key_id, :key_store_password, :kms_key_id, :kms_master_key_id, :last_name, :local_console_password, :master_account_email, :master_user_password, :message, :name, :new_password, :notes, :old_password, :output, :owner_information, :parameters, :passphrase, :password, :payload, :phone_number, :plaintext, :previous_password, :primary_email, :private_key, :proposed_password, :public_key, :qr_code_png, :query, :recovery_point_tags, :refresh_token, :registrant_contact, :request_attributes, :search_query, :secret_access_key, :secret_binary, :secret_code, :secret_hash, :secret_string, :service_password, :session_attributes, :share_notes, :shared_secret, :slots, :sse_customer_key, :ssekms_key_id, :status_message, :tag_key_list, :tags, :task_parameters, :tech_contact, :temporary_password, :text, :token, :trust_password, :upload_credentials, :upload_url, :user_email, :user_name, :username, :value, :values, :variables, :zip_file]
|
|
19
|
+
SENSITIVE = [:access_token, :account_name, :account_password, :address, :admin_contact, :admin_password, :alexa_for_business_room_arn, :artifact_credentials, :auth_code, :auth_parameters, :authentication_token, :authorization_result, :backup_plan_tags, :backup_vault_tags, :base_32_string_seed, :basic_auth_credentials, :block, :block_address, :block_data, :blocks, :body, :bot_configuration, :bot_email, :calling_name, :cause, :client_id, :client_request_token, :client_secret, :comment, :configuration, :content, :copy_source_sse_customer_key, :credentials, :current_password, :custom_attributes, :custom_private_key, :db_password, :default_phone_number, :definition, :description, :destination_access_token, :digest_tip_address, :display_name, :domain_signing_private_key, :e164_phone_number, :email, :email_address, :email_message, :embed_url, :emergency_phone_number, :error, :external_meeting_id, :external_model_endpoint_data_blobs, :external_user_id, :fall_back_phone_number, :feedback_token, :file, :filter_expression, :first_name, :full_name, :host_key, :id, :id_token, :input, :input_text, :ion_text, :join_token, :key, :key_id, :key_material, :key_store_password, :kms_key_id, :kms_master_key_id, :lambda_function_arn, :last_name, :local_console_password, :master_account_email, :master_user_name, :master_user_password, :meeting_host_id, :message, :metadata, :name, :new_password, :next_password, :notes, :number, :oauth_token, :old_password, :outbound_events_https_endpoint, :output, :owner_information, :parameters, :passphrase, :password, :payload, :phone_number, :plaintext, :previous_password, :primary_email, :primary_provisioned_number, :private_key, :private_key_plaintext, :proof, :proposed_password, :proxy_phone_number, :public_key, :qr_code_png, :query, :random_password, :recovery_point_tags, :refresh_token, :registrant_contact, :request_attributes, :resource_arn, :restore_metadata, :revision, :saml_assertion, :search_query, :secret_access_key, :secret_binary, :secret_code, :secret_hash, :secret_string, :secret_to_authenticate_initiator, :secret_to_authenticate_target, :security_token, :service_password, :session_attributes, :session_token, :share_notes, :shared_secret, :slots, :sns_topic_arn, :source_access_token, :sqs_queue_arn, :sse_customer_key, :ssekms_encryption_context, :ssekms_key_id, :status_message, :tag_key_list, :tags, :target_address, :task_parameters, :tech_contact, :temporary_password, :test_phone_number, :text, :token, :trust_password, :type, :upload_credentials, :upload_url, :uri, :user_data, :user_email, :user_name, :user_password, :username, :value, :values, :variables, :vpn_psk, :web_identity_token, :zip_file]
|
|
15
20
|
# end
|
|
16
21
|
|
|
17
22
|
def initialize(options = {})
|
|
18
|
-
@
|
|
23
|
+
@enabled = options[:filter_sensitive_params] != false
|
|
24
|
+
@additional_filters = options[:filter] || []
|
|
19
25
|
end
|
|
20
26
|
|
|
21
|
-
def filter(
|
|
22
|
-
case
|
|
23
|
-
when Struct
|
|
24
|
-
when
|
|
25
|
-
|
|
27
|
+
def filter(values, type)
|
|
28
|
+
case values
|
|
29
|
+
when Struct then filter_struct(values, type)
|
|
30
|
+
when Hash then filter_hash(values, type)
|
|
31
|
+
when Array then filter_array(values, type)
|
|
32
|
+
else values
|
|
26
33
|
end
|
|
27
34
|
end
|
|
28
35
|
|
|
29
36
|
private
|
|
30
37
|
|
|
31
|
-
def
|
|
38
|
+
def filter_struct(values, type)
|
|
39
|
+
if values.class.include? Aws::Structure::Union
|
|
40
|
+
values = { values.member => values.value }
|
|
41
|
+
end
|
|
42
|
+
filter_hash(values, type)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def filter_hash(values, type)
|
|
46
|
+
if type.const_defined?('SENSITIVE')
|
|
47
|
+
filters = type::SENSITIVE + @additional_filters
|
|
48
|
+
else
|
|
49
|
+
# Support backwards compatibility (new core + old service)
|
|
50
|
+
filters = SENSITIVE + @additional_filters
|
|
51
|
+
end
|
|
52
|
+
|
|
32
53
|
filtered = {}
|
|
33
54
|
values.each_pair do |key, value|
|
|
34
|
-
filtered[key] = @filters.include?(key)
|
|
55
|
+
filtered[key] = if @enabled && filters.include?(key)
|
|
56
|
+
'[FILTERED]'
|
|
57
|
+
else
|
|
58
|
+
filter(value, type)
|
|
59
|
+
end
|
|
35
60
|
end
|
|
36
61
|
filtered
|
|
37
62
|
end
|
|
38
63
|
|
|
39
|
-
def filter_array(values)
|
|
40
|
-
values.map { |value| filter(value) }
|
|
64
|
+
def filter_array(values, type)
|
|
65
|
+
values.map { |value| filter(value, type) }
|
|
41
66
|
end
|
|
42
67
|
|
|
43
68
|
end
|
|
@@ -1,38 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
3
|
+
module Aws
|
|
4
|
+
# Decorates a {Seahorse::Client::Response} with paging convenience methods.
|
|
5
|
+
# Some AWS calls provide paged responses to limit the amount of data returned
|
|
6
|
+
# with each response. To optimize for latency, some APIs may return an
|
|
7
|
+
# inconsistent number of responses per page. You should rely on the values of
|
|
8
|
+
# the `next_page?` method or using enumerable methods such as `each` rather
|
|
9
|
+
# than the number of items returned to iterate through results. See below for
|
|
10
|
+
# examples.
|
|
8
11
|
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
# resp.last_page?
|
|
12
|
-
# #=> true
|
|
12
|
+
# @note Methods such as `to_json` will enumerate all of the responses before
|
|
13
|
+
# returning the full response as JSON.
|
|
13
14
|
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
15
|
+
# # Paged Responses Are Enumerable
|
|
16
|
+
# The simplest way to handle paged response data is to use the built-in
|
|
17
|
+
# enumerator in the response object, as shown in the following example.
|
|
16
18
|
#
|
|
17
|
-
#
|
|
19
|
+
# s3 = Aws::S3::Client.new
|
|
18
20
|
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
# page.reservations.each do |r|
|
|
22
|
-
# # ...
|
|
23
|
-
# end
|
|
21
|
+
# s3.list_objects(bucket:'aws-sdk').each do |response|
|
|
22
|
+
# puts response.contents.map(&:key)
|
|
24
23
|
# end
|
|
25
24
|
#
|
|
26
|
-
#
|
|
25
|
+
# This yields one response object per API call made, and enumerates objects
|
|
26
|
+
# in the named bucket. The SDK retrieves additional pages of data to
|
|
27
|
+
# complete the request.
|
|
28
|
+
#
|
|
29
|
+
# # Handling Paged Responses Manually
|
|
30
|
+
# To handle paging yourself, use the response’s `next_page?` method to verify
|
|
31
|
+
# there are more pages to retrieve, or use the last_page? method to verify
|
|
32
|
+
# there are no more pages to retrieve.
|
|
33
|
+
#
|
|
34
|
+
# If there are more pages, use the `next_page` method to retrieve the
|
|
35
|
+
# next page of results, as shown in the following example.
|
|
27
36
|
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
37
|
+
# s3 = Aws::S3::Client.new
|
|
38
|
+
#
|
|
39
|
+
# # Get the first page of data
|
|
40
|
+
# response = s3.list_objects(bucket:'aws-sdk')
|
|
41
|
+
#
|
|
42
|
+
# # Get additional pages
|
|
43
|
+
# while response.next_page? do
|
|
44
|
+
# response = response.next_page
|
|
45
|
+
# # Use the response data here...
|
|
46
|
+
# puts response.contents.map(&:key)
|
|
47
|
+
# end
|
|
30
48
|
#
|
|
31
49
|
module PageableResponse
|
|
32
50
|
|
|
33
51
|
def self.extended(base)
|
|
34
|
-
base.
|
|
35
|
-
base.
|
|
52
|
+
base.extend Enumerable
|
|
53
|
+
base.extend UnsafeEnumerableMethods
|
|
36
54
|
base.instance_variable_set("@last_page", nil)
|
|
37
55
|
base.instance_variable_set("@more_results", nil)
|
|
38
56
|
end
|
|
@@ -97,7 +115,13 @@ module Aws
|
|
|
97
115
|
# @return [Hash] Returns the hash of request parameters for the
|
|
98
116
|
# next page, merging any given params.
|
|
99
117
|
def next_page_params(params)
|
|
100
|
-
|
|
118
|
+
# Remove all previous tokens from original params
|
|
119
|
+
# Sometimes a token can be nil and merge would not include it.
|
|
120
|
+
tokens = @pager.tokens.values.map(&:to_sym)
|
|
121
|
+
|
|
122
|
+
params_without_tokens = context[:original_params].reject { |k, _v| tokens.include?(k) }
|
|
123
|
+
params_without_tokens.merge!(@pager.next_tokens(self).merge(params))
|
|
124
|
+
params_without_tokens
|
|
101
125
|
end
|
|
102
126
|
|
|
103
127
|
# Raised when calling {PageableResponse#next_page} on a pager that
|
data/lib/aws-sdk-core/pager.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'jmespath'
|
|
2
4
|
|
|
3
5
|
module Aws
|
|
@@ -16,6 +18,9 @@ module Aws
|
|
|
16
18
|
# @return [Symbol, nil]
|
|
17
19
|
attr_reader :limit_key
|
|
18
20
|
|
|
21
|
+
# @return [Hash, nil]
|
|
22
|
+
attr_reader :tokens
|
|
23
|
+
|
|
19
24
|
# @param [Seahorse::Client::Response] response
|
|
20
25
|
# @return [Hash]
|
|
21
26
|
def next_tokens(response)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
# @api private
|
|
3
5
|
class ParamValidator
|
|
@@ -22,6 +24,7 @@ module Aws
|
|
|
22
24
|
ShapeRef.new(shape: shape)
|
|
23
25
|
end
|
|
24
26
|
@validate_required = options[:validate_required] != false
|
|
27
|
+
@input = options[:input].nil? ? true : !!options[:input]
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
# @param [Hash] params
|
|
@@ -39,6 +42,7 @@ module Aws
|
|
|
39
42
|
return unless correct_type?(ref, values, errors, context)
|
|
40
43
|
|
|
41
44
|
if ref.eventstream
|
|
45
|
+
# input eventstream is provided from event signals
|
|
42
46
|
values.each do |value|
|
|
43
47
|
# each event is structure type
|
|
44
48
|
case value[:message_type]
|
|
@@ -58,13 +62,22 @@ module Aws
|
|
|
58
62
|
# ensure required members are present
|
|
59
63
|
if @validate_required
|
|
60
64
|
shape.required.each do |member_name|
|
|
61
|
-
|
|
65
|
+
input_eventstream = ref.shape.member(member_name).eventstream && @input
|
|
66
|
+
if values[member_name].nil? && !input_eventstream
|
|
62
67
|
param = "#{context}[#{member_name.inspect}]"
|
|
63
68
|
errors << "missing required parameter #{param}"
|
|
64
69
|
end
|
|
65
70
|
end
|
|
66
71
|
end
|
|
67
72
|
|
|
73
|
+
if @validate_required && shape.union
|
|
74
|
+
if values.length > 1
|
|
75
|
+
errors << "multiple values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}"
|
|
76
|
+
elsif values.length == 0
|
|
77
|
+
errors << "No values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
68
81
|
# validate non-nil members
|
|
69
82
|
values.each_pair do |name, value|
|
|
70
83
|
unless value.nil?
|
|
@@ -112,11 +125,32 @@ module Aws
|
|
|
112
125
|
end
|
|
113
126
|
end
|
|
114
127
|
|
|
128
|
+
def document(ref, value, errors, context)
|
|
129
|
+
document_types = [Hash, Array, Numeric, String, TrueClass, FalseClass, NilClass]
|
|
130
|
+
unless document_types.any? { |t| value.is_a?(t) }
|
|
131
|
+
errors << expected_got(context, "one of #{document_types.join(', ')}", value)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# recursively validate types for aggregated types
|
|
135
|
+
case value
|
|
136
|
+
when Hash
|
|
137
|
+
value.each do |k, v|
|
|
138
|
+
document(ref, v, errors, context + "[#{k}]")
|
|
139
|
+
end
|
|
140
|
+
when Array
|
|
141
|
+
value.each do |v|
|
|
142
|
+
document(ref, v, errors, context)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
end
|
|
147
|
+
|
|
115
148
|
def shape(ref, value, errors, context)
|
|
116
149
|
case ref.shape
|
|
117
150
|
when StructureShape then structure(ref, value, errors, context)
|
|
118
151
|
when ListShape then list(ref, value, errors, context)
|
|
119
152
|
when MapShape then map(ref, value, errors, context)
|
|
153
|
+
when DocumentShape then document(ref, value, errors, context)
|
|
120
154
|
when StringShape
|
|
121
155
|
unless value.is_a?(String)
|
|
122
156
|
errors << expected_got(context, "a String", value)
|
|
@@ -138,8 +172,22 @@ module Aws
|
|
|
138
172
|
errors << expected_got(context, "true or false", value)
|
|
139
173
|
end
|
|
140
174
|
when BlobShape
|
|
141
|
-
unless
|
|
142
|
-
|
|
175
|
+
unless value.is_a?(String)
|
|
176
|
+
if streaming_input?(ref)
|
|
177
|
+
unless io_like?(value, _require_size = false)
|
|
178
|
+
errors << expected_got(
|
|
179
|
+
context,
|
|
180
|
+
"a String or IO like object that supports read and rewind",
|
|
181
|
+
value
|
|
182
|
+
)
|
|
183
|
+
end
|
|
184
|
+
elsif !io_like?(value, _require_size = true)
|
|
185
|
+
errors << expected_got(
|
|
186
|
+
context,
|
|
187
|
+
"a String or IO like object that supports read, rewind, and size",
|
|
188
|
+
value
|
|
189
|
+
)
|
|
190
|
+
end
|
|
143
191
|
end
|
|
144
192
|
else
|
|
145
193
|
raise "unhandled shape type: #{ref.shape.class.name}"
|
|
@@ -147,6 +195,11 @@ module Aws
|
|
|
147
195
|
end
|
|
148
196
|
|
|
149
197
|
def correct_type?(ref, value, errors, context)
|
|
198
|
+
if ref.eventstream && @input
|
|
199
|
+
errors << "instead of providing value directly for eventstreams at input,"\
|
|
200
|
+
" expected to use #signal events per stream"
|
|
201
|
+
return false
|
|
202
|
+
end
|
|
150
203
|
case value
|
|
151
204
|
when Hash then true
|
|
152
205
|
when ref.shape.struct_class then true
|
|
@@ -157,10 +210,13 @@ module Aws
|
|
|
157
210
|
end
|
|
158
211
|
end
|
|
159
212
|
|
|
160
|
-
def io_like?(value)
|
|
161
|
-
value.respond_to?(:read) &&
|
|
162
|
-
|
|
163
|
-
|
|
213
|
+
def io_like?(value, require_size = true)
|
|
214
|
+
value.respond_to?(:read) && value.respond_to?(:rewind) &&
|
|
215
|
+
(!require_size || value.respond_to?(:size))
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def streaming_input?(ref)
|
|
219
|
+
(ref["streaming"] || ref.shape["streaming"])
|
|
164
220
|
end
|
|
165
221
|
|
|
166
222
|
def error_messages(errors)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
module Plugins
|
|
3
5
|
|
|
@@ -21,7 +23,9 @@ When provided, `x-api-key` header will be injected with the value provided.
|
|
|
21
23
|
class OptionHandler < Seahorse::Client::Handler
|
|
22
24
|
def call(context)
|
|
23
25
|
if context.operation.require_apikey
|
|
24
|
-
|
|
26
|
+
if context.params.is_a?(Hash) && context.params[:api_key]
|
|
27
|
+
api_key = context.params.delete(:api_key)
|
|
28
|
+
end
|
|
25
29
|
api_key = context.config.api_key if api_key.nil?
|
|
26
30
|
context[:api_key] = api_key
|
|
27
31
|
end
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'date'
|
|
4
|
+
require_relative 'retries/error_inspector'
|
|
2
5
|
|
|
3
6
|
module Aws
|
|
4
7
|
module Plugins
|
|
@@ -24,6 +27,16 @@ agent is running on, where client metrics will be published via UDP.
|
|
|
24
27
|
resolve_client_side_monitoring_port(cfg)
|
|
25
28
|
end
|
|
26
29
|
|
|
30
|
+
option(:client_side_monitoring_host,
|
|
31
|
+
default: "127.0.0.1",
|
|
32
|
+
doc_type: String,
|
|
33
|
+
docstring: <<-DOCS) do |cfg|
|
|
34
|
+
Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
|
|
35
|
+
side monitoring agent is running on, where client metrics will be published via UDP.
|
|
36
|
+
DOCS
|
|
37
|
+
resolve_client_side_monitoring_host(cfg)
|
|
38
|
+
end
|
|
39
|
+
|
|
27
40
|
option(:client_side_monitoring_publisher,
|
|
28
41
|
default: ClientSideMonitoring::Publisher,
|
|
29
42
|
doc_type: Aws::ClientSideMonitoring::Publisher,
|
|
@@ -49,6 +62,7 @@ all generated client side metrics. Defaults to an empty string.
|
|
|
49
62
|
handlers.add(Handler, step: :initialize)
|
|
50
63
|
publisher = config.client_side_monitoring_publisher
|
|
51
64
|
publisher.agent_port = config.client_side_monitoring_port
|
|
65
|
+
publisher.agent_host = config.client_side_monitoring_host
|
|
52
66
|
end
|
|
53
67
|
end
|
|
54
68
|
|
|
@@ -70,6 +84,19 @@ all generated client side metrics. Defaults to an empty string.
|
|
|
70
84
|
end
|
|
71
85
|
end
|
|
72
86
|
|
|
87
|
+
def self.resolve_client_side_monitoring_host(cfg)
|
|
88
|
+
env_source = ENV["AWS_CSM_HOST"]
|
|
89
|
+
env_source = nil if env_source == ""
|
|
90
|
+
cfg_source = Aws.shared_config.csm_host(profile: cfg.profile)
|
|
91
|
+
if env_source
|
|
92
|
+
env_source
|
|
93
|
+
elsif cfg_source
|
|
94
|
+
cfg_source
|
|
95
|
+
else
|
|
96
|
+
"127.0.0.1"
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
73
100
|
def self.resolve_client_side_monitoring(cfg)
|
|
74
101
|
env_source = ENV["AWS_CSM_ENABLED"]
|
|
75
102
|
env_source = nil if env_source == ""
|
|
@@ -117,7 +144,7 @@ all generated client side metrics. Defaults to an empty string.
|
|
|
117
144
|
@handler.call(context)
|
|
118
145
|
rescue StandardError => e
|
|
119
146
|
# Handle SDK Exceptions
|
|
120
|
-
inspector =
|
|
147
|
+
inspector = Retries::ErrorInspector.new(
|
|
121
148
|
e,
|
|
122
149
|
context.http_response.status_code
|
|
123
150
|
)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
# @api private
|
|
3
5
|
module Plugins
|
|
@@ -28,13 +30,28 @@ following classes:
|
|
|
28
30
|
* `Aws::Credentials` - Used for configuring static, non-refreshing
|
|
29
31
|
credentials.
|
|
30
32
|
|
|
33
|
+
* `Aws::SharedCredentials` - Used for loading static credentials from a
|
|
34
|
+
shared file, such as `~/.aws/config`.
|
|
35
|
+
|
|
36
|
+
* `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
|
|
37
|
+
|
|
38
|
+
* `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
|
|
39
|
+
assume a role after providing credentials via the web.
|
|
40
|
+
|
|
41
|
+
* `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
|
|
42
|
+
access token generated from `aws login`.
|
|
43
|
+
|
|
44
|
+
* `Aws::ProcessCredentials` - Used for loading credentials from a
|
|
45
|
+
process that outputs to stdout.
|
|
46
|
+
|
|
31
47
|
* `Aws::InstanceProfileCredentials` - Used for loading credentials
|
|
32
48
|
from an EC2 IMDS on an EC2 instance.
|
|
33
49
|
|
|
34
|
-
* `Aws::
|
|
35
|
-
|
|
50
|
+
* `Aws::ECSCredentials` - Used for loading credentials from
|
|
51
|
+
instances running in ECS.
|
|
36
52
|
|
|
37
|
-
* `Aws::
|
|
53
|
+
* `Aws::CognitoIdentityCredentials` - Used for loading credentials
|
|
54
|
+
from the Cognito Identity service.
|
|
38
55
|
|
|
39
56
|
When `:credentials` are not configured directly, the following
|
|
40
57
|
locations will be searched for credentials:
|
|
@@ -44,10 +61,12 @@ locations will be searched for credentials:
|
|
|
44
61
|
* ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
|
|
45
62
|
* `~/.aws/credentials`
|
|
46
63
|
* `~/.aws/config`
|
|
47
|
-
* EC2 IMDS instance profile - When used by default, the timeouts
|
|
48
|
-
very aggressive. Construct and pass an instance of
|
|
49
|
-
`Aws::InstanceProfileCredentails`
|
|
50
|
-
timeouts.
|
|
64
|
+
* EC2/ECS IMDS instance profile - When used by default, the timeouts
|
|
65
|
+
are very aggressive. Construct and pass an instance of
|
|
66
|
+
`Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to
|
|
67
|
+
enable retries and extended timeouts. Instance profile credential
|
|
68
|
+
fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
|
|
69
|
+
to true.
|
|
51
70
|
DOCS
|
|
52
71
|
) do |config|
|
|
53
72
|
CredentialProviderChain.new(config).resolve
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
# @api private
|
|
5
|
+
module Plugins
|
|
6
|
+
# @api private
|
|
7
|
+
class DefaultsMode < Seahorse::Client::Plugin
|
|
8
|
+
|
|
9
|
+
option(:defaults_mode,
|
|
10
|
+
default: 'legacy',
|
|
11
|
+
doc_type: String,
|
|
12
|
+
docstring: <<-DOCS
|
|
13
|
+
See {Aws::DefaultsModeConfiguration} for a list of the
|
|
14
|
+
accepted modes and the configuration defaults that are included.
|
|
15
|
+
DOCS
|
|
16
|
+
) do |cfg|
|
|
17
|
+
resolve_defaults_mode(cfg)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
option(:defaults_mode_config_resolver,
|
|
21
|
+
doc_type: 'Aws::DefaultsModeConfigResolver') do |cfg|
|
|
22
|
+
Aws::DefaultsModeConfigResolver.new(
|
|
23
|
+
Aws::DefaultsModeConfiguration::SDK_DEFAULT_CONFIGURATION, cfg)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class << self
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def resolve_defaults_mode(cfg)
|
|
30
|
+
value = ENV['AWS_DEFAULTS_MODE']
|
|
31
|
+
value ||= Aws.shared_config.defaults_mode(
|
|
32
|
+
profile: cfg.profile
|
|
33
|
+
)
|
|
34
|
+
value&.downcase || "legacy"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
module Plugins
|
|
3
5
|
# @api private
|
|
4
6
|
class EndpointDiscovery < Seahorse::Client::Plugin
|
|
5
7
|
|
|
6
8
|
option(:endpoint_discovery,
|
|
7
|
-
|
|
9
|
+
doc_default: Proc.new { |options| options[:require_endpoint_discovery] },
|
|
8
10
|
doc_type: 'Boolean',
|
|
9
11
|
docstring: <<-DOCS) do |cfg|
|
|
10
|
-
When set to `true`, endpoint discovery will be enabled for operations when available.
|
|
12
|
+
When set to `true`, endpoint discovery will be enabled for operations when available.
|
|
11
13
|
DOCS
|
|
12
14
|
resolve_endpoint_discovery(cfg)
|
|
13
15
|
end
|
|
@@ -102,6 +104,10 @@ the background every 60 secs (default). Defaults to `false`.
|
|
|
102
104
|
key = cache.extract_key(ctx)
|
|
103
105
|
|
|
104
106
|
if required
|
|
107
|
+
unless ctx.config.endpoint_discovery
|
|
108
|
+
raise ArgumentError, "Operation #{ctx.operation.name} requires "\
|
|
109
|
+
'endpoint_discovery to be enabled.'
|
|
110
|
+
end
|
|
105
111
|
# required for the operation
|
|
106
112
|
unless cache.key?(key)
|
|
107
113
|
cache.update(key, ctx)
|
|
@@ -151,8 +157,10 @@ the background every 60 secs (default). Defaults to `false`.
|
|
|
151
157
|
|
|
152
158
|
def self.resolve_endpoint_discovery(cfg)
|
|
153
159
|
env = ENV['AWS_ENABLE_ENDPOINT_DISCOVERY']
|
|
154
|
-
|
|
155
|
-
Aws
|
|
160
|
+
default = cfg.api.require_endpoint_discovery
|
|
161
|
+
shared_cfg = Aws.shared_config.endpoint_discovery_enabled(profile: cfg.profile)
|
|
162
|
+
resolved = Aws::Util.str_2_bool(env) || Aws::Util.str_2_bool(shared_cfg)
|
|
163
|
+
env.nil? && shared_cfg.nil? ? default : !!resolved
|
|
156
164
|
end
|
|
157
165
|
|
|
158
166
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
module Plugins
|
|
3
5
|
# @api private
|
|
@@ -13,17 +15,17 @@ to default service endpoint when available.
|
|
|
13
15
|
)
|
|
14
16
|
|
|
15
17
|
def add_handlers(handlers, config)
|
|
16
|
-
|
|
17
|
-
handlers.add(Handler, priority: 90)
|
|
18
|
-
end
|
|
18
|
+
handlers.add(Handler, priority: 10)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
class Handler < Seahorse::Client::Handler
|
|
22
22
|
|
|
23
23
|
def call(context)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
if !context.config.disable_host_prefix_injection
|
|
25
|
+
endpoint_trait = context.operation.endpoint_pattern
|
|
26
|
+
if endpoint_trait && !endpoint_trait.empty?
|
|
27
|
+
_apply_endpoint_trait(context, endpoint_trait)
|
|
28
|
+
end
|
|
27
29
|
end
|
|
28
30
|
@handler.call(context)
|
|
29
31
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Aws
|
|
2
4
|
module Plugins
|
|
3
5
|
|
|
@@ -10,6 +12,20 @@ module Aws
|
|
|
10
12
|
When an EventStream or Proc object is provided, it will be used as callback for each chunk of event stream response received along the way.
|
|
11
13
|
DOCS
|
|
12
14
|
|
|
15
|
+
option(:input_event_stream_handler,
|
|
16
|
+
default: nil,
|
|
17
|
+
doc_type: 'Proc',
|
|
18
|
+
docstring: <<-DOCS)
|
|
19
|
+
When an EventStream or Proc object is provided, it can be used for sending events for the event stream.
|
|
20
|
+
DOCS
|
|
21
|
+
|
|
22
|
+
option(:output_event_stream_handler,
|
|
23
|
+
default: nil,
|
|
24
|
+
doc_type: 'Proc',
|
|
25
|
+
docstring: <<-DOCS)
|
|
26
|
+
When an EventStream or Proc object is provided, it will be used as callback for each chunk of event stream response received along the way.
|
|
27
|
+
DOCS
|
|
28
|
+
|
|
13
29
|
end
|
|
14
30
|
|
|
15
31
|
end
|