シ〜らかんす

プログラミングとか、カメラとか。

【aws-sdk-go-v2 & Datadog】LambdaからDatadogにトレースを送る方法

概要

lambdaでaws-sdk-go-v2を使って行う処理のトレースをDatadogに送る方法を記載する。

前提条件

  • Datadogのアカウントで、API Keyが発行済みであること
  • AWS Lambdaをコンテナイメージで動かせること

動作環境

  • 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のトレースとして送信されるようになる。