Acceder a los recursos de varias cuentas mediante reglas AWS IoT - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceder a los recursos de varias cuentas mediante reglas AWS IoT

Puede configurar AWS IoT reglas para el acceso entre cuentas para que los datos ingeridos sobre MQTT temas de una cuenta se puedan enrutar a los AWS servicios, como Amazon y SQS Lambda, de otra cuenta. A continuación, se explica cómo configurar AWS IoT reglas para la ingesta de datos entre cuentas, desde un MQTT tema de una cuenta hasta un destino de otra cuenta.

Las reglas multicuenta se pueden configurar mediante permisos basados en recursos en el recurso de destino. Por lo tanto, solo los destinos que admiten permisos basados en recursos pueden habilitarse para el acceso entre cuentas con reglas. AWS IoT Los destinos admitidos incluyen AmazonSQS, AmazonSNS, Amazon S3 y AWS Lambda.

nota

Para los destinos admitidos, excepto AmazonSQS, debes definir la regla al Región de AWS igual que el recurso de otro servicio para que la acción de la regla pueda interactuar con ese recurso. Para obtener más información sobre las acciones de las AWS IoT reglas, consulta las acciones de las AWS IoT reglas. Para obtener más información sobre la SQS acción de la regla, consulteSQS.

Requisitos previos

Configuración de varias cuentas para Amazon SQS

Escenario: La cuenta A envía datos de un MQTT mensaje a la SQS cola de Amazon de la cuenta B.

Cuenta de AWS Cuenta denominada Descripción
1111-1111-1111 Cuenta A Acción de la regla: sqs:SendMessage
2222-2222-2222 Cuenta B SQSCola de Amazon
  • ARN: arn:aws:sqs:region:2222-2222-2222:ExampleQueue

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

nota

La SQS cola de Amazon de destino no tiene por qué ser la misma que la de tu Región de AWS AWS IoT regla. Para obtener más información sobre la SQS acción de la regla, consultaSQS.

Realizar las tareas de la cuenta A
Nota

Para ejecutar los siguientes comandos, el IAM usuario debe tener permisos para iot:CreateTopicRule utilizar el nombre de recurso de Amazon (ARN) de la regla como recurso y permisos para iam:PassRole actuar con un recurso como funciónARN.

  1. Configure AWS CLI utilizando el IAM usuario de la cuenta A.

  2. Crea un IAM rol que confíe en el motor de AWS IoT reglas y adjunta una política que permita el acceso a la SQS cola de Amazon de la cuenta B. Consulta ejemplos de comandos y documentos de política en Cómo conceder AWS IoT el acceso requerido.

  3. Para crear una regla adjunta a un tema, ejecute el create-topic-rule comando.

    aws iot create-topic-rule --rule-name myRule --topic-rule-payload file://./my-rule.json

    El siguiente es un ejemplo de archivo de carga útil con una regla que inserta todos los mensajes enviados al iot/test tema en la SQS cola de Amazon especificada. La SQL declaración filtra los mensajes y el rol ARN concede AWS IoT permisos para añadir el mensaje a la SQS cola de Amazon.

    { "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 } } ] }

    Para obtener más información sobre cómo definir una SQS acción de Amazon en una AWS IoT regla, consulta AWS IoT Rule actions: Amazon SQS.

Realizar las tareas de la cuenta B
  1. Configura AWS CLI con el IAM usuario de la cuenta B.

  2. Para conceder permisos para el recurso de SQS cola de Amazon a la cuenta A, ejecuta el 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

Configuración de varias cuentas para Amazon SNS

Escenario: la cuenta A envía datos de un MQTT mensaje a un SNS tema de Amazon de la cuenta B.

Cuenta de AWS Cuenta denominada Descripción
1111-1111-1111 Cuenta A Acción de la regla: sns:Publish
2222-2222-2222 Cuenta B SNSTema de AmazonARN: arn:aws:sns:region:2222-2222-2222:ExampleTopic
Realizar las tareas de la cuenta A
Notas

Para ejecutar los siguientes comandos, el IAM usuario debe tener permisos para iot:CreateTopicRule utilizar la regla ARN como recurso y permisos para la iam:PassRole acción con un recurso como rolARN.

  1. Configura AWS CLI con el IAM usuario de la cuenta A.

  2. Crea un IAM rol que confíe en el motor de AWS IoT reglas y adjunta una política que permita el acceso al SNS tema de Amazon de la cuenta B. Para ver ejemplos de comandos y documentos de políticas, consulta Cómo conceder AWS IoT el acceso requerido.

  3. Para crear una regla adjunta a un tema, ejecute el create-topic-rule comando.

    aws iot create-topic-rule --rule-name myRule --topic-rule-payload file://./my-rule.json

    El siguiente es un ejemplo de archivo de carga útil con una regla que inserta todos los mensajes enviados al iot/test tema en el SNS tema de Amazon especificado. La SQL declaración filtra los mensajes y el rol ARN concede AWS IoT permisos para enviar el mensaje al SNS tema de Amazon.

    { "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" } } ] }

    Para obtener más información sobre cómo definir una SNS acción de Amazon en una AWS IoT regla, consulta AWS IoT Rule actions: Amazon SNS.

Realizar las tareas de la cuenta B
  1. Configura AWS CLI con el IAM usuario de la cuenta B.

  2. Para conceder permiso sobre el recurso SNS temático de Amazon a la cuenta A, ejecuta el 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

Configuración de varias cuentas para Amazon S3

Escenario: la cuenta A envía datos de un MQTT mensaje a un bucket de Amazon S3 de la cuenta B.

Cuenta de AWS Cuenta denominada Descripción
1111-1111-1111 Cuenta A Acción de la regla: s3:PutObject
2222-2222-2222 Cuenta B Cubeta Amazon S3ARN: arn:aws:s3:::amzn-s3-demo-bucket
Realizar las tareas de la cuenta A
Nota

Para ejecutar los siguientes comandos, el IAM usuario debe tener permisos para iot:CreateTopicRule utilizar la regla ARN como recurso y permisos para iam:PassRole actuar con un recurso como rolARN.

  1. Configura AWS CLI con el IAM usuario de la cuenta A.

  2. Cree un IAM rol que confíe en el motor de AWS IoT reglas y adjunte una política que permita el acceso al bucket de Amazon S3 de la cuenta B. Para ver ejemplos de comandos y documentos de políticas, consulte Concesión AWS IoT del acceso requerido.

  3. Para crear una regla que se adjunte al bucket S3 de destino, ejecuta el create-topic-rule comando.

    aws iot create-topic-rule --rule-name my-rule --topic-rule-payload file://./my-rule.json

    A continuación, se muestra un ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados al tema iot/test en el bucket de Amazon S3 especificado. La SQL declaración filtra los mensajes y el rol ARN concede AWS IoT permisos para añadir el mensaje al bucket de 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" } } ] }

    Para obtener más información sobre cómo definir una acción de Amazon S3 en una AWS IoT regla, consulte AWS IoT Rule actions: Amazon S3.

Realizar las tareas de la cuenta B
  1. Configure AWS CLI con el IAM usuario de la cuenta B.

  2. Cree una política de bucket que confíe en la entidad principal de la cuenta A.

    El siguiente es un ejemplo de archivo de carga útil que define una política de bucket que confía en la entidad principal de otra cuenta.

    { "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/*" } ] }

    Para obtener más información, consulte Ejemplos de política de bucket.

  3. Para adjuntar la política de bucket al bucket especificado, ejecute el put-bucket-policy comando.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./amzn-s3-demo-bucket-policy.json
  4. Para que el acceso entre cuentas funcione, asegúrese de que tiene la configuración correcta de Bloquear todo acceso público. Para obtener más información, consulte Prácticas recomendadas de seguridad para Amazon S3.

Configuración multicuenta para AWS Lambda

Escenario: la cuenta A invoca una AWS Lambda función de la cuenta B y envía un MQTT mensaje.

Cuenta de AWS Cuenta denominada Descripción
1111-1111-1111 Cuenta A Acción de la regla: lambda:InvokeFunction
2222-2222-2222 Cuenta B Función Lambda: ARN arn:aws:lambda:region:2222-2222-2222:function:example-function
Realizar las tareas de la cuenta A
Notas

Para ejecutar los siguientes comandos, el IAM usuario debe tener permisos para iot:CreateTopicRule utilizar la regla ARN como recurso y permisos para iam:PassRole actuar con el recurso como rolARN.

  1. Configure AWS CLI con el IAM usuario de la cuenta A.

  2. Ejecute el create-topic-rule comando para crear una regla que defina el acceso entre cuentas a la función Lambda de la cuenta B.

    aws iot create-topic-rule --rule-name my-rule --topic-rule-payload file://./my-rule.json

    A continuación se muestra un archivo de carga útil de ejemplo con una regla que inserta todos los mensajes enviados al tema iot/test en la función de Lambda especificada. La SQL sentencia filtra los mensajes y el rol ARN concede AWS IoT permiso para pasar los datos a la función 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" } } ] }

    Para obtener más información sobre cómo definir una AWS Lambda acción en una AWS IoT regla, lee Acciones de la AWS IoT regla: Lambda.

Realizar las tareas de la cuenta B
  1. Configure AWS CLI con el IAM usuario de la cuenta B.

  2. Ejecute el comando add-permission de Lambda para dar permiso a AWS IoT las reglas para activar la función Lambda. Para ejecutar el siguiente comando, el IAM usuario debe tener permiso para realizar acciones. 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"

    Opciones:

    --entidad principal

    Este campo da permiso a AWS IoT (representado poriot.amazonaws.com) para llamar a la función Lambda.

    --source-arn

    Este campo confirma que solo arn:aws:iot:region:1111-1111-1111:rule/example-rule en AWS IoT activa esta función de Lambda y que ninguna otra regla de la misma cuenta o de otra diferente puede activar esta función de Lambda.

    --source-account

    Este campo confirma que AWS IoT activa esta función Lambda solo en nombre de la 1111-1111-1111 cuenta.

    Notas

    Si aparece el mensaje de error “No se ha encontrado la regla” en la consola de la función AWS Lambda , en la sección Configuración, ignore el mensaje de error y proceda a probar la conexión.