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:InvokeFunctionpermissã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_namepelo nome da função do Lambda. Você adiciona uma nova permissão para atualizar a política de recursos da função. -
regionpela Região da AWS da função. -
account-idpelo número da Conta da AWS onde a regra está definida. -
rule-namepelo nome da regra da AWS IoT para a qual você está definindo a ação do Lambda. -
unique_idpor um identificador de declaração exclusivo.
Importante
Se você adicionar uma permissão para uma AWS IoTentidade principal da sem fornecer o
source-arnousource-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-namefunction_name\ --regionregion\ --principal iot.amazonaws.com \ --source-arn arn:aws:iot:region:account-id:rule/rule_name\ --source-accountaccount-id--statement-idunique_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 recursoAWS::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_namepelo nome da função do Lambda. -
regionpela Região da AWS da função. -
account-idpelo número da Conta da AWS onde a regra está definida. -
rule-namepelo 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: !Reffunction_namePrincipal: "iot.amazonaws.com" SourceAccount:account-idSourceArn: 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:someAliasPara 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
-
O que é AWS Lambda?, no AWS Lambda Guia do desenvolvedor
-
Tutorial: Como formatar uma notificação usando uma função AWS Lambda