Acceso a recursos entre cuentas medianteAWS IoTReglas de - 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.

Acceso a recursos entre cuentas medianteAWS IoTReglas de

Puede configurarAWS IoTreglas para el acceso entre cuentas, de modo que los datos ingeridos en temas MQTT de una cuenta se puedan enrutar alAWSservicios, como Amazon SQS y Lambda, de otra cuenta. A continuación, se explica cómo configurarAWS IoTreglas para la ingestión de datos entre cuentas, desde un tema MQTT de una cuenta hasta un destino de otra cuenta.

Las reglas de cuentas cruzadas se pueden configurar mediantepermisos basados en recursosen el recurso de destino. Por lo tanto, solo se pueden habilitar los destinos que admiten permisos basados en recursos para el acceso multicuenta conAWS IoTreglas. Los destinos admitidos incluyen Amazon SQS, Amazon SNS, Amazon S3 yAWS Lambda.

nota

Debe definir la regla en la mismaRegión de AWScomo recurso de otro servicio, de modo que la acción de regla pueda interactuar con ese recurso. Para obtener más información acerca deAWS IoTacciones de reglas de, consulteAWS IoTAcciones de reglas de.

Requisitos previos

Configuración multicuenta 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
1111-1111-1111 Cuenta A Acción de la regla:sqs:SendMessage
2222-2222-2222 Cuenta B Cola de Amazon SQS
  • ARN: arn:aws:sqs:region:2222-2222-2222:ExampleQueue

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

Realice las tareas de la cuenta A

Nota

Para ejecutar los siguientes comandos, el usuario de IAM debe tener permisos paraiot:CreateTopicRulecon el nombre de recurso de Amazon (ARN) de la regla como recurso y permisos paraiam:PassRoleacción con un recurso como ARN del rol.

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta A.

  2. Crear un rol de IAM en el que confíeAWS IoTy adjunta una política que permite el acceso a la cola Amazon SQS de la cuenta B. Consulte comandos y documentos de políticas de ejemplo enConcesiónAWS IoTel acceso requerido.

  3. Para crear una regla que se adjunta a un tema, ejecute laComando create-topic-rule.

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

    Ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados a laiot/testen la cola de Amazon SQS especificada. La instrucción SQL filtra los mensajes y el ARN del rol concede al ARN del rolAWS IoTpermisos para agregar 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 unAWS IoTregla, véaseAWS IoTacciones de reglas - Amazon SQS.

Realice las tareas de la cuenta B

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta B.

  2. Para conceder permisos para el recurso de cola de Amazon SQS a la cuenta A, ejecute lacomando 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 entre 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
1111-1111-1111 Cuenta A Acción de la regla:sns:Publish
2222-2222-2222 Cuenta B ARN del tema de Amazon SNS:arn:aws:sns:region:2222-2222-2222:ExampleTopic

Realice las tareas de la cuenta A

Notas

Para ejecutar los siguientes comandos, el usuario de IAM debe tener permisos paraiot:CreateTopicRulecon ARN de regla como recurso y permisos paraiam:PassRoleacción con un recurso como ARN de rol.

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta A.

  2. Crear un rol de IAM en el que confíeAWS IoTy adjunta una política que permite acceder al tema Amazon SNS de la cuenta B. Por ejemplo, comandos y documentos de políticas, consulteConcesiónAWS IoTel acceso requerido.

  3. Para crear una regla que se adjunta a un tema, ejecute laComando create-topic-rule.

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

    Ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados a laiot/testen el tema de Amazon SNS especificado. La instrucción SQL filtra los mensajes, y el ARN del rol concede a la función ARNAWS IoTpermisos 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 unAWS IoTregla, véaseAWS IoTacciones de reglas - Amazon SNS.

Realice las tareas de la cuenta B

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta B.

  2. Para conceder permiso en el recurso de tema de Amazon SNS a la cuenta A, ejecute lacomando 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 entre 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
1111-1111-1111 Cuenta A Acción de la regla:s3:PutObject
2222-2222-2222 Cuenta B ARN del bucket de Amazon S3:arn:aws:s3:::ExampleBucket

Realice las tareas de la cuenta A

Nota

Para ejecutar los siguientes comandos, el usuario de IAM debe tener permisos paraiot:CreateTopicRulecon la regla ARN como recurso y permisos paraiam:PassRoleacción con un recurso como ARN de rol.

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta A.

  2. Crear un rol de IAM en el que confíeAWS IoTy adjunta una política que permite el acceso al bucket de Amazon S3 de la cuenta B. Por ejemplo, comandos y documentos de políticas, consulteConcesiónAWS IoTel acceso requerido.

  3. Para crear una regla asociada al bucket de S3 de destino, ejecute laComando create-topic-rule.

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

    Ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados a laiot/testen el bucket de Amazon S3 especificado. La instrucción SQL filtra los mensajes, y el ARN del rol concede a la función ARNAWS IoTpermisos para agregar 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 unAWS IoTregla, véaseAWS IoTAcciones de regla: Amazon S3.

Realice las tareas de la cuenta B

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta B.

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

    Ejemplo de archivo de carga que define una política de bucket que confía en el 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, consulteEjemplos de política de bucket.

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

    aws s3api put-bucket-policy --bucket ExampleBucket --policy file://./my-bucket-policy.json
  4. Para que el acceso multicuenta funcione, asegúrate de tener el correctoBlock all public access (Bloquear todo el acceso público)Configuración del . Para obtener más información, consultePrácticas recomendadas de seguridad para Amazon S3.

Configuración entre cuentas paraAWS Lambda

Escenario: La cuenta A invoca unAWS Lambdafunción de la cuenta B, transmitiendo un mensaje MQTT.

Cuenta de AWS Cuenta denominada Descripción
1111-1111-1111 Cuenta A Acción de la regla:lambda:InvokeFunction
2222-2222-2222 Cuenta B ARN de la función Lambda: arn:aws:lambda:region:2222-2222-2222:function:example-function

Realice las tareas de la cuenta A

Notas

Para ejecutar los siguientes comandos, el usuario de IAM debe tener permisos paraiot:CreateTopicRulecon ARN de regla como recurso y permisos paraiam:PassRoleacción con recurso como ARN de rol.

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta A.

  2. Ejecute laComando create-topic-rulepara 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

    Ejemplo de archivo de carga con una regla que inserta todos los mensajes enviados a laiot/testen la función Lambda especificada. La instrucción SQL filtra los mensajes y el ARN del rol concede al ARN del rolAWS IoTpermiso 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 acerca de cómo definir unAWS Lambdaacción en unAWS IoTregla, leerAWS IoTAcciones de Lambda.

Realice las tareas de la cuenta B

  1. ConfigurarAWS CLIutilizando el usuario de IAM de la cuenta B.

  2. Ejecución deComando add-permission de LambdadarAWS IoTpermiso de reglas para activar la función Lambda. Para ejecutar el siguiente comando, el usuario de IAM debe tener permiso paralambda:AddPermissionaction.

    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:

    --principal

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

    --source-arn

    Este campo garantiza que soloarn:aws:iot:region:1111-1111-1111:rule/example-ruleenAWS IoTactiva esta función Lambda y ninguna otra regla en la misma cuenta o diferente puede activar esta función Lambda.

    --source-account

    Este campo garantiza queAWS IoTactiva esta función Lambda solo en nombre del1111-1111-1111account.

    Notas

    Si aparece un mensaje de error «No se ha encontrado la regla» de suAWS Lambdaconsola de función enConfiguración, ignore el mensaje de error y proceda a probar la conexión.