Datadog サーバーレス CLI

CLI を使って、AWS Lambda 関数を Datadog でインスツルメントすることができます。CLI は既存の Lambda 関数のコンフィギュレーションを変更することでインスツルメンテーションを可能にするため、再デプロイは必要ありません。Datadog のサーバーレスモニタリングをはじめるにはこの方法が最速です。

CI/CD パイプラインにコマンドを追加してすべてのサーバーレスアプリケーションにインスツルメンテーションを有効化することも可能です。Datadog CLI コマンドによる変更が上書きされないよう、通常のサーバーレスアプリケーションのデプロイにコマンドを実行します。

インストール

datadog-ci lambda instrument コマンドを使用して Lambda 関数をインスツルメントするには、以下に示す特定のランタイム用の手順に従います。

コマンド

instrument

datadog-ci lambda instrument を実行して 、Datadog インスツルメンテーションを Lambda に適用します。このコマンドは、Datadog Lambda ライブラリおよび/または Datadog Lambda 拡張機能を Lambda レイヤーとして、インスツルメントされた Lambda 関数に追加し、そのコンフィギュレーションを変更します。


datadog-ci lambda instrument -f <function-name> -f <another-function-name> -r us-east-1 -v 46 -e 10

# インタラクティブモードで関数をインスツルメントする
datadog-ci lambda instrument -i

# 正規表現にマッチする複数の関数をインスツルメントする
datadog-ci lambda instrument --functions-regex <valid-regex-pattern> -r us-east-1 -v 46 -e 10

# すべてのアップデートのドライラン
datadog-ci lambda instrument -f <function-name> -f <another-function-name> -r us-east-1 -v 46 -e 10 --dry

uninstrument

datadog-ci lambda uninstrument を実行すると、Lambda 内の Datadog インスツルメンテーションを元に戻すことができます。このコマンドは、Datadog Lambda ライブラリや Datadog Lambda 拡張機能レイヤーなど、datadog-ci によって適用された Datadog の構成を自動的に削除してくれます。

# 名前で指定された複数の関数をアンインスツルメントする
datadog-ci lambda uninstrument -f <function-name> -f <another-function-name> -r us-east-1

# インタラクティブモードで関数をアンインスツルメントする
datadog-ci lambda uninstrument -i

# 正規表現にマッチする複数の関数をアンインスツルメントする
datadog-ci lambda uninstrument --functions-regex <valid-regex-pattern> -r us-east-1

# すべてのアップデートのドライラン
datadog-ci lambda uninstrument -f <function-name> -f <another-function-name> -r us-east-1 --dry

コンフィギュレーションセクションでその設定を確認します。

コンフィギュレーション

AWS 資格情報

datadog-ci lambda コマンドを実行する Lambda と CloudWatch サービスへのアクセスが構成された有効な AWS 資格情報が必要です。

環境変数

これらの環境変数は、datadog-ci lambda instrument を実行している環境で公開する必要があります。

環境変数説明
DATADOG_API_KEYDatadog API キー。Lambda 関数のコンフィギュレーションに DD_API_KEY 環境変数を設定します。Datadog API キーの取得の詳細については、API キーのドキュメントを参照してください。export DATADOG_API_KEY=<API_KEY>
DATADOG_API_KEY_SECRET_ARNAWS Secrets Manager に Datadog の API キーを格納するシークレットの ARN です。Lambda 関数の構成に DD_API_KEY_SECRET_ARN を設定します。注: DD_KMS_API_KEY が設定されている場合、 DD_API_KEY_SECRET_ARN は無視されます。Lambda の実行ロールに secretsmanager:GetSecretValue 権限を追加してください。export DATADOG_API_KEY_SECRET_ARN=<SECRETS_MANAGER_RESOURCE_ARN>
DATADOG_KMS_API_KEYKMS を使用して暗号化された Datadog API キー。Lambda 関数のコンフィギュレーションに DD_KMS_API_KEY 環境変数を設定します。注: DD_KMS_API_KEY が設定されている場合、DD_API_KEY は無視されます。export DATADOG_KMS_API_KEY=<KMS_ENCRYPTED_API_KEY>
DATADOG_SITEデータを送信する Datadog サイトを設定します。Datadog Lambda Extension を使用する場合にのみ必要です。可能な値は、datadoghq.comdatadoghq.euus3.datadoghq.comus5.datadoghq.comddog-gov.com です。デフォルトは datadoghq.com です。Lambda 関数設定に DD_SITE 環境変数を設定します。export DATADOG_SITE="datadoghq.com"

引数

コンフィギュレーションは、コマンドライン引数または JSON コンフィギュレーションファイル (次のセクションを参照) を使って行うことができます。

instrument

以下の引数を instrument に渡してその行動を指定します。引数は、コンフィギュレーションファイルに設定されている値がある場合、これを上書きします。

引数省略形説明デフォルト
--function-fインスツルメントする Lambda 関数の ARN、または Lambda 関数の名前 (--region を定義する必要があります)。
--functions-regexLambda 関数名とマッチする正規表現パターン。
--interactive-i関数がどのようにインスツルメントされるかを、ユーザーが対話的に選択できるようにします。インタラクティブモードを使用する場合は、代わりに情報の入力を求められるため、他のフラグを指定する必要はありません。
--region-r--function が ARN ではなく関数名で指定されている場合に使用するデフォルトのリージョン。
--service類似のワークロードに属する関連関数をグループ化するには、--service を使用します。service タグについて詳しくは、こちらを参照してください。
--version—version タグを追加して、遅延、負荷、エラーのスパイクを新しいバージョンに関連付けることができます。version タグについて詳しくは こちらを参照してください。
--envステージング環境、開発環境、本番環境を分けるには、—env を使用します。env タグについて詳しくは こちらを参照してください。
--extra-tagsDatadog の Lambda 関数にカスタムタグを追加します。layer:api,team:intake のようなカンマで区切られた <key>:<value> のリストである必要があります。
--layer-version-v適用する Datadog Lambda ライブラリレイヤーのバージョン。これはランタイムによって異なります。最新のレイヤーバージョンを確認するには、JS または python datadog-lambda-layer リポジトリのリリースノートを確認してください。
--extension-version-e適用する Datadog Lambda Extension レイヤーのバージョン。extension-version が設定されている場合は、お使いの環境でも必ず DATADOG_API_KEY (または暗号化されている場合は DATADOG_KMS_API_KEY または DATADOG_API_KEY_SECRET_ARN) をエクスポートしてください。extension-version を使用する場合は、forwarder を省略します。Lambda Extension の詳細はこちら
--tracingLambda で dd-trace トレースを有効にするかどうか。true
--merge-xray-tracesdd-trace トレースを AWS X-Ray トレースに結合するかどうか。API ゲートウェイスパンのトレースに役立ちます。false
--flush-metrics-to-logsDatadog Forwarder 経由でメトリクスを非同期で送信するかどうか。このパラメーターを無効にすると、DATADOG_API_KEY (暗号化されている場合は DATADOG_KMS_API_KEY または DATADOG_API_KEY_SECRET_ARN) をエクスポートする必要があります。true
--capture-lambda-payloadLambda 呼び出しのペイロードとレスポンスをキャプチャして保存するかどうか。false
--forwarderこの関数の LogGroup をアタッチする datadog forwarder の ARN。
--dry-dコマンドを実行している変更のプレビューが適用されます。false
--log-levelDatadog Lambda ライブラリおよび/または Lambda 拡張機能から追加の出力をトラブルシューティングのために確認するには、debug を設定します。
--source-code-integration-sDatadog ソースコードインテグレーションを有効にするかどうか。これは Datadog に現在のローカルディレクトリの Git メタデータを送信し、最新のコミットで Lambda をタグ付けします。この機能を使用する場合は、DATADOG_API_KEYを指定してください。: Git リポジトリはリモートより先に存在してはいけませんし、ダーティであってはいけません。false

uninstrument

以下の引数を uninstrument に渡してその行動を指定します。引数は、コンフィギュレーションファイルに設定されている値がある場合、これを上書きします。

必要であれば、より早くアンインスツルメントできるように、instrument テーブルに記述された他の引数は無視されます。

引数省略形説明デフォルト
--function-fアンインスツルメントする Lambda 関数の ARN、または Lambda 関数の名前 (--region を定義する必要があります)。
--functions-regexアンインスツルメントする Lambda 関数名とマッチする正規表現パターン。
--region-r--function が ARN ではなく関数名で指定されている場合に使用するデフォルトのリージョン。
--forwarderこの関数から削除する datadog forwarder の ARN。
--dry-dコマンドを実行している変更のプレビューが適用されます。false

構成ファイル

引数を指定する代わりに、プロジェクト内にコンフィギュレーションファイルを作成し、各デプロイで datadog-ci lambda {instrument|uninstrument} --config datadog-ci.json コマンドを実行します。--config 引数を使って datadog-ci.json を指定し、このコンフィギュレーションファイルの構造を使用します。

{
    "lambda": {
        "layerVersion": 10,
        "extensionVersion": 8,
        "functions": ["arn:aws:lambda:us-east-1:000000000000:function:autoinstrument"],
        "region": "us-east-1",
        "tracing": true,
        "mergeXrayTraces": true,
        "captureLambdaPayload": true,
        "forwarder": "arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder",
        "logLevel": "debug",
        "service":"some-service",
        "version":"b17s47h3w1n",
        "environment":"staging",
        "extraTags":"layer:api,team:intake"
    }
}

コミュニティ

製品のフィードバックや質問については、Slack の Datadog コミュニティ#serverless チャンネルに参加してください。