aws-sdk-core 3.202.2 → 3.206.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-core/endpoints.rb +6 -3
  5. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +1 -0
  6. data/lib/aws-sdk-core/plugins/stub_responses.rb +29 -2
  7. data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
  8. data/lib/aws-sdk-core/plugins/user_agent.rb +12 -8
  9. data/lib/aws-sdk-core/rpc_v2/handler.rb +5 -1
  10. data/lib/aws-sdk-core/telemetry/base.rb +177 -0
  11. data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
  12. data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
  13. data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
  14. data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
  15. data/lib/aws-sdk-core/telemetry.rb +78 -0
  16. data/lib/aws-sdk-core.rb +2 -12
  17. data/lib/aws-sdk-sso/client.rb +25 -2
  18. data/lib/aws-sdk-sso/endpoints.rb +4 -16
  19. data/lib/aws-sdk-sso/plugins/endpoints.rb +10 -1
  20. data/lib/aws-sdk-sso.rb +1 -1
  21. data/lib/aws-sdk-ssooidc/client.rb +25 -2
  22. data/lib/aws-sdk-ssooidc/endpoints.rb +4 -16
  23. data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +10 -1
  24. data/lib/aws-sdk-ssooidc.rb +1 -1
  25. data/lib/aws-sdk-sts/client.rb +25 -2
  26. data/lib/aws-sdk-sts/endpoints.rb +8 -32
  27. data/lib/aws-sdk-sts/plugins/endpoints.rb +10 -1
  28. data/lib/aws-sdk-sts.rb +1 -1
  29. data/lib/seahorse/client/h2/handler.rb +13 -3
  30. data/lib/seahorse/client/net_http/connection_pool.rb +8 -2
  31. data/lib/seahorse/client/net_http/handler.rb +18 -1
  32. data/lib/seahorse/client/plugins/net_http.rb +9 -0
  33. data/lib/seahorse/client/request_context.rb +8 -1
  34. data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
  35. data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
  36. data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
  37. data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
  38. metadata +13 -2
@@ -0,0 +1,235 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module Telemetry
5
+ # OTelProvider allows to emit telemetry data based on OpenTelemetry.
6
+ #
7
+ # To use this provider, require the `opentelemetry-sdk` gem and then,
8
+ # pass in an instance of a `Aws::Telemetry::OTelProvider` as the
9
+ # telemetry provider in the client config.
10
+ #
11
+ # @example Configuration
12
+ # require 'opentelemetry-sdk'
13
+ #
14
+ # # sets up the OpenTelemetry SDK with their config defaults
15
+ # OpenTelemetry::SDK.configure
16
+ #
17
+ # otel_provider = Aws::Telemetry::OTelProvider.new
18
+ # client = Aws::S3::Client.new(telemetry_provider: otel_provider)
19
+ #
20
+ # OpenTelemetry supports many ways to export your telemetry data.
21
+ # See {https://opentelemetry.io/docs/languages/ruby/exporters here} for
22
+ # more information.
23
+ #
24
+ # @example Exporting via console
25
+ # require 'opentelemetry-sdk'
26
+ #
27
+ # ENV['OTEL_TRACES_EXPORTER'] ||= 'console'
28
+ #
29
+ # # configures the OpenTelemetry SDK with defaults
30
+ # OpenTelemetry::SDK.configure
31
+ #
32
+ # otel_provider = Aws::Telemetry::OTelProvider.new
33
+ # client = Aws::S3::Client.new(telemetry_provider: otel_provider)
34
+ class OTelProvider < TelemetryProviderBase
35
+ def initialize
36
+ unless otel_loaded?
37
+ raise ArgumentError,
38
+ 'Requires the `opentelemetry-sdk` gem to use OTel Provider.'
39
+ end
40
+ super(
41
+ tracer_provider: OTelTracerProvider.new,
42
+ context_manager: OTelContextManager.new
43
+ )
44
+ end
45
+
46
+ private
47
+
48
+ def otel_loaded?
49
+ if @use_otel.nil?
50
+ @use_otel =
51
+ begin
52
+ require 'opentelemetry-sdk'
53
+ true
54
+ rescue LoadError, NameError
55
+ false
56
+ end
57
+ end
58
+ @use_otel
59
+ end
60
+ end
61
+
62
+ # OpenTelemetry-based {TracerProviderBase}, an entry point for
63
+ # creating Tracer instances.
64
+ class OTelTracerProvider < TracerProviderBase
65
+ def initialize
66
+ super
67
+ @tracer_provider = OpenTelemetry.tracer_provider
68
+ end
69
+
70
+ # Returns a Tracer instance.
71
+ #
72
+ # @param [optional String] name Tracer name
73
+ # @return [Aws::Telemetry::OTelTracer]
74
+ def tracer(name = nil)
75
+ OTelTracer.new(@tracer_provider.tracer(name))
76
+ end
77
+ end
78
+
79
+ # OpenTelemetry-based {TracerBase}, responsible for creating spans.
80
+ class OTelTracer < TracerBase
81
+ def initialize(tracer)
82
+ super()
83
+ @tracer = tracer
84
+ end
85
+
86
+ # Used when a caller wants to manage the activation/deactivation and
87
+ # lifecycle of the Span and its parent manually.
88
+ #
89
+ # @param [String] name Span name
90
+ # @param [Object] with_parent Parent Context
91
+ # @param [Hash] attributes Attributes to attach to the span
92
+ # @param [Aws::Telemetry::SpanKind] kind Type of Span
93
+ # @return [Aws::Telemetry::OTelSpan]
94
+ def start_span(name, with_parent: nil, attributes: nil, kind: nil)
95
+ span = @tracer.start_span(
96
+ name,
97
+ with_parent: with_parent,
98
+ attributes: attributes,
99
+ kind: kind
100
+ )
101
+ OTelSpan.new(span)
102
+ end
103
+
104
+ # A helper for the default use-case of extending the current trace
105
+ # with a span.
106
+ # On exit, the Span that was active before calling this method will
107
+ # be reactivated. If an exception occurs during the execution of the
108
+ # provided block, it will be recorded on the span and re-raised.
109
+ #
110
+ # @param [String] name Span name
111
+ # @param [Hash] attributes Attributes to attach to the span
112
+ # @param [Aws::Telemetry::SpanKind] kind Type of Span
113
+ # @return [Aws::Telemetry::OTelSpan]
114
+ def in_span(name, attributes: nil, kind: nil, &block)
115
+ @tracer.in_span(name, attributes: attributes, kind: kind) do |span|
116
+ block.call(OTelSpan.new(span))
117
+ end
118
+ end
119
+
120
+ # Returns the current active span.
121
+ #
122
+ # @return [Aws::Telemetry::OTelSpan]
123
+ def current_span
124
+ OTelSpan.new(OpenTelemetry::Trace.current_span)
125
+ end
126
+ end
127
+
128
+ # OpenTelemetry-based {SpanBase}, represents a single operation
129
+ # within a trace.
130
+ class OTelSpan < SpanBase
131
+ def initialize(span)
132
+ super()
133
+ @span = span
134
+ end
135
+
136
+ # Set attribute.
137
+ #
138
+ # @param [String] key
139
+ # @param [String, Boolean, Numeric, Array<String, Numeric, Boolean>] value
140
+ # Value must be non-nil and (array of) string, boolean or numeric type.
141
+ # Array values must not contain nil elements and all elements must be of
142
+ # the same basic type (string, numeric, boolean)
143
+ # @return [self] returns itself
144
+ def set_attribute(key, value)
145
+ @span.set_attribute(key, value)
146
+ end
147
+ alias []= set_attribute
148
+
149
+ # Add attributes.
150
+ #
151
+ # @param [Hash{String => String, Numeric, Boolean, Array<String, Numeric,
152
+ # Boolean>}] attributes Values must be non-nil and (array of) string,
153
+ # boolean or numeric type. Array values must not contain nil elements
154
+ # and all elements must be of the same basic type (string, numeric,
155
+ # boolean)
156
+ # @return [self] returns itself
157
+ def add_attributes(attributes)
158
+ @span.add_attributes(attributes)
159
+ end
160
+
161
+ # Add event to a Span.
162
+ #
163
+ # @param [String] name Name of the event
164
+ # @param [Hash{String => String, Numeric, Boolean, Array<String,
165
+ # Numeric, Boolean>}] attributes Values must be non-nil and (array of)
166
+ # string, boolean or numeric type. Array values must not contain nil
167
+ # elements and all elements must be of the same basic type (string,
168
+ # numeric, boolean)
169
+ # @return [self] returns itself
170
+ def add_event(name, attributes: nil)
171
+ @span.add_event(name, attributes: attributes)
172
+ end
173
+
174
+ # Sets the Span status.
175
+ #
176
+ # @param [Aws::Telemetry::Status] status The new status, which
177
+ # overrides the default Span status, which is `OK`
178
+ # @return [void]
179
+ def status=(status)
180
+ @span.status = status
181
+ end
182
+
183
+ # Finishes the Span.
184
+ #
185
+ # @param [Time] end_timestamp End timestamp for the span
186
+ # @return [self] returns itself
187
+ def finish(end_timestamp: nil)
188
+ @span.finish(end_timestamp: end_timestamp)
189
+ end
190
+
191
+ # Record an exception during the execution of this span. Multiple
192
+ # exceptions can be recorded on a span.
193
+ #
194
+ # @param [Exception] exception The exception to be recorded
195
+ # @param [Hash{String => String, Numeric, Boolean, Array<String,
196
+ # Numeric, Boolean>}] attributes One or more key:value pairs, where the
197
+ # keys must be strings and the values may be (array of) string, boolean
198
+ # or numeric type
199
+ # @return [void]
200
+ def record_exception(exception, attributes: nil)
201
+ @span.record_exception(exception, attributes: attributes)
202
+ end
203
+ end
204
+
205
+ # OpenTelemetry-based {ContextManagerBase}, manages context and
206
+ # used to return the current context within a trace.
207
+ class OTelContextManager < ContextManagerBase
208
+ # Returns current context.
209
+ #
210
+ # @return [Context]
211
+ def current
212
+ OpenTelemetry::Context.current
213
+ end
214
+
215
+ # Associates a Context with the caller’s current execution unit.
216
+ # Returns a token to be used with the matching call to detach.
217
+ #
218
+ # @param [Context] context The new context
219
+ # @return [Object] token A token to be used when detaching
220
+ def attach(context)
221
+ OpenTelemetry::Context.attach(context)
222
+ end
223
+
224
+ # Restore the previous Context associated with the current
225
+ # execution unit to the value it had before attaching a
226
+ # specified Context.
227
+ #
228
+ # @param [Object] token The token provided by matching the call to attach
229
+ # @return [Boolean] `True` if the calls matched, `False` otherwise
230
+ def detach(token)
231
+ OpenTelemetry::Context.detach(token)
232
+ end
233
+ end
234
+ end
235
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module Telemetry
5
+ module SpanKind
6
+ # Default. Represents an internal operation within an application.
7
+ INTERNAL = :internal
8
+
9
+ # Represents handling synchronous network requests.
10
+ SERVER = :server
11
+
12
+ # Represents a request to some remote service.
13
+ CLIENT = :client
14
+
15
+ # Represents a child of an asynchronous `PRODUCER` request.
16
+ CONSUMER = :consumer
17
+
18
+ # Represents an asynchronous request.
19
+ PRODUCER = :producer
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module Telemetry
5
+ # Represents the status of a finished span.
6
+ class SpanStatus
7
+ class << self
8
+ private :new
9
+
10
+ # Returns a newly created {SpanStatus} with code, `UNSET`
11
+ # and an optional description.
12
+ #
13
+ # @param [optional String] description
14
+ # @return [SpanStatus]
15
+ def unset(description = '')
16
+ new(UNSET, description: description)
17
+ end
18
+
19
+ # Returns a newly created {SpanStatus} with code, `OK`
20
+ # and an optional description.
21
+ #
22
+ # @param [optional String] description
23
+ # @return [SpanStatus]
24
+ def ok(description = '')
25
+ new(OK, description: description)
26
+ end
27
+
28
+ # Returns a newly created {SpanStatus} with code, `ERROR`
29
+ # and an optional description.
30
+ #
31
+ # @param [optional String] description
32
+ # @return [SpanStatus]
33
+ def error(description = '')
34
+ new(ERROR, description: description)
35
+ end
36
+ end
37
+
38
+ def initialize(code, description: '')
39
+ @code = code
40
+ @description = description
41
+ end
42
+
43
+ # @return [Integer] code
44
+ attr_reader :code
45
+
46
+ # @return [String] description
47
+ attr_reader :description
48
+
49
+ # The operation completed successfully.
50
+ OK = 0
51
+
52
+ # The default status.
53
+ UNSET = 1
54
+
55
+ # An error.
56
+ ERROR = 2
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'telemetry/base'
4
+ require_relative 'telemetry/no_op'
5
+ require_relative 'telemetry/otel'
6
+ require_relative 'telemetry/span_kind'
7
+ require_relative 'telemetry/span_status'
8
+
9
+ module Aws
10
+ # Observability is the extent to which a system's current state can be
11
+ # inferred from the data it emits. The data emitted is commonly referred
12
+ # as Telemetry. The AWS SDK for Ruby currently supports traces as
13
+ # a telemetry signal.
14
+ #
15
+ # A telemetry provider is used to emit telemetry data. By default, the
16
+ # {NoOpTelemetryProvider} will not record or emit any telemetry data.
17
+ # The SDK currently supports OpenTelemetry (OTel) as a provider. See
18
+ # {OTelProvider} for more information.
19
+ #
20
+ # If a provider isn't supported, you can implement your own provider by
21
+ # inheriting the following base classes and implementing the interfaces
22
+ # defined:
23
+ # * {TelemetryProviderBase}
24
+ # * {ContextManagerBase}
25
+ # * {TracerProviderBase}
26
+ # * {TracerBase}
27
+ # * {SpanBase}
28
+ module Telemetry
29
+ class << self
30
+ # @api private
31
+ def module_to_tracer_name(module_name)
32
+ "#{module_name.gsub('::', '.')}.client".downcase
33
+ end
34
+
35
+ # @api private
36
+ def http_request_attrs(context)
37
+ {
38
+ 'http.method' => context.http_request.http_method,
39
+ 'net.protocol.name' => 'http'
40
+ }.tap do |h|
41
+ h['net.protocol.version'] =
42
+ if context.client.is_a? Seahorse::Client::AsyncBase
43
+ '2'
44
+ else
45
+ Net::HTTP::HTTPVersion
46
+ end
47
+
48
+ unless context.config.stub_responses
49
+ h['net.peer.name'] = context.http_request.endpoint.host
50
+ h['net.peer.port'] = context.http_request.endpoint.port.to_s
51
+ end
52
+
53
+ if context.http_request.headers.key?('Content-Length')
54
+ h['http.request_content_length'] =
55
+ context.http_request.headers['Content-Length']
56
+ end
57
+ end
58
+ end
59
+
60
+ # @api private
61
+ def http_response_attrs(context)
62
+ {
63
+ 'http.status_code' => context.http_response.status_code.to_s
64
+ }.tap do |h|
65
+ if context.http_response.headers.key?('Content-Length')
66
+ h['http.response_content_length'] =
67
+ context.http_response.headers['Content-Length']
68
+ end
69
+
70
+ if context.http_response.headers.key?('x-amz-request-id')
71
+ h['aws.request_id'] =
72
+ context.http_response.headers['x-amz-request-id']
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
data/lib/aws-sdk-core.rb CHANGED
@@ -7,7 +7,6 @@ require 'jmespath'
7
7
  require_relative 'aws-sdk-core/deprecations'
8
8
 
9
9
  # credential providers
10
-
11
10
  require_relative 'aws-sdk-core/credential_provider'
12
11
  require_relative 'aws-sdk-core/refreshing_credentials'
13
12
  require_relative 'aws-sdk-core/assume_role_credentials'
@@ -30,7 +29,6 @@ require_relative 'aws-sdk-core/token_provider_chain'
30
29
  require_relative 'aws-sdk-core/plugins/bearer_authorization'
31
30
 
32
31
  # client modules
33
-
34
32
  require_relative 'aws-sdk-core/client_stubs'
35
33
  require_relative 'aws-sdk-core/async_client_stubs'
36
34
  require_relative 'aws-sdk-core/eager_loader'
@@ -45,24 +43,20 @@ require_relative 'aws-sdk-core/type_builder'
45
43
  require_relative 'aws-sdk-core/util'
46
44
 
47
45
  # resource classes
48
-
49
46
  require_relative 'aws-sdk-core/resources/collection'
50
47
 
51
48
  # logging
52
-
53
49
  require_relative 'aws-sdk-core/log/formatter'
54
50
  require_relative 'aws-sdk-core/log/param_filter'
55
51
  require_relative 'aws-sdk-core/log/param_formatter'
56
52
 
57
53
  # stubbing
58
-
59
54
  require_relative 'aws-sdk-core/stubbing/empty_stub'
60
55
  require_relative 'aws-sdk-core/stubbing/data_applicator'
61
56
  require_relative 'aws-sdk-core/stubbing/stub_data'
62
57
  require_relative 'aws-sdk-core/stubbing/xml_error'
63
58
 
64
59
  # stubbing protocols
65
-
66
60
  require_relative 'aws-sdk-core/stubbing/protocols/json'
67
61
  require_relative 'aws-sdk-core/stubbing/protocols/rest'
68
62
  require_relative 'aws-sdk-core/stubbing/protocols/rest_json'
@@ -73,7 +67,6 @@ require_relative 'aws-sdk-core/stubbing/protocols/rpc_v2'
73
67
  require_relative 'aws-sdk-core/stubbing/protocols/api_gateway'
74
68
 
75
69
  # protocols
76
-
77
70
  require_relative 'aws-sdk-core/error_handler'
78
71
  require_relative 'aws-sdk-core/rest'
79
72
  require_relative 'aws-sdk-core/xml'
@@ -82,21 +75,18 @@ require_relative 'aws-sdk-core/query'
82
75
  require_relative 'aws-sdk-core/rpc_v2'
83
76
 
84
77
  # event stream
85
-
86
78
  require_relative 'aws-sdk-core/binary'
87
79
  require_relative 'aws-sdk-core/event_emitter'
88
80
 
89
81
  # endpoint discovery
90
-
91
82
  require_relative 'aws-sdk-core/endpoint_cache'
92
83
 
93
- # client metrics
94
-
84
+ # client metrics / telemetry
95
85
  require_relative 'aws-sdk-core/client_side_monitoring/request_metrics'
96
86
  require_relative 'aws-sdk-core/client_side_monitoring/publisher'
87
+ require_relative 'aws-sdk-core/telemetry'
97
88
 
98
89
  # utilities
99
-
100
90
  require_relative 'aws-sdk-core/arn'
101
91
  require_relative 'aws-sdk-core/arn_parser'
102
92
  require_relative 'aws-sdk-core/ec2_metadata'
@@ -32,6 +32,7 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
32
32
  require 'aws-sdk-core/plugins/request_compression.rb'
33
33
  require 'aws-sdk-core/plugins/defaults_mode.rb'
34
34
  require 'aws-sdk-core/plugins/recursion_detection.rb'
35
+ require 'aws-sdk-core/plugins/telemetry.rb'
35
36
  require 'aws-sdk-core/plugins/sign.rb'
36
37
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
37
38
 
@@ -83,6 +84,7 @@ module Aws::SSO
83
84
  add_plugin(Aws::Plugins::RequestCompression)
84
85
  add_plugin(Aws::Plugins::DefaultsMode)
85
86
  add_plugin(Aws::Plugins::RecursionDetection)
87
+ add_plugin(Aws::Plugins::Telemetry)
86
88
  add_plugin(Aws::Plugins::Sign)
87
89
  add_plugin(Aws::Plugins::Protocols::RestJson)
88
90
  add_plugin(Aws::SSO::Plugins::Endpoints)
@@ -330,6 +332,16 @@ module Aws::SSO
330
332
  # ** Please note ** When response stubbing is enabled, no HTTP
331
333
  # requests are made, and retries are disabled.
332
334
  #
335
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
336
+ # Allows you to provide a telemetry provider, which is used to
337
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
338
+ # will not record or emit any telemetry data. The SDK supports the
339
+ # following telemetry providers:
340
+ #
341
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
342
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
343
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
344
+ #
333
345
  # @option options [Aws::TokenProvider] :token_provider
334
346
  # A Bearer Token Provider. This can be an instance of any one of the
335
347
  # following classes:
@@ -413,6 +425,12 @@ module Aws::SSO
413
425
  # @option options [String] :ssl_ca_store
414
426
  # Sets the X509::Store to verify peer certificate.
415
427
  #
428
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
429
+ # Sets a client certificate when creating http connections.
430
+ #
431
+ # @option options [OpenSSL::PKey] :ssl_key
432
+ # Sets a client key when creating http connections.
433
+ #
416
434
  # @option options [Float] :ssl_timeout
417
435
  # Sets the SSL timeout in seconds
418
436
  #
@@ -635,14 +653,19 @@ module Aws::SSO
635
653
  # @api private
636
654
  def build_request(operation_name, params = {})
637
655
  handlers = @handlers.for(operation_name)
656
+ tracer = config.telemetry_provider.tracer_provider.tracer(
657
+ Aws::Telemetry.module_to_tracer_name('Aws::SSO')
658
+ )
638
659
  context = Seahorse::Client::RequestContext.new(
639
660
  operation_name: operation_name,
640
661
  operation: config.api.operation(operation_name),
641
662
  client: self,
642
663
  params: params,
643
- config: config)
664
+ config: config,
665
+ tracer: tracer
666
+ )
644
667
  context[:gem_name] = 'aws-sdk-core'
645
- context[:gem_version] = '3.202.2'
668
+ context[:gem_version] = '3.206.0'
646
669
  Seahorse::Client::Request.new(handlers, context)
647
670
  end
648
671
 
@@ -14,56 +14,44 @@ module Aws::SSO
14
14
 
15
15
  class GetRoleCredentials
16
16
  def self.build(context)
17
- unless context.config.regional_endpoint
18
- endpoint = context.config.endpoint.to_s
19
- end
20
17
  Aws::SSO::EndpointParameters.new(
21
18
  region: context.config.region,
22
19
  use_dual_stack: context.config.use_dualstack_endpoint,
23
20
  use_fips: context.config.use_fips_endpoint,
24
- endpoint: endpoint,
21
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
25
22
  )
26
23
  end
27
24
  end
28
25
 
29
26
  class ListAccountRoles
30
27
  def self.build(context)
31
- unless context.config.regional_endpoint
32
- endpoint = context.config.endpoint.to_s
33
- end
34
28
  Aws::SSO::EndpointParameters.new(
35
29
  region: context.config.region,
36
30
  use_dual_stack: context.config.use_dualstack_endpoint,
37
31
  use_fips: context.config.use_fips_endpoint,
38
- endpoint: endpoint,
32
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
39
33
  )
40
34
  end
41
35
  end
42
36
 
43
37
  class ListAccounts
44
38
  def self.build(context)
45
- unless context.config.regional_endpoint
46
- endpoint = context.config.endpoint.to_s
47
- end
48
39
  Aws::SSO::EndpointParameters.new(
49
40
  region: context.config.region,
50
41
  use_dual_stack: context.config.use_dualstack_endpoint,
51
42
  use_fips: context.config.use_fips_endpoint,
52
- endpoint: endpoint,
43
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
53
44
  )
54
45
  end
55
46
  end
56
47
 
57
48
  class Logout
58
49
  def self.build(context)
59
- unless context.config.regional_endpoint
60
- endpoint = context.config.endpoint.to_s
61
- end
62
50
  Aws::SSO::EndpointParameters.new(
63
51
  region: context.config.region,
64
52
  use_dual_stack: context.config.use_dualstack_endpoint,
65
53
  use_fips: context.config.use_fips_endpoint,
66
- endpoint: endpoint,
54
+ endpoint: context.config.regional_endpoint ? nil : context.config.endpoint.to_s,
67
55
  )
68
56
  end
69
57
  end
@@ -40,11 +40,20 @@ module Aws::SSO
40
40
  context[:auth_scheme] =
41
41
  Aws::Endpoints.resolve_auth_scheme(context, endpoint)
42
42
 
43
- @handler.call(context)
43
+ with_metrics(context) { @handler.call(context) }
44
44
  end
45
45
 
46
46
  private
47
47
 
48
+ def with_metrics(context, &block)
49
+ metrics = []
50
+ metrics << 'ENDPOINT_OVERRIDE' unless context.config.regional_endpoint
51
+ if context[:auth_scheme] && context[:auth_scheme]['name'] == 'sigv4a'
52
+ metrics << 'SIGV4A_SIGNING'
53
+ end
54
+ Aws::Plugins::UserAgent.metric(*metrics, &block)
55
+ end
56
+
48
57
  def apply_endpoint_headers(context, headers)
49
58
  headers.each do |key, values|
50
59
  value = values
data/lib/aws-sdk-sso.rb CHANGED
@@ -54,6 +54,6 @@ require_relative 'aws-sdk-sso/customizations'
54
54
  # @!group service
55
55
  module Aws::SSO
56
56
 
57
- GEM_VERSION = '3.202.2'
57
+ GEM_VERSION = '3.206.0'
58
58
 
59
59
  end
@@ -32,6 +32,7 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
32
32
  require 'aws-sdk-core/plugins/request_compression.rb'
33
33
  require 'aws-sdk-core/plugins/defaults_mode.rb'
34
34
  require 'aws-sdk-core/plugins/recursion_detection.rb'
35
+ require 'aws-sdk-core/plugins/telemetry.rb'
35
36
  require 'aws-sdk-core/plugins/sign.rb'
36
37
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
37
38
 
@@ -83,6 +84,7 @@ module Aws::SSOOIDC
83
84
  add_plugin(Aws::Plugins::RequestCompression)
84
85
  add_plugin(Aws::Plugins::DefaultsMode)
85
86
  add_plugin(Aws::Plugins::RecursionDetection)
87
+ add_plugin(Aws::Plugins::Telemetry)
86
88
  add_plugin(Aws::Plugins::Sign)
87
89
  add_plugin(Aws::Plugins::Protocols::RestJson)
88
90
  add_plugin(Aws::SSOOIDC::Plugins::Endpoints)
@@ -330,6 +332,16 @@ module Aws::SSOOIDC
330
332
  # ** Please note ** When response stubbing is enabled, no HTTP
331
333
  # requests are made, and retries are disabled.
332
334
  #
335
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
336
+ # Allows you to provide a telemetry provider, which is used to
337
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
338
+ # will not record or emit any telemetry data. The SDK supports the
339
+ # following telemetry providers:
340
+ #
341
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
342
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
343
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
344
+ #
333
345
  # @option options [Aws::TokenProvider] :token_provider
334
346
  # A Bearer Token Provider. This can be an instance of any one of the
335
347
  # following classes:
@@ -413,6 +425,12 @@ module Aws::SSOOIDC
413
425
  # @option options [String] :ssl_ca_store
414
426
  # Sets the X509::Store to verify peer certificate.
415
427
  #
428
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
429
+ # Sets a client certificate when creating http connections.
430
+ #
431
+ # @option options [OpenSSL::PKey] :ssl_key
432
+ # Sets a client key when creating http connections.
433
+ #
416
434
  # @option options [Float] :ssl_timeout
417
435
  # Sets the SSL timeout in seconds
418
436
  #
@@ -988,14 +1006,19 @@ module Aws::SSOOIDC
988
1006
  # @api private
989
1007
  def build_request(operation_name, params = {})
990
1008
  handlers = @handlers.for(operation_name)
1009
+ tracer = config.telemetry_provider.tracer_provider.tracer(
1010
+ Aws::Telemetry.module_to_tracer_name('Aws::SSOOIDC')
1011
+ )
991
1012
  context = Seahorse::Client::RequestContext.new(
992
1013
  operation_name: operation_name,
993
1014
  operation: config.api.operation(operation_name),
994
1015
  client: self,
995
1016
  params: params,
996
- config: config)
1017
+ config: config,
1018
+ tracer: tracer
1019
+ )
997
1020
  context[:gem_name] = 'aws-sdk-core'
998
- context[:gem_version] = '3.202.2'
1021
+ context[:gem_version] = '3.206.0'
999
1022
  Seahorse::Client::Request.new(handlers, context)
1000
1023
  end
1001
1024