Lambda
Una acción Lambda (lambda) invoca una función AWS Lambda y pasa un mensaje MQTT. AWS IoT invoca funciones de Lambda de forma asíncrona.
Puede seguir un tutorial que muestra cómo crear y probar una regla con una acción de Lambda. Para obtener más información, consulte Tutorial: Formatear una notificación mediante una función AWS Lambda.
Requisitos
Esta regla tiene los siguientes requisitos:
-
Para que AWS IoT invoque una función de Lambda, debe configurar una política que conceda el permiso
lambda:InvokeFunctiona AWS IoT. Solo puede invocar una función de Lambda definida en la misma Región de AWS donde existe su política de Lambda. Las funciones de Lambda utilizan políticas basadas en recursos, por lo que debe asociar la política a la función de Lambda en sí.Ejecute el siguiente comando de AWS CLI para asociar una política que conceda el permiso
lambda:InvokeFunction. En este comando, sustituya:-
function_namepor el nombre de la función de Lambda. Agrega un nuevo permiso para actualizar la política de recursos de la función. -
regionpor la Región de AWS de la función. -
account-idpor el número de Cuenta de AWS donde se define la regla. -
rule-namepor el nombre de la regla de AWS IoT para la que se define la acción de Lambda. -
unique_idpor un identificador único de instrucción.
importante
Si agrega un permiso para una entidad principal de AWS IoT sin proporcionar el
source-arnosource-account, cualquier Cuenta de AWS que cree una regla con la acción Lambda podrá desencadenar reglas para invocar su función de Lambda desde AWS IoT.Para obtener más información, consulte Permisos de AWS Lambda.
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" -
-
Si utiliza la consola de AWS IoT para crear una regla para la acción de la regla Lambda, la función de Lambda se desencadenará automáticamente. Si usa AWS CloudFormation en su lugar con
AWS::IoT::TopicRule LambdaAction, debe agregar un recurso deAWS::lambda::Permission. A continuación, el recurso le concede permiso para desencadenar la función de Lambda.En el siguiente código se muestra un ejemplo de cómo agregar este recurso. En este ejemplo, sustituya:
-
function_namepor el nombre de la función de Lambda. -
regionpor la Región de AWS de la función. -
account-idpor el número de Cuenta de AWS donde se define la regla. -
rule-namepor el nombre de la regla de AWS IoT para la que se define la acción de 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 -
-
Si utiliza una AWS KMS administrada por el cliente AWS KMS key para cifrar los datos en reposo de Lambda, el servicio debe tener permiso para poder usar la AWS KMS key en nombre del autor de la llamada. Para obtener más información, consulte Encryption at rest (Cifrado en reposo) en la Guía para desarrolladores de AWS Lambda.
Parámetros
Cuando cree una regla AWS IoT con esta acción, debe especificar la información siguiente:
functionArn-
El ARN de la función de Lambda que se va a invocar. AWS IoT debe tener permiso para invocar la función. Para obtener más información, consulte Requisitos.
Si no especifica una versión o un alias para su función de Lambda, se cerrará la versión más reciente de la función. Puede especificar una versión o un alias si desea cerrar una versión específica de su función de Lambda. Para especificar una versión o alias, añada la versión o el alias en el ARN de la función de Lambda.
arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAliasPara obtener más información acerca del control de versiones y los alias, consulte Control de versiones y alias de las funciones de AWS Lambda.
Admite plantillas de sustitución: API y AWS CLI únicamente
Ejemplos
El siguiente ejemplo JSON define una acción Lambda en una regla 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" } } ] } }
El siguiente ejemplo JSON define una acción Lambda con plantillas de sustitución en una regla 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()}" } } ] } }
Véase también
-
¿Qué es AWS Lambda? en la Guía para desarrolladores de AWS Lambda
-
Tutorial: Formatear una notificación mediante una función AWS Lambda