

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Acessando recursos entre contas usando AWS IoT regras
<a name="accessing-cross-account-resources-using-rules"></a>

Você pode configurar AWS IoT regras para acesso entre contas para que os dados ingeridos nos tópicos do MQTT de uma conta possam ser roteados para os AWS serviços, como Amazon SQS e Lambda, de outra conta. A seguir, explicamos como configurar AWS IoT regras para a ingestão de dados entre contas, de um tópico do MQTT em uma conta até um destino em outra conta. 

Cross-account as regras podem ser configuradas usando [permissões baseadas em recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#TypesPermissions) no recurso de destino. Portanto, somente destinos que oferecem suporte a permissões baseadas em recursos podem ser habilitados para o acesso entre contas com regras. AWS IoT Os destinos compatíveis incluem Amazon SQS, Amazon SNS, Amazon S3 e AWS Lambda. 

**nota**  
Para os destinos suportados, exceto para o Amazon SQS, você deve definir a regra da mesma forma Região da AWS que o recurso de outro serviço para que a ação da regra possa interagir com esse recurso. Para obter mais informações sobre ações de AWS IoT regras, consulte [ações de AWS IoT regras](iot-rule-actions.md). Para obter mais informações sobre a ação de SQS da regra, consulte [SQS](sqs-rule-action.md).

## Pré-requisitos
<a name="cross-account-prerequisites"></a>
+ Familiaridade com as [AWS IoT regras](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)
+ Uma compreensão dos [usuários](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html), [funções](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) e [permissões baseadas em recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html#TypesPermissions) do IAM
+ Tendo [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) instalado

## Cross-account configuração para Amazon SQS
<a name="cross-account-sqs"></a>

Cenário: a conta A envia dados de uma mensagem MQTT para a fila do Amazon SQS da conta B.


| Conta da AWS | Conta referida como  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Conta A | Ação da regra: sqs:SendMessage | 
| {{2222-2222-2222}} | Conta B | Fila do Amazon SQS [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/accessing-cross-account-resources-using-rules.html)  | 

**nota**  
[Sua fila de destino do Amazon SQS não precisa estar na mesma fila da sua Região da AWS regra.AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) Para obter mais informações sobre a ação de SQS da regra, consulte [SQS](sqs-rule-action.md).

**Realizar as tarefas da Conta A**
**Observação**  
Para executar os comandos a seguir, seu usuário do IAM deve ter permissões para `iot:CreateTopicRule` usar o nome do recurso da Amazon (ARN) da regra como um recurso e permissões para `iam:PassRole` agir com um recurso como o ARN da função.

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta A. 

1. Crie uma função do IAM que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso à fila do Amazon SQS da conta B. Veja exemplos de comandos e documentos de política em [Concedendo AWS IoT o acesso necessário](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Para criar uma regra anexada a um tópico, execute o comando [criar-tópico-regra](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}}
   ```

   Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao tópico `iot/test` na fila especificada do Amazon SQS. A instrução SQL filtra as mensagens e o ARN da função concede permissões AWS IoT para adicionar a mensagem à fila do 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 obter mais informações sobre como definir uma ação do Amazon SQS em uma AWS IoT regra, consulte [ações de AWS IoT regras - Amazon SQS.](https://docs.aws.amazon.com/iot/latest/developerguide/sqs-rule-action.html)

**Realizar as tarefas da Conta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta B. 

1. Para conceder permissões para o recurso de fila do Amazon SQS para a conta A, execute o [comando adicionar-permissão.](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
   ```

## Cross-account configuração para Amazon SNS
<a name="cross-account-sns"></a>

Cenário: a conta A envia dados de uma mensagem MQTT para um tópico do Amazon SNS da conta B.


| Conta da AWS | Conta referida como  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Conta A | Ação da regra: sns:Publish | 
| {{2222-2222-2222}} | Conta B | ARN do tópico do Amazon SNS: {{arn:aws:sns:region:2222-2222-2222:ExampleTopic}}  | 

**Realizar as tarefas da Conta A**
**Observações**  
 Para executar os comandos a seguir, seu usuário do IAM deve ter permissões para `iot:CreateTopicRule` usar o ARN da regra como recurso e permissões para a ação `iam:PassRole` com um recurso como ARN da função.

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta A. 

1. Crie uma função do IAM que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso ao tópico do Amazon SNS da conta B. Por exemplo, comandos e documentos de política, consulte [Concedendo AWS IoT o acesso necessário](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Para criar uma regra anexada a um tópico, execute o comando [criar-tópico-regra](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}}
   ```

   Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao tópico `iot/test` no tópico especificado do Amazon SNS. A instrução SQL filtra as mensagens e o ARN da função concede permissões AWS IoT para enviar a mensagem ao tópico do 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 obter mais informações sobre como definir uma ação do Amazon SNS em uma AWS IoT regra, consulte [Ações de AWS IoT regras - Amazon SNS](https://docs.aws.amazon.com/iot/latest/developerguide/sns-rule-action.html).

**Realizar as tarefas da Conta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta B. 

1. Para conceder permissão no recurso de tópico do Amazon SNS à conta A, execute o [comando adicionar-permissão](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
   ```

## Cross-account configuração para Amazon S3
<a name="cross-account-s3"></a>

Cenário: a conta A envia dados de uma mensagem MQTT para um bucket do Amazon S3 da conta B.


| Conta da AWS | Conta referida como  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Conta A | Ação da regra: s3:PutObject | 
| {{2222-2222-2222}} | Conta B | Bucket do Amazon S3: {{arn:aws:s3:::amzn-s3-demo-bucket}}  | 

**Realizar as tarefas da Conta A**
**Observação**  
Para executar os comandos a seguir, seu usuário do IAM deve ter permissões para `iot:CreateTopicRule` usar o ARN da regra como um recurso e permissões para `iam:PassRole` agir com um recurso como ARN da função.

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta A. 

1. Crie uma função do IAM que confie no mecanismo de AWS IoT regras e anexe uma política que permita acesso ao bucket Amazon S3 da conta B. Por exemplo, comandos e documentos de política, consulte [Concedendo AWS IoT o acesso necessário](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Para criar uma regra anexada ao bucket S3 de destino, execute o comando [criar-tópico-regra](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}}
   ```

   Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas ao tópico `iot/test` no bucket do Amazon S3 especificado. A instrução SQL filtra as mensagens e o ARN da função concede permissões AWS IoT para adicionar a mensagem ao bucket do 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 obter mais informações sobre como definir uma ação do Amazon S3 em uma AWS IoT regra, consulte [Ações de AWS IoT regras - Amazon S3](https://docs.aws.amazon.com/iot/latest/developerguide/s3-rule-action.html).

**Realizar as tarefas da Conta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta B. 

1. Crie uma política de bucket que confie na entidade principal da conta A.

   Veja a seguir um exemplo de arquivo de carga útil que define uma política de bucket que confia na entidade principal de outra conta.  
****  

   ```
   {
       "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 obter mais informações, consulte [Exemplos de políticas de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-1).

1. Para anexar a política de bucket ao bucket especificado, execute o [comando aplicar-política-bucket](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 fazer o acesso entre contas funcionar, certifique-se de ter as configurações corretas de **Bloquear todo o acesso público**. Para obter mais informações, consulte [Práticas recomendadas de segurança para o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Cross-account configuração para AWS Lambda
<a name="cross-account-lambda"></a>

Cenário: a conta A invoca uma AWS Lambda função da conta B, transmitindo uma mensagem MQTT.


| Conta da AWS | Conta referida como  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Conta A | Ação da regra: lambda:InvokeFunction | 
| {{2222-2222-2222}} | Conta B | ARN da função do Lambda: {{ arn:aws:lambda:region:2222-2222-2222:function:example-function}}  | 

**Realizar as tarefas da Conta A**
**Observações**  
 Para executar os comandos a seguir, seu usuário do IAM deve ter permissões para `iot:CreateTopicRule` usar o ARN da regra como um recurso e permissões para `iam:PassRole` agir com o recurso como ARN da função.

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta A. 

1. Execute o [comando criar-tópico-regra ](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) para criar uma regra que defina o acesso entre contas à função do Lambda da conta B.

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

   Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas para o tópico `iot/test` em uma função do Lambda especificada. A instrução SQL filtra as mensagens e o ARN da função concede permissão AWS IoT para transmitir os dados para a função do 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 obter mais informações sobre como definir uma AWS Lambda ação em uma AWS IoT regra, leia [Ações de AWS IoT regras - Lambda](https://docs.aws.amazon.com/iot/latest/developerguide/lambda-rule-action.html).

**Realizar as tarefas da Conta B**

1. [Configure AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) usando o usuário do IAM da conta B. 

1. Execute o [comando add-permission do Lambda para dar permissão](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) às AWS IoT regras para ativar a função Lambda. Para executar o comando a seguir, seu usuário do IAM deve ter permissão para `lambda:AddPermission` agir.

   ```
   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"
   ```

   **Opções:**

   **--entidade principal**

    Esse campo dá permissão para AWS IoT (representado por`iot.amazonaws.com`) chamar a função Lambda.

   **--arn de origem**

   Este campo confirma que apenas `arn:aws:iot:region:1111-1111-1111:rule/example-rule` nos acionadores AWS IoT esta função do Lambda e nenhuma outra regra na mesma conta ou em conta diferente pode ativar esta função do Lambda.

   **--conta de origem**

   Esse campo confirma que AWS IoT ativa essa função Lambda somente em nome da conta. `1111-1111-1111`
**Observações**  
Se você vir uma mensagem de erro "A regra não foi encontrada" no console da sua AWS Lambda função em **Configuração**, ignore a mensagem de erro e prossiga para testar a conexão.