Function targeting and skip conditions
How functions are matched#
Per Datadog's documentation, you can target functions three ways, and combine them:
- By exact function name.
- By AWS resource tags applied to the function.
- By
DD_TAGSenvironment variable value, for teams that already tag functions that way instead of (or in addition to) AWS resource tags.
Tag matching is case-insensitive. Rules can be combined with logical operators:
OR— union: match if any of the listed conditions is true.AND— intersection: match only if all listed conditions are true.!— negation: exclude functions matching this condition even if another rule would include them.
Why a matched function might still be skipped#
Per consts.ts in the source, the instrumenter records one of these skip reasons when it decides not to act on a function:
unsupported-runtime
The function's runtime isn't one the instrumenter knows how to attach a Datadog layer to. See the runtime table in Configuration Reference for the supported list.
already-correct-extension-and-layer
The function already has the right Datadog extension and tracing layer versions attached — there's nothing to change, so the instrumenter leaves it alone rather than writing an identical configuration.
not-satisfying-targeting-rules
The function doesn't match your current name, tag, or DD_TAGS targeting rules. This is the normal outcome for every function you haven't targeted.
already-manually-instrumented
The function already has Datadog layers or Datadog environment variables that weren't put there by the remote instrumenter. Per the documentation: "Functions that have pre-existing Datadog layers or environment variables are considered manually instrumented," and the instrumenter marks them manual to avoid creating layer conflicts with whatever a team configured by hand.
What "Instrumented" means afterward#
A function that was actually changed shows an Instrumented status in Datadog, and you should see two Datadog layers attached to it in the AWS Console — the extension layer and the language-specific tracing layer from the runtime table.
For the mechanics of when the instrumenter re-checks a function (on creation, on tag change, or on its 5-minute schedule), see How It Works.