Skip to content

Conversation

@RaphaelManke
Copy link

Summary

Automatically extract the AWS account ID from the Lambda Extensions API registration response and inject it as the cloud.account.id attribute into all telemetry (traces, logs, metrics) via a confmap converter.

This implementation uses the OpenTelemetry Collector's converter pattern to mutate the loaded configuration, ensuring the account ID is automatically available without requiring configuration or environment variables.

Changes

  • extensionapi/client.go: Added AccountId field to RegisterResponse and request the accountId feature via Lambda-Extension-Accept-Feature header
  • accountidprocessor/converter.go: New confmap converter that automatically injects a resource processor for cloud.account.id attribute into all pipelines
  • accountidprocessor/converter_test.go: Comprehensive tests for converter behavior (empty account ID, no pipelines, multiple pipelines, leading zeros)
  • extensionapi/client_test.go: Tests for JSON unmarshaling with leading zero preservation
  • lambdacomponents/default.go: Updated to accept accountID and return converter factories
  • collector.go: Updated to accept and register custom converters
  • manager.go: Updated to pass account ID through the initialization flow

Benefits

  • Account ID automatically available in all telemetry without configuration
  • No environment variables needed, uses AWS Lambda API response
  • Follows OpenTelemetry Collector patterns
  • Static injection at startup with no runtime overhead
  • Comprehensive test coverage for edge cases (leading zeros, multiple pipelines)

… registration

Automatically extract the AWS account ID from the Lambda Extensions API
registration response and inject it as the 'cloud.account.id' attribute
into all telemetry (traces, logs, metrics) via a confmap converter.

Changes:
- Add AccountId field to RegisterResponse struct
- Request Lambda-Extension-Accept-Feature header with 'accountId' value
- Create accountidprocessor converter to inject cloud.account.id attribute
- Update lambdacomponents.Components to accept accountID and return converters
- Update collector.NewCollector to accept and register custom converters
- Update manager to pass account ID through the initialization flow

Includes:
- Comprehensive tests for JSON unmarshaling with leading zero preservation
- Tests for converter behavior across different pipeline configurations
- Tests for account ID handling in the extension API client

Benefits:
- Account ID automatically available in all telemetry without configuration
- No environment variables needed, uses AWS Lambda API response
- Follows OpenTelemetry Collector converter pattern
- Static injection at startup, no runtime overhead
@RaphaelManke RaphaelManke requested a review from a team as a code owner October 24, 2025 12:24
@wpessers wpessers added the go Pull requests that update Go code label Oct 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

go Pull requests that update Go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants