Lambda - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Lambda

Eine Lambda (lambda) -Aktion ruft eine AWS Lambda Funktion auf und übergibt eine MQTT Nachricht. AWS IoT ruft Lambda-Funktionen asynchron auf.

Sie können einem Tutorial folgen, das Ihnen veranschaulicht, wie Sie eine Regel mit einer Lambda-Aktion erstellen und testen. Weitere Informationen finden Sie unter Tutorial: Formatieren einer Benachrichtigung mithilfe einer AWS Lambda Funktion.

Voraussetzungen

Diese Regelaktion hat die folgenden Anforderungen:

  • AWS IoT Um eine Lambda-Funktion aufzurufen, müssen Sie eine Richtlinie konfigurieren, die die lambda:InvokeFunction Berechtigung dazu erteilt. AWS IoT Sie können nur eine Lambda-Funktion aufrufen, die in derselben AWS-Region definiert ist, in der Ihre Lambda-Richtlinie existiert. Lambda-Funktionen verwenden ressourcenbasierte Richtlinien, daher müssen Sie die Richtlinie an die Lambda-Funktion selbst anhängen.

    Verwenden Sie den folgenden AWS CLI Befehl, um eine Richtlinie anzuhängen, die die Berechtigung erteilt. lambda:InvokeFunction Ersetzen Sie in diesem Befehl:

    • function_namemit dem Namen der Lambda-Funktion. Sie fügen eine neue Berechtigung hinzu, um die Ressourcenrichtlinie der Funktion zu aktualisieren.

    • regionmit dem AWS-Region der Funktion.

    • account-idmit der AWS-Konto Nummer, unter der die Regel definiert ist.

    • rule-namemit dem Namen der AWS IoT Regel, für die Sie die Lambda-Aktion definieren.

    • unique_idmit einer eindeutigen Anweisungskennung.

    Wichtig

    Wenn Sie eine Berechtigung für einen AWS IoT Prinzipal hinzufügen, ohne das source-arn oder anzugeben, kann jeder source-account AWS-Konto , der mit Ihrer Lambda-Aktion eine Regel erstellt, Regeln aktivieren, von denen aus Ihre Lambda-Funktion aufgerufen wird. AWS IoT

    Weitere Informationen finden Sie unter AWS Lambda Berechtigungen.

    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"
  • Wenn Sie die AWS IoT Konsole verwenden, um eine Regel für die Lambda-Regelaktion zu erstellen, wird die Lambda-Funktion automatisch ausgelöst. Wenn Sie AWS CloudFormation stattdessen mit dem verwenden AWS::IoT::TopicRule LambdaAction, müssen Sie eine AWS::lambda::PermissionRessource hinzufügen. Die Ressource erteilt Ihnen dann die Erlaubnis, die Lambda-Funktion auszulösen.

    Der folgende Code zeigt ein Beispiel für das Hinzufügen dieser Ressource. Ersetzen Sie in diesem Beispiel:

    • function_namemit dem Namen der Lambda-Funktion.

    • regionmit dem AWS-Region der Funktion.

    • account-idmit der AWS-Konto Nummer, unter der die Regel definiert ist.

    • rule-namemit dem Namen der AWS IoT Regel, für die Sie die Lambda-Aktion definieren.

    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
  • Wenn Sie einen AWS KMS Kunden verwenden, der es geschafft hat AWS KMS key , ruhende Daten in Lambda zu verschlüsseln, muss der Dienst über die Erlaubnis verfügen, den im Namen des AWS KMS key Anrufers zu verwenden. Weitere Informationen finden Sie unter Verschlüsselung im Ruhezustand im Entwicklerhandbuch für AWS Lambda .

Parameter

Wenn Sie mit dieser Aktion eine AWS IoT Regel erstellen, müssen Sie die folgenden Informationen angeben:

functionArn

Die ARN der aufzurufenden Lambda-Funktion. AWS IoT muss die Erlaubnis haben, die Funktion aufzurufen. Weitere Informationen finden Sie unter Voraussetzungen.

Wenn Sie für Ihre Lambda-Funktion keine Version oder keinen Alias angeben, wird die neueste Version der Funktion heruntergefahren. Sie können eine Version oder einen Alias angeben, wenn Sie eine bestimmte Version Ihrer Lambda-Funktion herunterfahren möchten. Um eine Version oder einen Alias anzugeben, hängen Sie die Version oder den Alias an die ARN der Lambda-Funktion an.

arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias

Weitere Informationen über Versionsverwaltung und Aliasse finden Sie unter AWS Lambda Funktions-Versionsverwaltung und Aliasse.

Unterstützt Substitutionsvorlagen: und nur API AWS CLI

Beispiele

Das folgende JSON Beispiel definiert eine Lambda-Aktion in einer AWS IoT Regel.

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

Das folgende JSON Beispiel definiert eine Lambda-Aktion mit Ersatzvorlagen in einer AWS IoT Regel.

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

Weitere Informationen finden Sie auch unter