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 tra più account utilizzando AWS IoT rules
Puoi configurare AWS IoT le regole per l'accesso tra più account in modo che i dati inseriti negli argomenti MQTT di un account possano essere indirizzati ai AWS servizi, come Amazon SQS e Lambda, di un altro account. Di seguito viene spiegato come impostare AWS IoT le regole per l'inserimento di dati tra più account, da un argomento MQTT in un account a una destinazione in un altro account.
Cross-account le regole possono essere configurate utilizzando autorizzazioni basate sulle risorse sulla risorsa di destinazione. Pertanto, solo le destinazioni che supportano le autorizzazioni basate sulle risorse possono essere abilitate per l'accesso tra account tramite regole. AWS IoT Le destinazioni supportate includono Amazon SQS, Amazon SNS, Amazon S3 e AWS Lambda.
Nota
Per le destinazioni supportate, ad eccezione di Amazon SQS, è necessario definire la regola insieme alla risorsa di un altro servizio in modo che l'azione della regola possa interagire con quella risorsa. Regione AWS Per ulteriori informazioni sulle azioni delle AWS IoT regole, consulta le azioni delle AWS IoT regole. Per ulteriori informazioni sull'azione SQS della regola, vedereSQS.
Prerequisiti
-
Familiarità con Regole AWS IoT
-
Una comprensione di utenti IAM, Ruoli e Autorizzazione basata su risorsa
-
Avendo AWS CLI installato
Cross-account configurazione per Amazon SQS
Scenario: l'account A invia i dati da un messaggio MQTT a una coda Amazon SQS dell’account B.
| Account AWS | Account denominato | Description |
|---|---|---|
|
Account A | Operazione delle regole: sqs:SendMessage |
|
Account B | Coda Amazon SQS
|
Nota
Eseguire le attività dell'Account A
Nota
Per eseguire i seguenti comandi, l'utente IAM deve disporre delle autorizzazioni per iot:CreateTopicRule con l’Amazon Resource Name (ARN) della regola e le autorizzazioni a un’operazione iam:PassRole con una risorsa come l’ARN del ruolo.
-
Configura AWS CLI utilizzando l’account IAM dell'utente A.
-
Crea un ruolo IAM che si fidi del motore AWS IoT delle regole e allega una policy che consenta l'accesso alla coda Amazon SQS dell'account B. Consulta i comandi di esempio e i documenti relativi alle policy in Granting the required access. AWS IoT
-
Per creare una regola collegata a un argomento, esegui il comando create-topic-rule.
aws iot create-topic-rule --rule-namemyRule--topic-rule-payload file://./my-rule.jsonDi seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/testnella coda Amazon SQS specificata. L'istruzione SQL filtra i messaggi e l'ARN del ruolo concede ad AWS IoT l'autorizzazione per aggiungere il messaggio alla cosa di Amazon SQS.{ "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'azione Amazon SQS in una AWS IoT regola, consulta AWS IoT Rule actions - Amazon SQS.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'account IAM dell’utente B.
-
Per concedere le autorizzazioni per la risorsa della coda Amazon SQS per l'account A, esegui il comando add-permission.
aws sqs add-permission --queue-urlhttps://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue--labelSendMessagesToMyQueue--aws-account-ids1111-1111-1111--actions SendMessage
Cross-account configurazione per Amazon SNS
Scenario: l'account A invia i dati da un messaggio MQTT a un argomento Amazon SNS dell’account B.
| Account AWS | Account denominato | Description |
|---|---|---|
|
Account A | Operazione delle regole: sns:Publish |
|
Account B | ARN Argomento Amazon SNS: |
Esegui le attività dell'Account A
Note
Per eseguire i seguenti comandi, l'utente IAM deve disporre delle autorizzazioni per iot:CreateTopicRule con la regola ARN come risorsa e le autorizzazioni per le operazioni iam:PassRole con una risorsa come ruolo ARN.
-
Configura AWS CLI utilizzando l'account IAM dell’utente A.
-
Crea un ruolo IAM che si fidi del motore AWS IoT delle regole e allega una policy che consenta l'accesso all'argomento Amazon SNS dell'account B. Ad esempio, comandi e documenti relativi alle policy, consulta Concessione AWS IoT dell'accesso richiesto.
-
Per creare una regola collegata a un argomento, esegui il comando create-topic-rule.
aws iot create-topic-rule --rule-namemyRule--topic-rule-payload file://./my-rule.jsonDi seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/testnell’argomento Amazon SNS specificato. L'istruzione SQL filtra i messaggi e l'ARN del ruolo concede ad AWS IoT l'autorizzazione per inviare il messaggio all’argomento Amazon SNS.{ "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'azione Amazon SNS in una AWS IoT regola, consulta AWS IoT Rule actions - Amazon SNS.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l’account IAM dell'utente B.
-
Per concedere l'autorizzazione alla risorsa dell’argomento Amazon SNS all'account A, esegui il comando add-permission.
aws sns add-permission --topic-arnarn:aws:sns:region:2222-2222-2222:ExampleTopic--labelPublish-Permission--aws-account-id1111-1111-1111--action-name Publish
Cross-account configurazione per Amazon S3
Scenario: l'account A invia i dati da un messaggio MQTT a un bucket Amazon S3 dell’account B.
| Account AWS | Account denominato | Description |
|---|---|---|
|
Account A | Operazione delle regole: s3:PutObject |
|
Account B | ARN bucket Amazon S3: |
Eseguire le attività dell'Account A
Nota
Per eseguire i seguenti comandi, l'utente IAM deve disporre delle autorizzazioni per iot:CreateTopicRule con la regola ARN come risorsa e le autorizzazioni per l’operazione iam:PassRole con una risorsa come ruolo ARN.
-
Configura AWS CLI utilizzando l’account IAM dell'utente A.
-
Crea un ruolo IAM 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 collegata al bucket S3 di destinazione, esegui il comando create-topic-rule.
aws iot create-topic-rule --rule-namemy-rule--topic-rule-payload file://./my-rule.jsonDi seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/testnel bucket Amazon S3 specificato. L'istruzione SQL filtra i messaggi e l'ARN del ruolo concede ad AWS IoT l'autorizzazione per aggiungere il messaggio nel 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’account IAM dell'utente 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::123456789012:root" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
Per ulteriori informazioni, consulta Esempi di policy bucket.
-
Per collegare la policy di bucket al bucket specificato, esegui il comando put-bucket-policy.
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.
Cross-account configurazione per AWS Lambda
Scenario: l'account A richiama una AWS Lambda funzione dell'account B, trasmettendo un messaggio MQTT.
| Account AWS | Account denominato | Description |
|---|---|---|
|
Account A | Operazione delle regole: lambda:InvokeFunction |
|
Account B | L'ARN della funzione Lambda: |
Eseguire le attività dell'Account A
Note
Per eseguire i seguenti comandi, l'utente IAM deve disporre delle autorizzazioni a iot:CreateTopicRule con la regola ARN come risorsa e le autorizzazioni per l’operazione iam:PassRole con risorsa come ruolo ARN.
-
Configura AWS CLI utilizzando l’account IAM dell'utente A.
-
Esegui il comando create-topic-rule per creare una regola che definisca l'accesso tra account alla funzione Lambda dell'account B.
aws iot create-topic-rule --rule-namemy-rule--topic-rule-payload file://./my-rule.jsonDi seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento
iot/testnella funzione Lambda specificata. L'istruzione SQL filtra i messaggi e l'ARN del ruolo concede ad AWS IoT l'autorizzazione per il passaggio dei 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 le azioni delle regole - AWS IoT Lambda.
Esegui le attività dell'Account B
-
Configura AWS CLI utilizzando l'account IAM dell’utente B.
-
Esegui il comando add-permission di Lambda per autorizzare AWS IoT le regole ad attivare la funzione Lambda. Per eseguire il seguente comando, l'utente IAM dovrebbe avere l'autorizzazione per l’operazione
lambda:AddPermission.aws lambda add-permission --function-nameexample-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 dà il permesso 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-rulein 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'account.
1111-1111-1111Note
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.