Invocar una función lambda cuando se implementa otra función lambda

Sep 07 2020

Tengo una función lambda de AWS que proporciona objetos de configuración. Cada vez que se actualiza esta función lambda (es decir, se implementa de nuevo), necesito activar otra función lambda, que detecta cambios en esos objetos de configuración y toma alguna acción. ¿Cómo superviso esta implementación de lambda? ¿A qué evento de observación en la nube debo suscribirme?

Respuestas

3 Marcin Sep 07 2020 at 12:06

Supongo que CodeDeploy no administra sus implementaciones de lambda . Si es así, recomendaría considerar la posibilidad de crear una versión de prueba de CloudTrial .

Una vez que se crea la prueba de CT con la configuración predeterminada, monitoreará todas las llamadas de API de administración a su función lambda. Uno de ellos es UpdateFunctionCode. Por lo tanto, puede crear una regla de CloudWatch para AWS API Call via CloudTrail. La regla se activaría en la llamada de API de actualización de función.

Ejemplo de tal regla:

{
  "source": [
    "aws.lambda"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "lambda.amazonaws.com"
    ],
    "eventName": [
      "UpdateFunctionCode"
    ]
  }
}

Luego, puede activar una segunda lambda, basada en el evento de actualización capturado de la primera función.

pras007 Sep 09 2020 at 20:27

Basado en la sugerencia de @ Marcin, usé el registro de la consola para imprimir el evento. La siguiente regla ayudó a filtrar una función específica;

{
  "source": [
    "aws.lambda"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "lambda.amazonaws.com"
    ],
    "eventName": [
      "UpdateFunctionCode20150331v2"
    ],
    "responseElements": {
      "functionName": [
        "myFunction"
      ]
    }
  }
}