概要
lambdaでaws-sdk-go-v2を使って行う処理のトレースをDatadogに送る方法を記載する。
前提条件
動作環境
- AWS Lambda(コンテナイメージで動作)
- Go 1.22
使用ライブラリ
設定方法
Dockerfile
datadogのextenstionを入れる。
COPY --from=public.ecr.aws/datadog/lambda-extension:latest /opt/. /opt/
環境変数
API Keyはsecretsmanagerから取得しても良いし、環境変数に直接入れても良い。 ここでは、secretsmanagerから取得する。 DD_API_KEY_SECRET_ARNという環境変数に、secretsのarnを入れる。
Lambdaから対象のsecretsへのアクセス権限が必要になるため、IAMポリシーに忘れずに入れる。
アプリケーションコード
awstrace.AppendMiddlewareという関数を使う。
cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("ap-northeast-1")) if err != nil { return "", err } awstrace.AppendMiddleware(&cfg, awstrace.WithServiceName("{Datadog上に表示してほしいサービス名を入れる}")) s3Client := s3.NewFromConfig(cfg)
このように初期化したS3のクライアントで何かしらの処理を行うと、その内容がDatadogのトレースとして送信されるようになる。