Appeler une fonction lambda lorsqu'une autre fonction lambda est déployée

Sep 07 2020

J'ai une fonction AWS lambda qui fournit des objets de configuration. Chaque fois que cette fonction lambda est mise à jour (c'est-à-dire déployée à nouveau), je dois déclencher une autre fonction lambda, qui détecte les changements dans ces objets de configuration et prend des mesures. Comment surveiller ce déploiement lambda, à quel événement de surveillance cloud dois-je m'abonner?

Réponses

3 Marcin Sep 07 2020 at 12:06

Je suppose que vos déploiements lambda ne sont pas gérés par CodeDeploy . Si tel est le cas, je recommanderais de créer un essai CloudTrial .

Une fois l'essai CT créé avec les paramètres par défaut, il surveillera tous les appels d'API de gestion à votre fonction lambda. L'un d'eux est UpdateFunctionCode. Ainsi, vous pouvez créer une règle CloudWatch pour AWS API Call via CloudTrail. La règle serait déclenchée lors de l'appel d'API de mise à jour de la fonction.

Exemple d'une telle règle:

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

Ensuite, vous pouvez déclencher un deuxième lambda, en fonction de l'événement de mise à jour capturé de la première fonction.

pras007 Sep 09 2020 at 20:27

Basé sur la suggestion de @ Marcin, a utilisé le journal de la console pour imprimer l'événement. La règle ci-dessous a aidé à filtrer une fonction spécifique;

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