

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
<a name="accessing-cross-account-resources-using-rules"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#TypesPermissions) 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](iot-rule-actions.md). Para obtener más información sobre la acción de SQS de una regla, consulte [SQS](sqs-rule-action.md).

## Requisitos previos
<a name="cross-account-prerequisites"></a>
+ Familiaridad con las [reglas AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)
+ Comprensión de los [usuarios](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html), [roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) y [permisos de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html#TypesPermissions) basados en recursos de IAM
+ Después de haber instalado [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)

## Configuración de varias cuentas para Amazon SQS
<a name="cross-account-sqs"></a>

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  | Description (Descripción) | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Cuenta A | Acción de la regla: sqs:SendMessage | 
| {{2222-2222-2222}} | Cuenta B | Cola de Amazon SQS [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/accessing-cross-account-resources-using-rules.html)  | 

**nota**  
[La cola de Amazon SQS de destino no tiene por qué coincidir con la Región de AWS regla.AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) Para obtener más información sobre la acción de SQS de una regla, consulte [SQS](sqs-rule-action.md).

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

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta A. 

1. 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](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html) del acceso requerido.

1. Para crear una regla adjunta a un tema, ejecute el [create-topic-rule comando](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   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.](https://docs.aws.amazon.com/iot/latest/developerguide/sqs-rule-action.html)

**Realizar las tareas de la cuenta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta B. 

1. [Para conceder permisos para el recurso de cola de Amazon SQS a la cuenta A, ejecute el comando add-permission.](https://docs.aws.amazon.com/cli/latest/reference/sqs/add-permission.html)

   ```
   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
<a name="cross-account-sns"></a>

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  | Description (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}}  | 

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

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta A. 

1. 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](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Para crear una regla adjunta a un tema, ejecute el [create-topic-rule comando](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   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 rol ARN concede los permisos AWS IoT 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](https://docs.aws.amazon.com/iot/latest/developerguide/sns-rule-action.html).

**Realizar las tareas de la cuenta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta B. 

1. Para dar permiso sobre el recurso de temas de Amazon SNS a la cuenta A, ejecute el [comando add-permission](https://docs.aws.amazon.com/cli/latest/reference/sns/add-permission.html).

   ```
   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
<a name="cross-account-s3"></a>

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  | Description (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:::amzn-s3-demo-bucket}}  | 

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

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta A. 

1. 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.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html)

1. Para crear una regla que se adjunte al bucket S3 de destino, ejecuta el [create-topic-rule comando](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html).

   ```
   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": "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](https://docs.aws.amazon.com/iot/latest/developerguide/s3-rule-action.html).

**Realizar las tareas de la cuenta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta B. 

1. 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::123456789012: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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-1).

1. Para adjuntar la política de bucket al bucket especificado, ejecute el [put-bucket-policy comando](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html).

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://./{{amzn-s3-demo-bucket-policy.json}}
   ```

1. 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Configuración multicuenta para AWS Lambda
<a name="cross-account-lambda"></a>

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  | Description (Descripción) | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Cuenta A | Acción de la regla: lambda:InvokeFunction | 
| {{2222-2222-2222}} | Cuenta B | ARN de la función de Lambda: {{ arn:aws:lambda:region:2222-2222-2222:function:example-function}}  | 

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

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta A. 

1. Ejecute el [create-topic-rule comando](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) 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 de rol concede permiso AWS IoT para pasar los datos a la función de 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](https://docs.aws.amazon.com/iot/latest/developerguide/lambda-rule-action.html).

**Realizar las tareas de la cuenta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) con el usuario de IAM de la cuenta B. 

1. Ejecute el [comando add-permission de Lambda para dar permiso](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) 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}} --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 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.