AWS Lambda
Guia do desenvolvedor

Uso do AWS Lambda com o AWS IoT Events

O AWS IoT Events monitora as entradas de vários sensores e aplicativos IoT para reconhecer padrões de eventos. Em seguida, ele toma as ações apropriadas quando ocorrem eventos. O AWS IoT Events recebe as entradas como cargas JSON de muitas fontes. O AWS IoT Events oferece suporte a eventos simples (onde cada entrada aciona um evento) e eventos complexos (onde várias entradas devem ocorrer para acionar o evento).

Para usar o AWS IoT Events, você define um modelo de detector, que é um modelo de máquina de estado do seu equipamento ou processo. Além dos estados, você define entradas e eventos para o modelo. Você também define as ações a serem executadas quando ocorre um evento. Use uma função do Lambda para uma ação quando quiser chamar outro produto da AWS (como Amazon Connect) ou executar ações em um aplicativo externo (como seu aplicativo de planejamento de recursos empresariais (ERP)).

Quando o evento ocorre, o AWS IoT Events invoca a função do Lambda de forma assíncrona. Ele fornece informações sobre o modelo do detector e o evento que desencadeou a ação. O evento de mensagem de exemplo a seguir é baseado nas definições no exemplo passo a passo simples do AWS IoT Events.

exemplo Evento de mensagem de exemplo do AWS IoT Events

{ "event: ":{ "eventName": "myChargedEvent", "eventTime": 1567797571647, "payload":{ "detector":{ "detectorModelName": "AWS_IoTEvents_Hello_World1567793458261", "detectorModelVersion": "4", "keyValue": "100009" }, "eventTriggerDetails":{ "triggerType": "Message", "inputName": "AWS_IoTEvents_HelloWorld_VoltageInput", "messageId": "64c75a34-068b-4a1d-ae58-c16215dc4efd" }, "actionExecutionId": "49f0f32f-1209-38a7-8a76-d6ca49dd0bc4", "state":{ "variables": {}, "stateName": "Charged", "timers": {} } } } }

O evento que é passado para a função do Lambda inclui os seguintes campos:

  • eventName – o nome desse evento no modelo do detector.

  • eventTime – a hora em que o evento ocorreu.

  • detector – o nome e a versão do modelo do detector.

  • eventTriggerDetails – uma descrição da entrada que acionou o evento.

  • actionExecutionId – o identificador de execução exclusivo da ação.

  • state – o estado do modelo do detector quando o evento ocorreu.

    • stateName – o nome do estado no modelo do detector.

    • timers – quaisquer temporizadores que são definidos neste estado.

    • variables – quaisquer valores de variável que são definidos neste estado.

Você precisa conceder permissão para que o serviço AWS IoT Events chame sua função do Lambda. Use o comando add-permission para adicionar uma instrução de permissão à política baseada em recursos de sua função.

$ aws lambda add-permission --function-name my-function \ --statement-id iot-events --action "lambda:InvokeFunction" principal iotevents.amazonaws.com { "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iotevents.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\"}" }

Para obter mais informações sobre como usar o Lambda com AWS IoT Events, consulte Usar o AWS IoT Events com outros serviços.