aws-sdk-core 3.201.5 → 3.205.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +1 -0
  5. data/lib/aws-sdk-core/plugins/stub_responses.rb +29 -2
  6. data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
  7. data/lib/aws-sdk-core/plugins/user_agent.rb +12 -8
  8. data/lib/aws-sdk-core/rpc_v2/handler.rb +5 -1
  9. data/lib/aws-sdk-core/telemetry/base.rb +177 -0
  10. data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
  11. data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
  12. data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
  13. data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
  14. data/lib/aws-sdk-core/telemetry.rb +78 -0
  15. data/lib/aws-sdk-core.rb +2 -12
  16. data/lib/aws-sdk-sso/client.rb +25 -2
  17. data/lib/aws-sdk-sso/endpoints.rb +4 -16
  18. data/lib/aws-sdk-sso/plugins/endpoints.rb +10 -1
  19. data/lib/aws-sdk-sso.rb +1 -1
  20. data/lib/aws-sdk-ssooidc/client.rb +25 -2
  21. data/lib/aws-sdk-ssooidc/endpoints.rb +4 -16
  22. data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +10 -1
  23. data/lib/aws-sdk-ssooidc.rb +1 -1
  24. data/lib/aws-sdk-sts/client.rb +25 -2
  25. data/lib/aws-sdk-sts/endpoints.rb +8 -32
  26. data/lib/aws-sdk-sts/plugins/endpoints.rb +10 -1
  27. data/lib/aws-sdk-sts.rb +1 -1
  28. data/lib/seahorse/client/h2/handler.rb +13 -3
  29. data/lib/seahorse/client/net_http/connection_pool.rb +8 -2
  30. data/lib/seahorse/client/net_http/handler.rb +18 -1
  31. data/lib/seahorse/client/plugins/net_http.rb +9 -0
  32. data/lib/seahorse/client/request_context.rb +8 -1
  33. data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
  34. data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
  35. data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
  36. data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
  37. 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.201.5'
668
+ context[:gem_version] = '3.205.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.201.5'
57
+ GEM_VERSION = '3.205.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.201.5'
1021
+ context[:gem_version] = '3.205.0'
999
1022
  Seahorse::Client::Request.new(handlers, context)
1000
1023
  end
1001
1024