Module: OpenTelemetry::Resource::Detector::AWS

Extended by:
AWS
Included in:
AWS
Defined in:
lib/opentelemetry/resource/detector/aws.rb,
lib/opentelemetry/resource/detector/aws/ec2.rb,
lib/opentelemetry/resource/detector/aws/ecs.rb,
lib/opentelemetry/resource/detector/aws/eks.rb,
lib/opentelemetry/resource/detector/aws/lambda.rb,
lib/opentelemetry/resource/detector/aws/version.rb

Overview

AWS contains detect class method for determining AWS environment resource attributes

Defined Under Namespace

Modules: EC2, ECS, EKS, Lambda

Constant Summary collapse

RESOURCE =
OpenTelemetry::SDK::Resources::Resource
VERSION =
'0.6.0'

Instance Method Summary collapse

Instance Method Details

#detect(detectors = []) ⇒ OpenTelemetry::SDK::Resources::Resource

Get resources from specified AWS resource detectors

Parameters:

  • detectors (Array<Symbol>) (defaults to: [])

    List of detectors to use (e.g., :ec2)

Returns:

  • (OpenTelemetry::SDK::Resources::Resource)

    The detected AWS resources



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/opentelemetry/resource/detector/aws.rb', line 25

def detect(detectors = [])
  return RESOURCE.create({}) if detectors.empty?

  resources = detectors.map do |detector|
    case detector
    when :ec2
      EC2.detect
    when :ecs
      ECS.detect
    when :eks
      EKS.detect
    when :lambda
      Lambda.detect
    else
      OpenTelemetry.logger.warn("Unknown AWS resource detector: #{detector}")
      OpenTelemetry::SDK::Resources::Resource.create({})
    end
  end

  # Merge all resources into a single resource
  resources.reduce(OpenTelemetry::SDK::Resources::Resource.create({})) do |merged, resource|
    merged.merge(resource)
  end
end