Lambda - AWS IoT Core

Lambda

Uma ação Lambda (lambda) invoca uma função AWS Lambda, transmitindo uma mensagem MQTT. AWS IoT invoca funções do Lambda de forma assíncrona.

Você pode seguir um tutorial que mostra como criar e testar uma regra com uma ação do Lambda. Para obter mais informações, consulte Tutorial: Como formatar uma notificação usando uma função AWS Lambda.

Requisitos

Esta ação de regra tem os seguintes requisitos:

  • Para AWS IoT invocar uma função do Lambda, você deve configurar uma política que conceda lambda:InvokeFunction permissão para AWS IoT. Você só pode invocar uma função do Lambda definida na mesma Região da AWS em que sua política do Lambda existe. As funções do Lambda usam políticas baseadas em recursos; por isso, você precisa anexar a política à própria função do Lambda.

    Use o comando a seguir AWS CLI para anexar uma política que conceda a permissão lambda:InvokeFunction. Nesse comando, substitua:

    • function_name pelo nome da função do Lambda. Você adiciona uma nova permissão para atualizar a política de recursos da função.

    • region pela Região da AWS da função.

    • account-id pelo número da Conta da AWS onde a regra está definida.

    • rule-name pelo nome da regra da AWS IoT para a qual você está definindo a ação do Lambda.

    • unique_id por um identificador de declaração exclusivo.

    Importante

    Se você adicionar uma permissão para uma AWS IoTentidade principal da sem fornecer o source-arn ou source-account, qualquer Conta da AWS que criar uma regra com sua ação do Lambda poderá acionar regras para invocar sua função do Lambda da AWS IoT.

    Para ter mais informações, consulte AWS Lambda permissões.

    aws lambda add-permission \ --function-name function_name \ --region region \ --principal iot.amazonaws.com \ --source-arn arn:aws:iot:region:account-id:rule/rule_name \ --source-account account-id --statement-id unique_id --action "lambda:InvokeFunction"
  • Se você usar o console da AWS IoT para criar uma regra para a ação da regra do Lambda, a função do Lambda será acionada automaticamente. Se, em vez disso, você usar o AWS CloudFormation com a AWS::IoT::TopicRule LambdaAction, deverá adicionar um recurso AWS::lambda::Permission. O recurso então concede a você permissão para acionar a função do Lambda.

    O código a seguir mostra um exemplo de como adicionar esse recurso. Neste exemplo, substitua:

    • function_name pelo nome da função do Lambda.

    • region pela Região da AWS da função.

    • account-id pelo número da Conta da AWS onde a regra está definida.

    • rule-name pelo nome da regra da AWS IoT para a qual você está definindo a ação do Lambda.

    Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !Ref function_name Principal: "iot.amazonaws.com" SourceAccount: account-id SourceArn: arn:aws:iot:region:account-id:rule/rule_name
  • Se você usar um AWS KMS cliente gerenciado AWS KMS key para criptografar dados em repouso no Lambda, o serviço deverá ter permissão para usar o AWS KMS key em nome do chamador. Para obter mais informações, consulte Criptografia em repouso, no AWS Lambda Guia do Desenvolvedor.

Parâmetros

Ao criar uma regra AWS IoT com esta ação, você deve especificar as seguintes informações:

functionArn

O ARN da função do Lambda a ser invocada. AWS IoT deve ter permissão para invocar a função. Para obter mais informações, consulte Requisitos.

Se você não especificar uma versão ou um alias para sua função do Lambda, a versão mais recente da função será encerrada. Você pode especificar uma versão ou um alias se quiser encerrar uma versão específica da função do Lambda. Para especificar uma versão ou alias, anexe a versão ou pseudônimo ao ARN da função do Lambda.

arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias

Para obter mais informações sobre versionamento e aliases, consulte AWS Lambda Versionamento e aliases da função.

Compatível com modelos de substituição: API e AWS CLI somente

Exemplos

O exemplo JSON a seguir define uma ação do Lambda em uma regra AWS IoT.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction" } } ] } }

O exemplo JSON a seguir define uma ação do Lambda com modelos de substituição em uma regra AWS IoT.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:${topic()}" } } ] } }

Consulte também