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.
Mithilfe von Regeln auf kontoübergreifende Ressourcen zugreifen AWS IoT
Sie können AWS IoT Regeln für den kontoübergreifenden Zugriff konfigurieren, sodass Daten, die MQTT zu Themen eines Kontos aufgenommen wurden, an die AWS Dienste wie Amazon SQS und Lambda eines anderen Kontos weitergeleitet werden können. Im Folgenden wird erklärt, wie AWS IoT Regeln für die kontoübergreifende Datenerfassung eingerichtet werden, und zwar von einem MQTT Thema in einem Konto bis hin zu einem Ziel in einem anderen Konto.
Kontoübergreifende Regeln können mithilfe ressourcenbasierter Berechtigungen für die Zielressource konfiguriert werden. Daher können nur Ziele, die ressourcenbasierte Berechtigungen unterstützen, für den kontoübergreifenden Zugriff mit Regeln aktiviert werden. AWS IoT Zu den unterstützten Zielen gehören AmazonSQS, AmazonSNS, Amazon S3 und AWS Lambda.
Anmerkung
Für die unterstützten Ziele, mit Ausnahme von AmazonSQS, müssen Sie die Regel in derselben Ressource AWS-Region wie die Ressource eines anderen Dienstes definieren, damit die Regelaktion mit dieser Ressource interagieren kann. Weitere Informationen zu AWS IoT Regelaktionen finden Sie unter AWS IoT Regelaktionen. Weitere Informationen zur SQS Aktion einer Regel finden Sie unterSQS.
Voraussetzungen
-
Vertrautheit mit AWS IoT Regeln
-
Grundlegendes zu IAMBenutzern, Rollen und ressourcenbasierten Berechtigungen
-
Nach der AWS CLI Installation
Kontoübergreifende Einrichtung für Amazon SQS
Szenario: Konto A sendet Daten aus einer MQTT Nachricht an die SQS Amazon-Warteschlange von Konto B.
AWS-Konto | Konto bezeichnet als | Beschreibung |
---|---|---|
|
Konto A | Regelaktion: sqs:SendMessage |
|
Konto B | SQSAmazon-Warteschlange
|
Anmerkung
Ihre SQS Amazon-Zielwarteschlange muss sich nicht in derselben Warteschlange AWS-Region wie Ihre AWS IoT Regel befinden. Weitere Informationen zur SQS Aktion der Regel finden Sie unterSQS.
Erledigen der Aufgaben von Konto A
Hinweis
Um die folgenden Befehle auszuführen, sollte Ihr IAM Benutzer berechtigt iot:CreateTopicRule
sein, den Amazon-Ressourcennamen (ARN) der Regel als Ressource und iam:PassRole
Aktionen mit einer Ressource als Rolle zu verwendenARN.
-
AWS CLI Verwenden Sie den IAM Benutzer von Konto A für die Konfiguration.
-
Erstellen Sie eine IAM Rolle, die der AWS IoT Regel-Engine vertraut, und fügen Sie eine Richtlinie hinzu, die den Zugriff auf die SQS Amazon-Warteschlange von Konto B ermöglicht. Beispielbefehle und Richtliniendokumente finden Sie unter Gewährung AWS IoT des erforderlichen Zugriffs.
-
Um eine Regel zu erstellen, die an ein Thema angehängt ist, führen Sie den create-topic-rule Befehl aus.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Im Folgenden finden Sie ein Beispiel für eine Payload-Datei mit einer Regel, die alle an das
iot/test
Thema gesendeten Nachrichten in die angegebene SQS Amazon-Warteschlange einfügt. Die SQL Anweisung filtert die Nachrichten und die Rolle ARN gewährt AWS IoT Berechtigungen zum Hinzufügen der Nachricht zur SQS Amazon-Warteschlange.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "sqs": { "queueUrl": "https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue", "roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role", "useBase64": false } } ] }
Weitere Informationen zur Definition einer SQS Amazon-Aktion in einer AWS IoT Regel finden Sie unter AWS IoT Regelaktionen — Amazon SQS.
Erledigen der Aufgaben von Konto B
-
AWS CLI Verwenden Sie den IAM Benutzer von Konto B zur Konfiguration.
-
Um Konto A Berechtigungen für die SQS Amazon-Warteschlangenressource zu erteilen, führen Sie den Befehl add-permission aus.
aws sqs add-permission --queue-url
https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue
--labelSendMessagesToMyQueue
--aws-account-ids1111-1111-1111
--actions SendMessage
Kontoübergreifende Einrichtung für Amazon SNS
Szenario: Konto A sendet Daten aus einer MQTT Nachricht an ein SNS Amazon-Thema von Konto B.
AWS-Konto | Konto bezeichnet als | Beschreibung |
---|---|---|
|
Konto A | Regelaktion: sns:Publish |
|
Konto B | SNSAmazon-ThemaARN: |
Erledigen der Aufgaben von Konto A
Hinweise
Um die folgenden Befehle ausführen zu können, sollte Ihr IAM Benutzer über die Berechtigungen „Regel“ ARN als Ressource und über Berechtigungen für die iam:PassRole
Aktion mit einer Ressource als Rolle verfügenARN. iot:CreateTopicRule
-
AWS CLI Verwenden Sie für die Konfiguration den IAM Benutzer von Konto A.
-
Erstellen Sie eine IAM Rolle, die der AWS IoT Regel-Engine vertraut, und fügen Sie eine Richtlinie hinzu, die den Zugriff auf das SNS Amazon-Thema von Konto B ermöglicht. Befehle und Richtliniendokumente finden Sie beispielsweise unter Gewährung AWS IoT des erforderlichen Zugriffs.
-
Um eine Regel zu erstellen, die an ein Thema angehängt ist, führen Sie den create-topic-rule Befehl aus.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Im Folgenden finden Sie ein Beispiel für eine Payload-Datei mit einer Regel, die alle an das
iot/test
Thema gesendeten Nachrichten in das angegebene SNS Amazon-Thema einfügt. Die SQL Anweisung filtert die Nachrichten und die Rolle ARN gewährt AWS IoT Berechtigungen zum Senden der Nachricht an das SNS Amazon-Thema.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "sns": { "targetArn": "arn:aws:sns:region:2222-2222-2222:ExampleTopic", "roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role" } } ] }
Weitere Informationen zur Definition einer SNS Amazon-Aktion in einer AWS IoT Regel finden Sie unter AWS IoT Regelaktionen — Amazon SNS.
Erledigen der Aufgaben von Konto B
-
AWS CLI Verwenden Sie den IAM Benutzer von Konto B zur Konfiguration.
-
Um Konto A die Erlaubnis für die SNS Amazon-Themenressource zu erteilen, führen Sie den Befehl add-permission aus.
aws sns add-permission --topic-arn
arn:aws:sns:region:2222-2222-2222:ExampleTopic
--labelPublish-Permission
--aws-account-id1111-1111-1111
--action-name Publish
Kontoübergreifende Einrichtung für Amazon S3
Szenario: Konto A sendet Daten aus einer MQTT Nachricht an einen Amazon S3 S3-Bucket von Konto B.
AWS-Konto | Konto bezeichnet als | Beschreibung |
---|---|---|
|
Konto A | Regelaktion: s3:PutObject |
|
Konto B | Amazon S3 S3-BucketARN: |
Erledigen der Aufgaben von Konto A
Hinweis
Um die folgenden Befehle auszuführen, sollte Ihr IAM Benutzer über die Berechtigungen verfügen, die Regel ARN als Ressource zu iot:CreateTopicRule
verwenden, und über die iam:PassRole
Berechtigungen zum Ausführen einer Ressource als RolleARN.
-
AWS CLI Verwenden Sie für die Konfiguration den IAM Benutzer von Konto A.
-
Erstellen Sie eine IAM Rolle, die der AWS IoT Regel-Engine vertraut, und fügen Sie eine Richtlinie hinzu, die den Zugriff auf den Amazon S3 S3-Bucket von Konto B ermöglicht. Befehle und Richtliniendokumente finden Sie beispielsweise unter Gewährung AWS IoT des erforderlichen Zugriffs.
-
Führen Sie den create-topic-rule Befehl aus, um eine Regel zu erstellen, die an Ihren Ziel-S3-Bucket angehängt ist.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Im Folgenden finden Sie ein Beispiel für eine Nutzlastdatei mit einer Regel, die alle an das
iot/test
Thema gesendeten Nachrichten in den angegebenen Amazon S3-Bucket einfügt. Die SQL Anweisung filtert die Nachrichten und die Rolle ARN gewährt AWS IoT Berechtigungen zum Hinzufügen der Nachricht zum Amazon S3 S3-Bucket.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "bucketName": "amzn-s3-demo-bucket", "key": "${topic()}/${timestamp()}", "roleArn": "arn:aws:iam::1111-1111-1111:role/my-iot-role" } } ] }
Weitere Informationen zur Definition einer Amazon S3-Aktion in einer AWS IoT Regel finden Sie unter AWS IoT Regelaktionen — Amazon S3.
Erledigen der Aufgaben von Konto B
-
AWS CLI Verwenden Sie den IAM Benutzer von Konto B für die Konfiguration.
-
Erstellen Sie eine Bucket-Richtlinie, die dem Prinzipal von Konto A vertraut.
Im Folgenden finden Sie ein Beispiel für eine Payload-Datei, die eine Bucket-Richtlinie definiert, die dem Prinzipal eines anderen Kontos vertraut.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::1111-1111-1111:root" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
Weitere Informationen finden Sie unter Beispiele für Bucket-Richtlinien.
-
Führen Sie den put-bucket-policy Befehl aus, um die Bucket-Richtlinie an den angegebenen Bucket anzuhängen.
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./
amzn-s3-demo-bucket-policy.json
-
Damit der kontoübergreifende Zugriff funktioniert, stellen Sie sicher, dass Sie die richtigen Einstellungen für Blockieren des gesamten öffentlichen Zugangs ausgewählt haben. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit in Amazon S3.
Kontoübergreifende Einrichtung für AWS Lambda
Szenario: Konto A ruft eine AWS Lambda Funktion von Konto B auf und übergibt eine MQTT Nachricht.
AWS-Konto | Konto bezeichnet als | Beschreibung |
---|---|---|
|
Konto A | Regelaktion: lambda:InvokeFunction |
|
Konto B | Lambda-FunktionARN: |
Erledigen der Aufgaben von Konto A
Hinweise
Um die folgenden Befehle ausführen zu können, sollte Ihr IAM Benutzer über Berechtigungen für „Regel“ ARN als Ressource und über iam:PassRole
Aktionsberechtigungen für „Ressource“ als Rolle ARN verfügen. iot:CreateTopicRule
-
AWS CLI Verwenden Sie für die Konfiguration den IAM Benutzer von Konto A.
-
Führen Sie den create-topic-rule Befehl aus, um eine Regel zu erstellen, die den kontoübergreifenden Zugriff auf die Lambda-Funktion von Konto B definiert.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Im Folgenden finden Sie ein Beispiel für eine Nutzlastdatei mit einer Regel, die alle an das
iot/test
Thema gesendeten Nachrichten in die angegebene Lambda-Funktion einfügt. Die SQL Anweisung filtert die Nachrichten und die Rolle ARN gewährt die AWS IoT Erlaubnis, die Daten an die Lambda-Funktion weiterzuleiten.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:region:2222-2222-2222:function:example-function" } } ] }
Weitere Informationen zum Definieren einer AWS Lambda Aktion in einer AWS IoT Regel finden Sie unter AWS IoT Regelaktionen — Lambda.
Erledigen der Aufgaben von Konto B
-
AWS CLI Verwenden Sie für die Konfiguration den IAM Benutzer von Konto B.
-
Führen Sie den Befehl add-permission von Lambda aus, um AWS IoT Regeln die Erlaubnis zur Aktivierung der Lambda-Funktion zu erteilen. Um den folgenden Befehl ausführen zu können, sollte Ihr IAM Benutzer über die entsprechende Aktionsberechtigung verfügen.
lambda:AddPermission
aws lambda add-permission --function-name
example-function
--regionus-east-1
--principal iot.amazonaws.com --source-arnarn:aws:iot:region:1111-1111-1111:rule/example-rule
--source-account1111-1111-1111
--statement-id"unique_id"
--action "lambda:InvokeFunction"Optionen:
--Prinzipal
Dieses Feld gibt AWS IoT (dargestellt durch
iot.amazonaws.com
) die Erlaubnis, die Lambda-Funktion aufzurufen.--source-arn
Dieses Feld bestätigt, dass diese Lambda-Funktion nur
arn:aws:iot:region:1111-1111-1111:rule/example-rule
in AWS IoT Triggern und keine andere Regel in demselben oder einem anderen Konto diese Lambda-Funktion aktivieren kann.--source-account
Dieses Feld bestätigt, dass diese Lambda-Funktion nur im Namen des
1111-1111-1111
Kontos AWS IoT aktiviert wird.Hinweise
Wenn Sie in der Konsole Ihrer AWS Lambda Funktion unter Konfiguration die Fehlermeldung „Die Regel konnte nicht gefunden werden“ sehen, ignorieren Sie die Fehlermeldung und fahren Sie mit dem Testen der Verbindung fort.