Invocar uma função lambda quando outra função lambda for implantada

Sep 07 2020

Eu tenho uma função lambda da AWS que fornece objetos de configuração. Sempre que esta função lambda é atualizada (ou seja, implantada novamente), preciso acionar outra função lambda, que detecta alterações nesses objetos de configuração e executa alguma ação. Como faço para monitorar esta implantação lambda, em qual evento de observação em nuvem preciso me inscrever?

Respostas

3 Marcin Sep 07 2020 at 12:06

Presumo que suas implantações lambda não sejam gerenciadas por CodeDeploy . Em caso afirmativo, eu recomendaria criar um teste CloudTrial .

Depois que o teste CT for criado com as configurações padrão, ele monitorará todas as chamadas de API de gerenciamento para sua função lambda. Um deles é UpdateFunctionCode. Assim, você pode criar uma regra CloudWatch para AWS API Call via CloudTrail. A regra seria acionada na chamada da API de atualização da função.

Exemplo de tal regra:

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

Em seguida, você pode acionar um segundo lambda, com base no evento de atualização capturado da primeira função.

pras007 Sep 09 2020 at 20:27

Com base na sugestão de @Marcin, usei o log do console para imprimir o evento. A regra abaixo ajudou a filtrar uma função específica;

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