

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
<a name="lambda-rule-action"></a>

Una acción Lambda (`lambda`) invoca una AWS Lambda función y pasa un mensaje MQTT. AWS IoT invoca funciones 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 AWS Lambda función](iot-lambda-rule.md).

## Requisitos
<a name="lambda-rule-action-requirements"></a>

Esta regla tiene los siguientes requisitos:
+  AWS IoT Para invocar una función Lambda, debe configurar una política que conceda `lambda:InvokeFunction` el permiso a. AWS IoT Solo puede invocar una función de Lambda definida en el Región de AWS mismo lugar 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í. 

  Utilice el siguiente AWS CLI comando para adjuntar una política que conceda el permiso. `lambda:InvokeFunction` En este comando, sustituya:
  + *function\$1name*con el nombre de la función Lambda. Agrega un nuevo permiso para actualizar la política de recursos de la función.
  + *region*con el Región de AWS de la función.
  + *account-id*con el Cuenta de AWS número en el que se define la regla.
  + *rule-name*con el nombre de la AWS IoT regla para la que está definiendo la acción Lambda.
  + *unique\$1id*con un identificador de declaración único.
**importante**  
Si agrega un permiso para un AWS IoT principal sin proporcionar el `source-arn` o`source-account`, cualquiera Cuenta de AWS que cree una regla con su acción de Lambda puede activar reglas desde las que invocar la función de Lambda. AWS IoT

  Para obtener más información, consulte [Permisos de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html).

  ```
  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"
  ```
+ Si utiliza la AWS IoT consola para crear una regla para la acción de la regla Lambda, la función Lambda se activa automáticamente. Si la usa AWS CloudFormation en su lugar con [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html), debe agregar un [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html)recurso. 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\$1name*con el nombre de la función Lambda.
  + *region*con el Región de AWS de la función.
  + *account-id*con el Cuenta de AWS número en el que se define la regla.
  + *rule-name*con el nombre de la AWS IoT regla para la que está definiendo la acción 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
  ```
+ Si utiliza un AWS KMS cliente gestionado AWS KMS key para cifrar datos en reposo en Lambda, el servicio debe tener permiso para utilizarlos en nombre de AWS KMS key la persona que llama. Para obtener más información, consulte [Encryption at rest](https://docs.aws.amazon.com/lambda/latest/dg/security-dataprotection.html#security-privacy-atrest) (Cifrado en reposo) en la *Guía para desarrolladores de AWS Lambda *.

## Parameters
<a name="lambda-rule-action-parameters"></a>

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](#lambda-rule-action-requirements).  
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:someAlias
```
Para 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](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).  
Admite [plantillas de sustitución](iot-substitution-templates.md): API y únicamente AWS CLI 

## Ejemplos
<a name="lambda-rule-action-examples"></a>

El siguiente ejemplo de JSON define una acción 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 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
<a name="lambda-rule-action-see-also"></a>
+ [¿Qué es? AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/) en la *Guía AWS Lambda para desarrolladores*
+ [Tutorial: Formatear una notificación mediante una AWS Lambda función](iot-lambda-rule.md)