Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Lambda
Una acción de Lambda (lambda) invoca una AWS Lambda función y envía un mensaje MQTT. AWS IoT invoca las funciones de Lambda de forma asincrónica.
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 un AWS Lambda función.
Requisitos
Esta regla tiene los siguientes requisitos:
-
AWS IoT Para invocar una función de Lambda, debe configurar una política que conceda el permiso para.
lambda:InvokeFunctionAWS IoT Solo puede invocar una función de Lambda definida en el mismo Región de AWS lugar en el que exista 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í.Usa el siguiente AWS CLI comando para adjuntar una política que conceda el permiso.
lambda:InvokeFunctionEn este comando, sustituya:-
function_namecon el nombre de la función Lambda. Agrega un nuevo permiso para actualizar la política de recursos de la función. -
regioncon el Región de AWS de la función. -
account-idcon el Cuenta de AWS número en el que se define la regla. -
rule-namecon el nombre de la AWS IoT regla para la que está definiendo la acción de Lambda. -
unique_idcon un identificador de sentencia único.
importante
Si agregas un permiso para un AWS IoT principal sin proporcionar el
source-arnosource-account, cualquiera Cuenta de AWS que cree una regla con tu acción de Lambda puede activar reglas desde las que invocar tu función de Lambda. AWS IoTPara 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 usas la AWS IoT consola para crear una regla para la acción de la regla de Lambda, la función de Lambda se activa automáticamente. Si, AWS CloudFormation en su lugar
AWS::IoT::TopicRule LambdaAction, la usa con, debe agregar unAWS::lambda::Permissionrecurso. 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_namecon el nombre de la función Lambda. -
regioncon el Región de AWS de la función. -
account-idcon el Cuenta de AWS número en el que se define la regla. -
rule-namecon el nombre de la AWS IoT regla para la que está definiendo 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 utilizas un AWS KMS cliente que ha conseguido AWS KMS key cifrar datos en reposo en Lambda, el servicio debe tener permiso para usarlos AWS KMS key en nombre de la persona que llama. Para obtener más información, consulte Encryption at rest (Cifrado en reposo) en la Guía para desarrolladores de AWS Lambda .
Parameters
Al crear una AWS IoT regla con esta acción, debe especificar la siguiente información:
functionArn-
El ARN de la función 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.
Soporta plantillas de sustitución: solo con API AWS CLI
Ejemplos
El siguiente ejemplo de JSON define una acción de Lambda en una AWS IoT regla.
{ "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 de JSON define una acción de Lambda con plantillas de sustitución en una AWS IoT regla.
{ "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 Lambdaen la Guía para AWS Lambda desarrolladores
-
Tutorial: Formatear una notificación mediante un AWS Lambda función