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_name
mit dem Namen der Lambda-Funktion. Sie fügen eine neue Berechtigung hinzu, um die Ressourcenrichtlinie der Funktion zu aktualisieren. -
region
mit dem AWS-Region der Funktion. -
account-id
mit der AWS-Konto Nummer, unter der die Regel definiert ist. -
rule-name
mit dem Namen der AWS IoT Regel, für die Sie die Lambda-Aktion definieren. -
unique_id
mit einer eindeutigen Anweisungskennung.
Wichtig
Wenn Sie eine Berechtigung für einen AWS IoT Prinzipal hinzufügen, ohne das
source-arn
oder anzugeben, kann jedersource-account
AWS-Konto , der mit Ihrer Lambda-Aktion eine Regel erstellt, Regeln aktivieren, von denen aus Ihre Lambda-Funktion aufgerufen wird. AWS IoTWeitere Informationen finden Sie unter AWS Lambda Berechtigungen.
aws lambda add-permission \ --function-name
function_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" -
-
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 eineAWS::lambda::Permission
Ressource 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_name
mit dem Namen der Lambda-Funktion. -
region
mit dem AWS-Region der Funktion. -
account-id
mit der AWS-Konto Nummer, unter der die Regel definiert ist. -
rule-name
mit 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
-
Was ist? AWS Lambda im AWS Lambda Developer Guide
-
Tutorial: Formatieren einer Benachrichtigung mithilfe einer AWS Lambda Funktion