Skip to content

Commit ff2a407

Browse files
committed
Add readme
1 parent 1da4b3e commit ff2a407

File tree

11 files changed

+356
-14
lines changed

11 files changed

+356
-14
lines changed

.github/workflows/release-combined-go-lambda-layer.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,35 @@ jobs:
7373
- amd64
7474
- arm64
7575
aws_region:
76-
- us-east-1
76+
- 'us-east-1'
77+
- 'us-east-2'
78+
- 'us-west-1'
79+
- 'us-west-2'
80+
- 'eu-central-1'
81+
- 'eu-central-2'
82+
- 'eu-north-1'
83+
- 'eu-west-1'
84+
- 'eu-west-2'
85+
- 'eu-west-3'
86+
- 'eu-south-1'
87+
- 'eu-south-2'
88+
- 'sa-east-1'
89+
- 'ap-northeast-1'
90+
- 'ap-northeast-2'
91+
- 'ap-northeast-3'
92+
- 'ap-south-1'
93+
- 'ap-south-2'
94+
- 'ap-southeast-1'
95+
- 'ap-southeast-2'
96+
- 'ap-southeast-3'
97+
- 'ap-southeast-4'
98+
- 'ap-east-1'
99+
- 'ca-central-1'
100+
- 'ca-west-1'
101+
- 'af-south-1'
102+
- 'me-south-1'
103+
- 'me-central-1'
104+
- 'il-central-1'
77105
with:
78106
artifact-name: otel-go-extension-layer-${{ matrix.architecture }}.zip
79107
layer-name: otel-go-extension

.github/workflows/release-combined-layer-java.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,35 @@ jobs:
7373
- amd64
7474
- arm64
7575
aws_region:
76-
- us-east-1
76+
- 'us-east-1'
77+
- 'us-east-2'
78+
- 'us-west-1'
79+
- 'us-west-2'
80+
- 'eu-central-1'
81+
- 'eu-central-2'
82+
- 'eu-north-1'
83+
- 'eu-west-1'
84+
- 'eu-west-2'
85+
- 'eu-west-3'
86+
- 'eu-south-1'
87+
- 'eu-south-2'
88+
- 'sa-east-1'
89+
- 'ap-northeast-1'
90+
- 'ap-northeast-2'
91+
- 'ap-northeast-3'
92+
- 'ap-south-1'
93+
- 'ap-south-2'
94+
- 'ap-southeast-1'
95+
- 'ap-southeast-2'
96+
- 'ap-southeast-3'
97+
- 'ap-southeast-4'
98+
- 'ap-east-1'
99+
- 'ca-central-1'
100+
- 'ca-west-1'
101+
- 'af-south-1'
102+
- 'me-south-1'
103+
- 'me-central-1'
104+
- 'il-central-1'
77105
with:
78106
artifact-name: otel-java-extension-layer-${{ matrix.architecture }}.zip
79107
layer-name: otel-java-extension

.github/workflows/release-combined-layer-nodejs.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,35 @@ jobs:
8787
- amd64
8888
- arm64
8989
aws_region:
90-
- us-east-1
90+
- 'us-east-1'
91+
- 'us-east-2'
92+
- 'us-west-1'
93+
- 'us-west-2'
94+
- 'eu-central-1'
95+
- 'eu-central-2'
96+
- 'eu-north-1'
97+
- 'eu-west-1'
98+
- 'eu-west-2'
99+
- 'eu-west-3'
100+
- 'eu-south-1'
101+
- 'eu-south-2'
102+
- 'sa-east-1'
103+
- 'ap-northeast-1'
104+
- 'ap-northeast-2'
105+
- 'ap-northeast-3'
106+
- 'ap-south-1'
107+
- 'ap-south-2'
108+
- 'ap-southeast-1'
109+
- 'ap-southeast-2'
110+
- 'ap-southeast-3'
111+
- 'ap-southeast-4'
112+
- 'ap-east-1'
113+
- 'ca-central-1'
114+
- 'ca-west-1'
115+
- 'af-south-1'
116+
- 'me-south-1'
117+
- 'me-central-1'
118+
- 'il-central-1'
91119
with:
92120
artifact-name: otel-nodejs-extension-layer-${{ matrix.architecture }}.zip
93121
layer-name: otel-nodejs-extension

.github/workflows/release-combined-layer-python.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,35 @@ jobs:
7373
- amd64
7474
- arm64
7575
aws_region:
76-
- us-east-1
76+
- 'us-east-1'
77+
- 'us-east-2'
78+
- 'us-west-1'
79+
- 'us-west-2'
80+
- 'eu-central-1'
81+
- 'eu-central-2'
82+
- 'eu-north-1'
83+
- 'eu-west-1'
84+
- 'eu-west-2'
85+
- 'eu-west-3'
86+
- 'eu-south-1'
87+
- 'eu-south-2'
88+
- 'sa-east-1'
89+
- 'ap-northeast-1'
90+
- 'ap-northeast-2'
91+
- 'ap-northeast-3'
92+
- 'ap-south-1'
93+
- 'ap-south-2'
94+
- 'ap-southeast-1'
95+
- 'ap-southeast-2'
96+
- 'ap-southeast-3'
97+
- 'ap-southeast-4'
98+
- 'ap-east-1'
99+
- 'ca-central-1'
100+
- 'ca-west-1'
101+
- 'af-south-1'
102+
- 'me-south-1'
103+
- 'me-central-1'
104+
- 'il-central-1'
77105
with:
78106
artifact-name: otel-python-extension-layer-${{ matrix.architecture }}.zip
79107
layer-name: otel-python-extension

.github/workflows/release-combined-ruby-lambda-layer.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,35 @@ jobs:
7373
- amd64
7474
- arm64
7575
aws_region:
76-
- us-east-1
76+
- 'us-east-1'
77+
- 'us-east-2'
78+
- 'us-west-1'
79+
- 'us-west-2'
80+
- 'eu-central-1'
81+
- 'eu-central-2'
82+
- 'eu-north-1'
83+
- 'eu-west-1'
84+
- 'eu-west-2'
85+
- 'eu-west-3'
86+
- 'eu-south-1'
87+
- 'eu-south-2'
88+
- 'sa-east-1'
89+
- 'ap-northeast-1'
90+
- 'ap-northeast-2'
91+
- 'ap-northeast-3'
92+
- 'ap-south-1'
93+
- 'ap-south-2'
94+
- 'ap-southeast-1'
95+
- 'ap-southeast-2'
96+
- 'ap-southeast-3'
97+
- 'ap-southeast-4'
98+
- 'ap-east-1'
99+
- 'ca-central-1'
100+
- 'ca-west-1'
101+
- 'af-south-1'
102+
- 'me-south-1'
103+
- 'me-central-1'
104+
- 'il-central-1'
77105
with:
78106
artifact-name: otel-ruby-extension-layer-${{ matrix.architecture }}.zip
79107
layer-name: otel-ruby-extension

README.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,28 @@ There are 2 types of lambda layers
1717

1818
These 2 layers are meant to be used in conjunction to instrument your lambda functions. The reason that the collector is not embedded in specific language layers is to give users flexibility
1919

20+
## Combined Layers (New)
21+
22+
**Simplified Deployment**: We now offer combined layers that bundle both the language-specific instrumentation and the collector into a single layer. This approach:
23+
- Reduces the number of layers from 2 to 1
24+
- Simplifies configuration and deployment
25+
- Maintains all the functionality of the separate layers
26+
- Is available for Python, Node.js, Java, Ruby, and Go
27+
28+
Combined layers are ideal for users who want a simpler deployment model without sacrificing functionality. For detailed information about combined layers, see the language-specific README files below.
29+
2030
## Collector Layer
2131
* ### [Collector Lambda Layer](collector/README.md)
2232

2333
## Extension Layer Language Support
24-
* ### [Python Lambda Layer](python/README.md)
25-
* ### [Java Lambda Layer](java/README.md)
26-
* ### [NodeJS Lambda Layer](nodejs/README.md)
27-
* ### [Ruby Lambda Layer](ruby/README.md)
34+
* ### [Python Lambda Layer](python/README.md) - *Combined layer available*
35+
* ### [Java Lambda Layer](java/README.md) - *Combined layer available*
36+
* ### [NodeJS Lambda Layer](nodejs/README.md) - *Combined layer available*
37+
* ### [Ruby Lambda Layer](ruby/README.md) - *Combined layer available*
2838

2939
## Additional language tooling not currently supported
30-
* ### [Go Lambda Library](go/README.md)
31-
* ### [.NET Lambda Layer](dotnet/README.md)
40+
* ### [Go Lambda Library](go/README.md) - *Combined layer available (collector only)*
41+
* ### [.NET Lambda Layer](dotnet/README.md)
3242

3343
## Latest Layer Versions
3444
| Name | ARN | Version |

go/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,44 @@ For other instrumentations, such as http, you'll need to include the correspondi
1111

1212
[OpenTelemetry Lambda Layer for Collector](https://aws-otel.github.io/docs/getting-started/lambda/lambda-go#lambda-layer) includes OpenTelemetry Collector for Lambda components. Follow [user guide](https://aws-otel.github.io/docs/getting-started/lambda/lambda-go#enable-tracing) to apply this layer to your Lambda handler that's already been instrumented with OpenTelemetry Lambda .NET SDK to enable end-to-end tracing.
1313

14+
## Combined OpenTelemetry Lambda Layer
15+
16+
**New**: We now offer a simplified deployment option with a combined layer that includes the OpenTelemetry Collector. Since Go uses manual instrumentation, this layer provides the collector component to work with your manually instrumented Go Lambda functions.
17+
18+
### What's included in the combined layer:
19+
- **OpenTelemetry Collector** - Built-in collector that exports telemetry data from your manually instrumented Go function to your configured backend
20+
- **Optimized for Go** - Lightweight layer that complements manual instrumentation in Go applications
21+
- **Configuration files** - Pre-configured collector settings optimized for Lambda environments
22+
23+
### Benefits:
24+
- **Single layer deployment** - Just add the collector layer to your manually instrumented Go function
25+
- **Simplified configuration** - Pre-configured for optimal Lambda performance
26+
- **Production-ready** - Battle-tested collector configuration for serverless environments
27+
28+
### Usage:
29+
Unlike other languages, Go requires manual instrumentation using the [OpenTelemetry Go SDK](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation/github.com/aws/aws-lambda-go/otellambda). The combined layer provides the collector component to export the telemetry data generated by your instrumented code.
30+
31+
To use:
32+
1. Manually instrument your Go Lambda function using the OpenTelemetry Go SDK
33+
2. Add the combined layer to your Lambda function
34+
3. Configure the collector endpoint in your Go code to send telemetry to the local collector
35+
36+
For detailed build instructions, see the build script at `go/build-combined.sh` in this repository.
37+
38+
### Environment variables
39+
40+
Required:
41+
- `LOGZIO_TRACES_TOKEN` – account token for traces
42+
- `LOGZIO_METRICS_TOKEN` – account token for metrics
43+
- `LOGZIO_LOGS_TOKEN` – account token for logs
44+
- `LOGZIO_REGION` – Logz.io region code (for example, `us`, `eu`)
45+
46+
Optional:
47+
- `OTEL_SERVICE_NAME` – explicit service name
48+
- `OTEL_RESOURCE_ATTRIBUTES` – comma-separated resource attributes (for example, `service.name=my-func,env_id=${LOGZIO_ENV_ID},deployment.environment=${ENVIRONMENT}`)
49+
- `LOGZIO_ENV_ID` – environment identifier you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `env_id=prod`)
50+
- `ENVIRONMENT` – logical environment name you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `deployment.environment=prod`)
51+
1452
## Sample application
1553

1654
The [sample application](https://github.com/open-telemetry/opentelemetry-lambda/tree/main/go/sample-apps/function/function.go) shows the manual instrumentations of OpenTelemetry Lambda Go SDK on a Lambda handler that triggers downstream requests to AWS S3 and HTTP.

java/README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,46 @@ For any other library, such as OkHttp, you will need to include the correspondin
5959
from the [instrumentation project](https://github.com/open-telemetry/opentelemetry-java-instrumentation) and
6060
modify your code to initialize it in your function.
6161

62+
### Combined layer
63+
64+
**New**: We now offer a simplified deployment option with a combined layer that bundles both the OpenTelemetry Java instrumentation (agent or wrapper) and the collector into a single layer. This reduces the number of layers you need to manage and simplifies your Lambda function configuration.
65+
66+
#### What's included in the combined layer:
67+
- **Java OpenTelemetry Agent or Wrapper** - Both agent and wrapper variants are available
68+
- **OpenTelemetry Collector** - Built-in collector that exports telemetry data to your configured backend
69+
- **Auto-instrumentation** - Automatic instrumentation for supported Java libraries
70+
- **AWS SDK instrumentation** - Pre-configured instrumentation for AWS SDK calls
71+
72+
#### Benefits:
73+
- **Single layer deployment** - No need to manage separate collector and instrumentation layers
74+
- **Simplified configuration** - Fewer environment variables and layer configurations
75+
- **Reduced complexity** - Everything needed for observability in one package
76+
- **Production-ready** - Includes all necessary components for complete observability
77+
78+
#### Usage:
79+
To use the combined layer, add it to your Lambda function and set the appropriate `AWS_LAMBDA_EXEC_WRAPPER`:
80+
- `/opt/otel-handler` - for regular handlers (implementing RequestHandler)
81+
- `/opt/otel-sqs-handler` - for SQS-triggered functions
82+
- `/opt/otel-proxy-handler` - for API Gateway proxied handlers
83+
- `/opt/otel-stream-handler` - for streaming handlers
84+
85+
For detailed build instructions, see the build script at `java/build-combined.sh` in this repository.
86+
87+
### Environment variables
88+
89+
Required:
90+
- `AWS_LAMBDA_EXEC_WRAPPER` – set to one of the provided handlers (for example, `/opt/otel-handler`)
91+
- `LOGZIO_TRACES_TOKEN` – account token for traces
92+
- `LOGZIO_METRICS_TOKEN` – account token for metrics
93+
- `LOGZIO_LOGS_TOKEN` – account token for logs
94+
- `LOGZIO_REGION` – Logz.io region code (for example, `us`, `eu`)
95+
96+
Optional:
97+
- `OTEL_SERVICE_NAME` – explicit service name
98+
- `OTEL_RESOURCE_ATTRIBUTES` – comma-separated resource attributes (for example, `service.name=my-func,env_id=${LOGZIO_ENV_ID},deployment.environment=${ENVIRONMENT}`)
99+
- `LOGZIO_ENV_ID` – environment identifier you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `env_id=prod`)
100+
- `ENVIRONMENT` – logical environment name you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `deployment.environment=prod`)
101+
62102
## Configuring Context Propagators
63103

64104
### If you emit your traces to AWS X-Ray (instead of a third-party service) and have enabled X-Ray Active Tracing

nodejs/README.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,41 @@
33
Layer for running NodeJS applications on AWS Lambda with OpenTelemetry. Adding the layer and pointing to it with
44
the `AWS_LAMBDA_EXEC_WRAPPER` environment variable will initialize OpenTelemetry, enabling tracing with no code change.
55

6-
To use, add the layer to your function configuration and then set `AWS_LAMBDA_EXEC_WRAPPER` to `/opt/otel-handler`.
6+
## Combined OpenTelemetry Lambda Layer
7+
8+
**New**: We now offer a simplified deployment option with a combined layer that bundles both the OpenTelemetry Node.js instrumentation and the collector into a single layer. This reduces the number of layers you need to manage and simplifies your Lambda function configuration.
9+
10+
### What's included in the combined layer:
11+
- **Node.js OpenTelemetry instrumentation** - Automatically instruments your Lambda function
12+
- **OpenTelemetry Collector** - Built-in collector that exports telemetry data to your configured backend
13+
- **Auto-instrumentation for popular libraries** - Includes AWS SDK v3 and a subset of popular Node.js libraries
14+
- **ESM and CommonJS support** - Works with both module systems
15+
16+
### Benefits:
17+
- **Single layer deployment** - No need to manage separate collector and instrumentation layers
18+
- **Simplified configuration** - Fewer environment variables and layer configurations
19+
- **Reduced cold start impact** - Optimized packaging reduces overhead
20+
- **Production-ready** - Includes all necessary components for complete observability
21+
22+
### Usage:
23+
To use the combined layer, add it to your Lambda function and set `AWS_LAMBDA_EXEC_WRAPPER` to `/opt/otel-handler`.
24+
25+
For detailed build instructions, see the build script at `nodejs/packages/layer/build-combined.sh` in this repository.
26+
27+
### Environment variables
28+
29+
Required:
30+
- `AWS_LAMBDA_EXEC_WRAPPER` – set to `/opt/otel-handler`
31+
- `LOGZIO_TRACES_TOKEN` – account token for traces
32+
- `LOGZIO_METRICS_TOKEN` – account token for metrics
33+
- `LOGZIO_LOGS_TOKEN` – account token for logs
34+
- `LOGZIO_REGION` – Logz.io region code (for example, `us`, `eu`)
35+
36+
Optional:
37+
- `OTEL_SERVICE_NAME` – explicit service name
38+
- `OTEL_RESOURCE_ATTRIBUTES` – comma-separated resource attributes (for example, `service.name=my-func,env_id=${LOGZIO_ENV_ID},deployment.environment=${ENVIRONMENT}`)
39+
- `LOGZIO_ENV_ID` – environment identifier you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `env_id=prod`)
40+
- `ENVIRONMENT` – logical environment name you can include in `OTEL_RESOURCE_ATTRIBUTES` (for example, `deployment.environment=prod`)
741

842
## Configuring auto instrumentation
943

0 commit comments

Comments
 (0)