Accesso alle risorse di più account utilizzando le regole AWS IoT - AWS IoT Core

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

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
1111-1111-1111 Account A Operazione delle regole: sqs:SendMessage
2222-2222-2222 Account B SQSCoda Amazon
  • ARN: arn:aws:sqs:region:2222-2222-2222:ExampleQueue

  • URL: https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue

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

  1. Configura AWS CLI utilizzando l'utente dell'IAMaccount A.

  2. 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.

  3. 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/testargomento 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
  1. Configura AWS CLI utilizzando l'IAMutente dell'account B.

  2. 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 --label SendMessagesToMyQueue --aws-account-ids 1111-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
1111-1111-1111 Account A Operazione delle regole: sns:Publish
2222-2222-2222 Account B SNSArgomento AmazonARN: arn:aws:sns:region:2222-2222-2222:ExampleTopic
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:PassRoleazione con una risorsa come ruolo. ARN

  1. Configura AWS CLI utilizzando l'utente dell'IAMaccount A.

  2. 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.

  3. 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/testargomento 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
  1. Configura AWS CLI utilizzando l'IAMutente dell'account B.

  2. 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 --label Publish-Permission --aws-account-id 1111-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
1111-1111-1111 Account A Operazione delle regole: s3:PutObject
2222-2222-2222 Account B Bucket Amazon S3: ARN arn:aws:s3:::amzn-s3-demo-bucket
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

  1. Configura AWS CLI utilizzando l'utente dell'IAMaccount A.

  2. 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.

  3. 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
  1. Configura AWS CLI utilizzando l'utente dell'IAMaccount B.

  2. 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.

  3. 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
  4. 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
1111-1111-1111 Account A Operazione delle regole: lambda:InvokeFunction
2222-2222-2222 Account B Funzione Lambda: ARN arn:aws:lambda:region:2222-2222-2222:function:example-function
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

  1. Configura AWS CLI utilizzando l'utente dell'IAMaccount A.

  2. 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
  1. Configura AWS CLI utilizzando l'IAMutente dell'account B.

  2. 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 --region us-east-1 --principal iot.amazonaws.com --source-arn arn:aws:iot:region:1111-1111-1111:rule/example-rule --source-account 1111-1111-1111 --statement-id "unique_id" --action "lambda:InvokeFunction"

    Opzioni:

    --principal

    Questo campo consente a AWS IoT (rappresentato daiot.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-1111account.

    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.