Trace AWS Lambda Go functions
Import the Lumigo Tracer as a dependency
$ go get github.com/lumigo-io/lumigo-go-tracer@master
Or, if you are already using Go Modules, you may specify a version number as well:
$ go get github.com/lumigo-io/[email protected]
Add the Lumigo Lambda Layer
To add the AWS Lambda Layer that supports the provided.al2
runtime:
arn:aws:lambda:<region>:114300393969:layer:lumigo-tracer-extension-arm64:1
To add the AWS Lambda Layer that supports the go1.x
runtime:
arn:aws:lambda:<region>:114300393969:layer:lumigo-tracer-extension-x86_64:1
NOTE: go1.x
will be deprecated by AWS on December 31st, 2023. If your Go functions are still running on go1.x
, You might want to consider migrating to provided.al2
.
Activate the Lumigo extension
Set the LUMIGO_USE_TRACER_EXTENSION
environment variable of your Lambda function as follows; refer to the Using AWS Lambda environment variables documentation for more information.
Key | Value |
---|---|
LUMIGO_USE_TRACER_EXTENSION | true |
Wrapping Your Lambda
You need a Lumigo token which you can find under the Project Settings
in the Lumigo platform. Then you need to wrap your Lambda:
import (
...
lumigotracer "github.com/lumigo-io/lumigo-go-tracer"
os
)
...
func main() {
wrappedHandler := lumigotracer.WrapHandler(Handler, &lumigotracer.Config{})
lambda.Start(wrappedHandler)
}
Then the wrapping will look like this:
import (
...
lumigotracer "github.com/lumigo-io/lumigo-go-tracer"
)
...
func main() {
wrappedHandler := lumigotracer.WrapHandler(Handler, &lumigotracer.Config{})
lambda.Start(wrappedHandler)
}
Connect Your Lumigo Account
Set your Lumigo token as the LUMIGO_TRACER_TOKEN
environment variable of your Lambda function; refer to the Using AWS Lambda environment variables documentation for more information. Your Lumigo token is available in Settings -> Tracing -> Manual tracing
, see the Lumigo Tokens documentation.
We advise you to use the most secure available to you to store secrets such as your LUMIGO_TRACER_TOKEN
; refer to AWS Lambda's Securing environment variables documentation for guidance on keeping the values of your Lambda environment variables secure.
Track HTTP Requests Beta
Beta
For tracing AWS SDK v2.0 calls check the following example:
client := &http.Client{
Transport: lumigotracer.NewTransport(http.DefaultTransport),
}
// for AWS SDK v1.x
sess := session.Must(session.NewSession(&aws.Config{
HTTPClient: client,
}))
svc := s3.New(sess)
// for AWS SDK v2.x
cfg, _ := config.LoadDefaultConfig(context.Background(), config.WithHTTPClient(client))
svc := s3.NewFromConfig(cfg)
For tracing HTTP calls check the following example:
client := &http.Client{
Transport: lumigotracer.NewTransport(http.DefaultTransport),
}
req, _ := http.NewRequest("GET", "https://<your-url>", nil)
// for net/http
res, err := client.Do(req)
// for golang.org/x/net/context/ctxhttp
res, err := ctxhttp.Do(context.Background(), client, req)
Supported Go versions
- 1.16
- 1.17
- 1.18
Updated about 1 year ago