Si todavía utilizas tus funciones de Lambda de Go con el tiempo de ejecución go1.x y no puedes migrar al tiempo de ejecución provided.al2, debes instrumentar mediante el Datadog Forwarder. De lo contrario, sigue las instrucciones de esta guía para instrumentar mediante la Extensión Lambda de Datadog.
Si despliegas tus funciones de Lambda en una VPC sin acceso a la Internet pública, puedes enviar datos con AWS PrivateLink para el sitio de Datadogdatadoghq.com, o bien mediante un proxy, en caso de que uses cualquier otro sitio.
Reemplaza <DATADOG_SITE> por el sitio de Datadog al que quieres enviar la telemetría.
Reemplaza <DATADOG_API_KEY_SECRET_ARN> por el ARN del secreto de AWS siempre que hayas almacenado la clave de la API de Datadog de forma segura. La clave debe almacenarse en una cadena de texto sin formato (no en un blob JSON). El permiso secretsmanager:GetSecretValue es obligatorio. Para agilizar el testeo, puedes usar apiKey y configurar la clave de la API de Datadog en texto sin formato.
Reemplaza <TAG> por un número de versión específico (por ejemplo, 75) o por latest. Alpine también es compatible con números de versión específicos (como 75-alpine) o con latest-alpine. Puedes ver una lista completa de posibles etiquetas (tags) en el repositorio de Amazon ECR.
Configurar las variables de entorno obligatorias
Configura DD_SITE como datadoghq.com (asegúrate de haber seleccionado el sitio [SITE] correcto del lado derecho).
Configura DD_API_KEY_SECRET_ARN con el ARN del secreto de AWS siempre que hayas almacenado la clave de la API de Datadog de forma segura. La clave debe almacenarse en una cadena de texto sin formato (no en un blob JSON). El permiso secretsmanager:GetSecretValue es obligatorio. Para agilizar el testeo, puedes usar DD_API_KEY y configurar la clave de la API de Datadog en texto sin formato.
De manera opcional, puedes configurar DD_UNIVERSAL_INSTRUMENTATION: true para aprovechar las ventajas de las configuraciones avanzadas, como capturar las cargas útiles de solicitud y respuesta de Lambda e inferir tramos (spans) de APM de los eventos de Lambda entrantes.
Añade la Lambda Layer de la Extensión Lambda de Datadog a tus funciones de Lambda, con el formato del ARN definido según tu región y arquitectura de AWS:
# Usa este formato para Lambda de x86 con un despliegue en regiones comerciales de AWSarn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:75
# Usa este formato para Lambda de arm64 con un despliegue en regiones comerciales de AWSarn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM:75
# Usa este formato para Lambda de x86 con un despliegue en regiones GovCloud de AWSarn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:75
# Usa este formato para Lambda de arm64 con un despliegue en regiones GovCloud de AWSarn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:75
Reemplaza <AWS_REGION> por una región de AWS válida, como us-east-1.
Configura DD_SITE como datadoghq.com (asegúrate de haber seleccionado el sitio [SITE] correcto del lado derecho).
Configura DD_API_KEY_SECRET_ARN con el ARN del secreto de AWS siempre que hayas almacenado la clave de la API de Datadog de forma segura. La clave debe almacenarse en una cadena de texto sin formato (no en un blob JSON). El permiso secretsmanager:GetSecretValue es obligatorio. Para agilizar el testeo, puedes usar DD_API_KEY y configurar la clave de la API de Datadog en texto sin formato.
packagemainimport("context""net/http""time"ddlambda"github.com/DataDog/datadog-lambda-go""github.com/aws/aws-lambda-go/events""github.com/aws/aws-lambda-go/lambda"httptrace"gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http""gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer")funcmain(){// Envuelve tu controlador de Lambda
lambda.Start(ddlambda.WrapFunction(myHandler,nil))}funcmyHandler(ctxcontext.Context,_events.APIGatewayProxyRequest)(string,error){// Rastrea una solicitud HTTP
req,_:=http.NewRequestWithContext(ctx,"GET","https://www.datadoghq.com",nil)client:=http.Client{}client=*httptrace.WrapClient(&client)client.Do(req)// Envía una métrica personalizada
ddlambda.Metric("coffee_house.order_value",// Nombre de la métrica
12.45,// Valor de la métrica
"product:latte","order:online",// Etiquetas asociadas
)// Crea un tramo personalizado
s,_:=tracer.StartSpanFromContext(ctx,"child.span")time.Sleep(100*time.Millisecond)s.Finish()return"ok",nil}}