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
-
Familiaridad con las reglas AWS IoT
-
Comprensión de IAMlos usuarios, las funciones y los permisos basados en recursos
-
Después de haber instalado AWS CLI
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 |
---|---|---|
|
Cuenta A | Acción de la regla: sqs:SendMessage |
|
Cuenta B | SQSCola de Amazon
|
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.
-
Configure AWS CLI utilizando el IAM usuario de la cuenta A.
-
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.
-
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
-
Configura AWS CLI con el IAM usuario de la cuenta B.
-
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
--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 MQTT mensaje a un SNS tema de Amazon de la cuenta B.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: sns:Publish |
|
Cuenta B | SNSTema de AmazonARN: |
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.
-
Configura AWS CLI con el IAM usuario de la cuenta A.
-
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.
-
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
-
Configura AWS CLI con el IAM usuario de la cuenta B.
-
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
--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 MQTT mensaje 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 | Cubeta Amazon S3ARN: |
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.
-
Configura AWS CLI con el IAM usuario de la cuenta A.
-
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.
-
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
-
Configure AWS CLI con el IAM usuario 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:::amzn-s3-demo-bucket/*" } ] }
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 amzn-s3-demo-bucket --policy file://./
amzn-s3-demo-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 MQTT mensaje.
Cuenta de AWS | Cuenta denominada | Descripción |
---|---|---|
|
Cuenta A | Acción de la regla: lambda:InvokeFunction |
|
Cuenta B | Función Lambda: ARN |
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.
-
Configure AWS CLI con el IAM usuario 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 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
-
Configure AWS CLI con el IAM usuario 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, el IAM usuario debe tener permiso para realizar acciones.
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.