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 en los temas de MQTT de una cuenta puedan enrutarse a los AWS servicios, como Amazon SQS y Lambda, de otra cuenta. A continuación, se explica cómo configurar AWS IoT reglas para la ingesta de datos entre cuentas, desde un tema de MQTT 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 mediante reglas. AWS IoT Entre los destinos admitidos se incluyen Amazon SQS, Amazon S3 y AWS Lambda.
nota
Para los destinos admitidos, excepto Amazon SQS, debe 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, consulte las acciones de las AWS IoT reglas. Para obtener más información sobre la acción SQS de la regla, consulteSQS.
Requisitos previos
-
Familiaridad con las reglas AWS IoT
-
Comprensión de los usuarios, roles y permisos de IAM basados en recursos de IAM
-
Después de haber instalado AWS CLI
Configuración de varias cuentas para Amazon SQS
Escenario: la cuenta A envía datos de un mensaje MQTT a la cola de Amazon SQS de la cuenta B.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: sqs:SendMessage |
|
Cuenta B | Cola de Amazon SQS
|
nota
La cola de Amazon SQS de destino no tiene por qué coincidir con la Región de AWS regla.AWS IoT Para obtener más información sobre la acción SQS de la regla, consulte. SQS
Realizar las tareas de la cuenta A
Nota
Para ejecutar los siguientes comandos, el usuario de IAM debe tener permisos para iot:CreateTopicRule
con el nombre de recurso de Amazon (ARN) de la regla como recurso y permisos para iam:PassRole
con un recurso como ARN del rol.
-
Configure AWS CLI con el usuario de IAM de la cuenta A.
-
Cree un rol de IAM que confíe en el motor de AWS IoT reglas y adjunte una política que permita el acceso a la cola Amazon SQS de la cuenta B. Consulte ejemplos de comandos y documentos de política en Concesión AWS IoT del acceso requerido.
-
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
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 cola de Amazon SQS especificada. La sentencia SQL filtra los mensajes y el rol ARN concede los permisos AWS IoT para añadir el mensaje a la cola de 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 } } ] }
Para obtener más información sobre cómo definir una acción de Amazon SQS en una AWS IoT regla, consulte AWS IoT Rule actions: Amazon SQS.
Realizar las tareas de la cuenta B
-
Configure AWS CLI con el usuario de IAM de la cuenta B.
-
aws sqs add-permission --queue-url
https://sqs.region.amazonaws.com/2222-2222-2222/ExampleQueue
--labelSendMessagesToMyQueue
--aws-account-ids1111-1111-1111
--actions SendMessage
Configuración de varias cuentas para Amazon SNS
Escenario: La cuenta A envía datos de un mensaje MQTT a un tema de Amazon SNS de la cuenta B.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: sns:Publish |
|
Cuenta B | ARN del tema de Amazon SNS: |
Realizar las tareas de la cuenta A
Notas
Para ejecutar los siguientes comandos, su usuario de IAM debe tener permisos para iot:CreateTopicRule
con la regla ARN como recurso y permisos para la acción iam:PassRole
con un recurso como rol ARN.
-
Configure AWS CLI con el usuario de IAM de la cuenta A.
-
Cree un rol de IAM que confíe en el motor de AWS IoT reglas y adjunte una política que permita el acceso al tema Amazon SNS de la cuenta B. Para ver ejemplos de comandos y documentos de políticas, consulte Concesión AWS IoT del acceso requerido.
-
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
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 el tema de Amazon SNS especificado. La sentencia SQL filtra los mensajes y el ARN del rol concede AWS IoT permisos para enviar el mensaje al tema de 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" } } ] }
Para obtener más información sobre cómo definir una acción de Amazon SNS en una AWS IoT regla, consulte AWS IoT Rule actions: Amazon SNS.
Realizar las tareas de la cuenta B
-
Configure AWS CLI con el usuario de IAM de la cuenta B.
-
Para dar permiso sobre el recurso de temas de Amazon SNS a la cuenta A, ejecute el 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
Configuración de varias cuentas para Amazon S3
Escenario: La cuenta A envía datos de un mensaje MQTT a un bucket de Amazon S3 de la cuenta B.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: s3:PutObject |
|
Cuenta B | ARN del bucket de Amazon S3: |
Realizar las tareas de la cuenta A
Nota
Para ejecutar los siguientes comandos, su usuario de IAM debe tener permisos para iot:CreateTopicRule
con la regla ARN como recurso y permisos para la acción iam:PassRole
con un recurso como rol ARN.
-
Configure AWS CLI con el usuario de IAM de la cuenta A.
-
Cree un rol de IAM 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 Otorgar AWS IoT el acceso requerido.
-
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 sentencia SQL filtra los mensajes y el rol ARN concede los permisos AWS IoT para añadir el mensaje al bucket de Amazon S3.{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "bucketName": "ExampleBucket", "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
-
Configure AWS CLI con el usuario de IAM de la cuenta B.
-
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:::ExampleBucket/*" } ] }
Para obtener más información, consulte Ejemplos de política de bucket.
-
Para adjuntar la política de bucket al bucket especificado, ejecute el put-bucket-policy comando.
aws s3api put-bucket-policy --bucket ExampleBucket --policy file://./
my-bucket-policy.json
-
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 mensaje MQTT.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: lambda:InvokeFunction |
|
Cuenta B | ARN de la función de Lambda: |
Realizar las tareas de la cuenta A
Notas
Para ejecutar los siguientes comandos, su usuario de IAM debe tener permisos para iot:CreateTopicRule
con la regla ARN como recurso y permisos para la acción iam:PassRole
con un recurso como rol ARN.
-
Configure AWS CLI con el usuario de IAM de la cuenta A.
-
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 sentencia SQL filtra los mensajes y el ARN del rol 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
-
Configure AWS CLI con el usuario de IAM de la cuenta B.
-
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, su usuario de IAM debe tener permiso para una acción
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"Opciones:
--entidad principal
Este campo da permiso a AWS IoT (representado por
iot.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.