Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Accesso alle risorse di più account utilizzando le regole AWS IoT
Puoi configurare AWS IoT le regole per l'accesso tra account diversi in modo che i dati inseriti negli MQTT argomenti di un account possano essere indirizzati AWS ai servizi, come Amazon e SQS Lambda, di un altro account. Di seguito viene spiegato come impostare AWS IoT le regole per l'inserimento di dati tra account, da un MQTT argomento in un account a una destinazione in un altro account.
Le regole cross-account possono essere configurate utilizzando Autorizzazioni basate su risorse sulla risorsa di destinazione. Pertanto, solo le destinazioni che supportano le autorizzazioni basate sulle risorse possono essere abilitate per l'accesso tramite regole tra account. AWS IoT Le destinazioni supportate includono AmazonSQS, AmazonSNS, Amazon S3 e. AWS Lambda
Nota
Per le destinazioni supportate, ad eccezione di AmazonSQS, devi definire la regola nella stessa Regione AWS risorsa di un altro servizio in modo che l'azione della regola possa interagire con quella risorsa. Per ulteriori informazioni sulle azioni delle AWS IoT regole, consulta le azioni delle AWS IoT regole. Per ulteriori informazioni sull'SQSazione delle regole, vedereSQS.
Prerequisiti
-
Familiarità con Regole AWS IoT
-
Comprensione degli IAMutenti, dei ruoli e delle autorizzazioni basate sulle risorse
-
Avendo AWS CLI installato
Configurazione su più account per Amazon SQS
Scenario: l'account A invia i dati da un MQTT messaggio alla SQS coda Amazon dell'account B.
Account AWS | Account denominato | Descrizione |
---|---|---|
|
Account A | Operazione delle regole: sqs:SendMessage |
|
Account B | SQSCoda Amazon
|
Nota
La tua SQS coda Amazon di destinazione non deve necessariamente corrispondere alla tua Regione AWS AWS IoT regola. Per ulteriori informazioni sull'SQSazione della regola, consultaSQS.
Eseguire le attività dell'Account A
Nota
Per eseguire i seguenti comandi, il tuo IAM utente deve avere le autorizzazioni per iot:CreateTopicRule
utilizzare Amazon Resource Name (ARN) della regola come risorsa e le autorizzazioni per iam:PassRole
agire con una risorsa come ruolo. ARN
-
Configura AWS CLI utilizzando l'utente dell'IAMaccount A.
-
Crea un IAM ruolo che si fidi del motore AWS IoT delle regole e alleghi una policy che consenta l'accesso alla coda Amazon SQS dell'account B. Vedi esempi di comandi e documenti relativi alle policy in Garantire AWS IoT l'accesso richiesto.
-
Per creare una regola allegata a un argomento, esegui il create-topic-rule comando.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'
iot/test
argomento nella coda Amazon SQS specificata. L'SQListruzione filtra i messaggi e il ruolo ARN concede AWS IoT le autorizzazioni per aggiungere il messaggio alla coda di AmazonSQS.{ "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 } } ] }
Per ulteriori informazioni su come definire un'SQSazione Amazon in una AWS IoT regola, consulta AWS IoT rule actions - Amazon SQS.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'IAMutente dell'account B.
-
Per concedere le autorizzazioni per la risorsa Amazon SQS Queue all'account A, esegui il comando add-permission.
aws sqs add-permission --queue-url
https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue
--labelSendMessagesToMyQueue
--aws-account-ids1111-1111-1111
--actions SendMessage
Configurazione su più account per Amazon SNS
Scenario: l'account A invia i dati da un MQTT messaggio a un SNS argomento Amazon dell'account B.
Account AWS | Account denominato | Descrizione |
---|---|---|
|
Account A | Operazione delle regole: sns:Publish |
|
Account B | SNSArgomento AmazonARN: |
Eseguire le attività dell'Account A
Note
Per eseguire i seguenti comandi, IAM l'utente deve disporre delle autorizzazioni per utilizzare iot:CreateTopicRule
la regola ARN come risorsa e le autorizzazioni per l'iam:PassRole
azione con una risorsa come ruolo. ARN
-
Configura AWS CLI utilizzando l'utente dell'IAMaccount A.
-
Crea un IAM ruolo che si fidi del motore AWS IoT delle regole e alleghi una policy che consenta l'accesso all'argomento Amazon SNS dell'account B. Per esempio, comandi e documenti relativi alle policy, vedi Concessione AWS IoT dell'accesso richiesto.
-
Per creare una regola allegata a un argomento, esegui il create-topic-rule comando.
aws iot create-topic-rule --rule-name
myRule
--topic-rule-payload file://./my-rule.json
Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'
iot/test
argomento nell'argomento Amazon SNS specificato. L'SQListruzione filtra i messaggi e il ruolo ARN concede AWS IoT le autorizzazioni per inviare il messaggio all'argomento AmazonSNS.{ "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" } } ] }
Per ulteriori informazioni su come definire un'SNSazione Amazon in una AWS IoT regola, consulta AWS IoT rule actions - Amazon SNS.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'IAMutente dell'account B.
-
Per concedere l'autorizzazione sulla risorsa SNS tematica Amazon all'account A, esegui il comando add-permission.
aws sns add-permission --topic-arn
arn:aws:sns:region:2222-2222-2222:ExampleTopic
--labelPublish-Permission
--aws-account-id1111-1111-1111
--action-name Publish
Configurazione tra account per Amazon S3
Scenario: l'account A invia i dati da un MQTT messaggio a un bucket Amazon S3 dell'account B.
Account AWS | Account denominato | Descrizione |
---|---|---|
|
Account A | Operazione delle regole: s3:PutObject |
|
Account B | Bucket Amazon S3: ARN |
Eseguire le attività dell'Account A
Nota
Per eseguire i seguenti comandi, IAM l'utente deve disporre delle autorizzazioni per utilizzare iot:CreateTopicRule
la regola ARN come risorsa e delle autorizzazioni per iam:PassRole
agire con una risorsa come ruolo. ARN
-
Configura AWS CLI utilizzando l'utente dell'IAMaccount A.
-
Crea un IAM ruolo che si fidi del motore AWS IoT delle regole e alleghi una policy che consenta l'accesso al bucket Amazon S3 dell'account B. Ad esempio, comandi e documenti relativi alle policy, vedi Concessione AWS IoT dell'accesso richiesto.
-
Per creare una regola da allegare al bucket S3 di destinazione, esegui il comando. create-topic-rule
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/test
nel bucket Amazon S3 specificato. L'SQListruzione filtra i messaggi e il ruolo ARN concede AWS IoT le autorizzazioni per aggiungere il messaggio al bucket Amazon S3.{ "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" } } ] }
Per ulteriori informazioni su come definire un'azione Amazon S3 in una AWS IoT regola, consulta AWS IoT rule actions - Amazon S3.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'utente dell'IAMaccount B.
-
Crea una policy bucket che consideri attendibile l'entità dell'account A principale.
Di seguito è riportato un esempio di file di payload che definisce una policy di bucket che considera attendibile l'entità di un altro account.
{ "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/*" } ] }
Per ulteriori informazioni, consulta Esempi di policy bucket.
-
Per allegare la policy del bucket al bucket specificato, esegui il put-bucket-policy comando.
aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./
amzn-s3-demo-bucket-policy.json
-
Per far sì che l'accesso tra account funzioni, assicurati di avere l’impostazione corretta Blocca tutti gli accessi pubblici. Per ulteriori informazioni, consulta Best practice relative alla sicurezza per Amazon S3.
Configurazione tra più account per AWS Lambda
Scenario: l'account A richiama una AWS Lambda funzione dell'account B, trasmettendo un messaggio. MQTT
Account AWS | Account denominato | Descrizione |
---|---|---|
|
Account A | Operazione delle regole: lambda:InvokeFunction |
|
Account B | Funzione Lambda: ARN |
Eseguire le attività dell'Account A
Note
Per eseguire i seguenti comandi, IAM l'utente deve disporre delle autorizzazioni per utilizzare iot:CreateTopicRule
la regola ARN come risorsa e delle autorizzazioni per iam:PassRole
agire con la risorsa come ruolo. ARN
-
Configura AWS CLI utilizzando l'utente dell'IAMaccount A.
-
Esegui il create-topic-rule comando per creare una regola che definisca l'accesso tra account alla funzione Lambda dell'account B.
aws iot create-topic-rule --rule-name
my-rule
--topic-rule-payload file://./my-rule.json
Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/test
nella funzione Lambda specificata. L'SQListruzione filtra i messaggi e il ruolo ARN concede l' AWS IoT autorizzazione a passare i dati alla funzione Lambda.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:region:2222-2222-2222:function:example-function" } } ] }
Per ulteriori informazioni su come definire un' AWS Lambda azione in una AWS IoT regola, leggi AWS IoT rule actions - Lambda.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'IAMutente dell'account B.
-
Esegui il comando add-permission di Lambda per autorizzare AWS IoT le regole ad attivare la funzione Lambda. Per eseguire il comando seguente, l'IAMutente deve disporre dell'autorizzazione all'azione.
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"Opzioni:
--principal
Questo campo consente a AWS IoT (rappresentato da
iot.amazonaws.com
) di chiamare la funzione Lambda.--source-arn
Questo campo conferma che solo
arn:aws:iot:region:1111-1111-1111:rule/example-rule
in AWS IoT attiva questa funzione Lambda e che nessun'altra regola nello stesso o in un altro account può attivare questa funzione Lambda.--source-account
Questo campo conferma che AWS IoT attiva questa funzione Lambda solo per conto dell'
1111-1111-1111
account.Note
Se viene visualizzato un messaggio di errore "Impossibile trovare la regola" nella console della funzione AWS Lambda sotto Configurazione, ignora il messaggio di errore e procedi al test della connessione.