

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Une action Lambda (`lambda`) appelle une AWS Lambda fonction en transmettant un message MQTT. AWS IoT invoque les fonctions Lambda de manière asynchrone.

Vous pouvez suivre un didacticiel qui vous montre comment créer et tester une règle avec une action Lambda. Pour de plus amples informations, veuillez consulter [Tutoriel : Formatage d'une notification à l'aide d'une AWS Lambda fonction](iot-lambda-rule.md).

## Prérequis
<a name="lambda-rule-action-requirements"></a>

Cette action réglementaire est assortie des exigences suivantes :
+  AWS IoT Pour appeler une fonction Lambda, vous devez configurer une politique qui accorde l'`lambda:InvokeFunction`autorisation de. AWS IoT Vous ne pouvez invoquer une fonction Lambda définie dans la même fonction que Région AWS lorsque votre politique Lambda existe. Les fonctions Lambda utilisent des politiques basées sur les ressources, vous devez donc attacher la politique à la fonction Lambda elle-même. 

  Utilisez la AWS CLI commande suivante pour joindre une politique qui accorde l'`lambda:InvokeFunction`autorisation. Dans cette commande, remplacez :
  + *function\$1name*avec le nom de la fonction Lambda. Vous ajoutez une nouvelle autorisation pour mettre à jour la politique de ressources de la fonction.
  + *region*avec le Région AWS de la fonction.
  + *account-id*avec le Compte AWS numéro où la règle est définie.
  + *rule-name*avec le nom de la AWS IoT règle pour laquelle vous définissez l'action Lambda.
  + *unique\$1id*avec un identifiant de relevé unique.
**Important**  
Si vous ajoutez une autorisation pour un AWS IoT principal sans fournir le `source-arn` ou`source-account`, toute autorisation Compte AWS qui crée une règle avec votre action Lambda peut activer des règles à partir desquelles appeler votre fonction Lambda. AWS IoT

  Pour plus d’informations, consultez [Autorisations 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 vous utilisez la AWS IoT console pour créer une règle pour l'action de règle Lambda, la fonction Lambda est déclenchée automatiquement. Si vous utilisez AWS CloudFormation plutôt avec le [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), vous devez ajouter une [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)ressource. La ressource vous autorise ensuite à déclencher la fonction Lambda.

  Le code suivant montre un exemple d'ajout de cette ressource. Dans cet exemple, remplacez :
  + *function\$1name*avec le nom de la fonction Lambda.
  + *region*avec le Région AWS de la fonction.
  + *account-id*avec le Compte AWS numéro où la règle est définie.
  + *rule-name*avec le nom de la AWS IoT règle pour laquelle vous définissez l'action 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 vous utilisez un AWS KMS client géré AWS KMS key pour chiffrer des données au repos dans Lambda, le service doit être autorisé à l'utiliser au nom AWS KMS key de l'appelant. Pour plus d'informations, veuillez consulter la rubrique [Chiffrement au repos](https://docs.aws.amazon.com/lambda/latest/dg/security-dataprotection.html#security-privacy-atrest) dans le *Guide du développeur AWS Lambda *.

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

Lorsque vous créez une AWS IoT règle avec cette action, vous devez spécifier les informations suivantes :

`functionArn`  
L'ARN de la fonction Lambda à invoquer. AWS IoT doit être autorisé à invoquer la fonction. Pour de plus amples informations, veuillez consulter [Prérequis](#lambda-rule-action-requirements).  
Si vous ne spécifiez pas de version ou d'alias pour votre fonction Lambda, c'est la version la plus récente de la fonction qui est arrêtée. Vous pouvez spécifier une version ou un alias si vous souhaitez arrêter une version spécifique de votre fonction Lambda. Pour spécifier une version ou un alias, ajoutez la version ou l'alias à l'ARN de la fonction Lambda.  

```
arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias
```
Pour plus d'informations sur le versionnage et les alias, consultez [AWS Lambda la fonction versionnage et alias](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).  
Supporte les [modèles de substitution](iot-substitution-templates.md) : API et AWS CLI uniquement

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

L'exemple JSON suivant définit une action Lambda dans une AWS IoT règle.

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

L'exemple JSON suivant définit une action Lambda avec des modèles de substitution dans une AWS IoT règle.

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

## Consultez aussi
<a name="lambda-rule-action-see-also"></a>
+ [Qu'est-ce que c'est AWS Lambda ?](https://docs.aws.amazon.com/lambda/latest/dg/) dans le *guide AWS Lambda du développeur*
+ [Tutoriel : Formatage d'une notification à l'aide d'une AWS Lambda fonction](iot-lambda-rule.md)