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_TAGS environment 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.

Updated

Was this page helpful?