Habilitar App and API Protection para funciones de Google Cloud Run en Node.js
Este producto no es compatible con el 
sitio Datadog seleccionado. (
).
La compatibilidad de AAP con Google Cloud Run está en vista previa.
Cómo funciona
La aplicación serverless-init envuelve tu proceso y lo ejecuta como un subproceso. Inicia un escuchador de métricas de DogStatsD y un escuchador de trazas del Trace Agent. Recopila logs envolviendo los flujos stdout/stderr de tu aplicación. Después de arrancar, serverless-init inicia tu comando como un subproceso.
Para una instrumentación completa, asegúrate de que estás llamando a datadog-init como el primer comando que se ejecuta dentro de tu contenedor Docker. Puedes hacerlo configurándolo como punto de entrada, o configurándolo como el primer argumento en CMD.
Compatibilidad
La compatibilidad de Google Cloud Run con App and API Protection sin servidor está en vista previa.
Nota: La protección frente a amenazas no es compatible a través de la configuración remota. Utiliza los flujos para bloquear direcciones IP en tu WAF.
Para empezar
Añade las siguientes instrucciones y argumentos a tu Dockerfile.
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
Explicación
- Copia - serverless-initde Datadog en tu imagen de Docker.
 - COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
 
- Copia el rastreador Datadog Node.js en tu imagen Docker. - RUN npm install --prefix /dd_tracer/node dd-trace --save
 
- Si instalas la biblioteca del rastreador de Datadog directamente en tu aplicación, como se indica en las instrucciones para la instrumentación manual del rastreador, omite este paso. 
- (Opcional) Añade etiquetas (tags) de Datadog. - ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
 
- Cambia el punto de entrada para contener tu aplicación en el proceso de - serverless-initde Datadog.
Nota: Si ya tienes un punto de entrada definido en tu archivo Docker, consulta la configuración alternativa.
 - ENTRYPOINT ["/app/datadog-init"]
 
- Ejecuta tu aplicación binaria contenida en el punto de entrada. Adapta esta línea a tus necesidades. - CMD ["/nodejs/bin/node", "/path/to/your/app.js"]
 
Configuración alternativa
Si ya tienes un punto de entrada definido en tu archivo Docker, puedes modificar el argumento CMD.
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
CMD ["/app/datadog-init", "/nodejs/bin/node", "/path/to/your/app.js"]
Si necesitas que tu punto de entrada también se instrumente, puedes intercambiar tu punto de entrada y argumentos CMD en su lugar. Para obtener más información, consulta Funcionamiento de serverless-init.
COPY --from=datadog/serverless-init:1 /datadog-init /app/datadog-init
RUN npm install --prefix /dd_tracer/node dd-trace --save
ENV DD_SERVICE=datadog-demo-run-nodejs
ENV DD_ENV=datadog-demo
ENV DD_VERSION=1
ENV DD_APPSEC_ENABLED=1
ENTRYPOINT ["/app/datadog-init"]
CMD ["/your_entrypoint.sh", "/nodejs/bin/node", "/path/to/your/app.js"]
Siempre y cuando el comando a ejecutar se pase como argumento a datadog-init, recibirás la Instrumentación completa.
Referencias adicionales
Más enlaces, artículos y documentación útiles: