Instrumenting Amazon API Gateway
Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel,
n'hésitez pas à nous contacter.
Tracing for Amazon API Gateway is in Preview
This feature is in Preview.
Datadog APM supports tracing for API Gateway when API Gateway proxies requests to applications running in Fargate or EC2.
Prerequisites
- Amazon API Gateway is configured on your environment. Datadog recommends testing on a development environment before releasing to production.
- The API Gateway is using the REST API (V1) option. The HTTP API (V2) is not supported.
- Your underlying application is running a supported web framework.
Supported versions and web frameworks
Runtime | Datadog Tracer | Tracer version | Frameworks |
---|
Node.js | dd-trace-js | v4.50.0+ or v5.26.0+ | express, fastify, hapi, koa, microgateway-core, next, paperplane, restify, router, apollo |
Go | dd-trace-go | v1.72.1+ | chi, httptreemux, echo, go-restful, fiber, gin, gorilla mux, httprouter, fasthttp, goji |
Python | dd-trace-py | v3.1.0+ | aiohttp, asgi, bottle, cherrypy, django, djangorestframework, falcon, fastapi, flask, molten, pyramid, sanic, starlette, tornado, wsgi |
Setup
To see inferred spans for Amazon API Gateway, complete the following steps:
Ensure you are using a supported version of the Datadog tracer.
Where your application container is deployed, set the environment variable:
DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED=true
Add headers and related mappings to Amazon API Gateway.
API Gateway must pass the following headers in the request for the tracer to create the inferred span:
header | value |
---|
x-dd-proxy | 'aws-apigateway' |
x-dd-proxy-request-time-ms | context.requestTimeEpoch |
x-dd-proxy-domain-name | context.domainName |
x-dd-proxy-httpmethod | context.httpMethod |
x-dd-proxy-path | context.path |
x-dd-proxy-stage | context.stage |
To pass in these headers, you can use the AWS CDK or AWS Console.
To deploy API Gateway with the AWS CDK, add the headers under requestParameters
and use $context
variables:
const resource = api.root.addResource('myresource');
resource.addMethod('ANY', new apigateway.Integration({
# other configurations
options: {
# other options
requestParameters: {
"integration.request.header.x-dd-proxy": "'aws-apigateway'",
"integration.request.header.x-dd-proxy-request-time-ms": "context.requestTimeEpoch",
"integration.request.header.x-dd-proxy-domain-name": "context.domainName",
"integration.request.header.x-dd-proxy-httpmethod": "context.httpMethod",
"integration.request.header.x-dd-proxy-path": "context.path",
"integration.request.header.x-dd-proxy-stage": "context.stage",
}
}
})
# other settings here
});
In the AWS Management Console, navigate to API Gateway and go to your API’s Resources page.
Go to Integration request and click Edit.
Under Edit integration request, scroll down to URL request headers parameters. Click Add request header parameter.
Further Reading
Documentation, liens et articles supplémentaires utiles: