

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès aux ressources entre comptes à l'aide AWS IoT de règles
<a name="accessing-cross-account-resources-using-rules"></a>

Vous pouvez configurer des AWS IoT règles d'accès entre comptes afin que les données ingérées sur les sujets MQTT d'un compte puissent être acheminées vers les AWS services, tels qu'Amazon SQS et Lambda, d'un autre compte. Ce qui suit explique comment configurer des AWS IoT règles pour l'ingestion de données entre comptes, qu'il s'agisse d'un sujet MQTT dans un compte ou d'une destination dans un autre compte. 

Les règles entre comptes peuvent être configurées à l'aide d'[autorisations basées sur les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#TypesPermissions) sur la ressource de destination. Par conséquent, seules les destinations qui prennent en charge les autorisations basées sur les ressources peuvent être activées pour l'accès entre comptes avec des règles. AWS IoT Les destinations prises en charge incluent Amazon SQS, Amazon SNS, Amazon S3 et. AWS Lambda

**Note**  
Pour les destinations prises en charge, à l'exception d'Amazon SQS, vous devez définir la règle de la même manière Région AWS que la ressource d'un autre service afin que l'action de la règle puisse interagir avec cette ressource. Pour plus d'informations sur les actions des AWS IoT règles, consultez la section [Actions des AWS IoT règles](iot-rule-actions.md). Pour plus d'informations sur l'action SQS de la règle, consultez[SQS](sqs-rule-action.md).

## Conditions préalables
<a name="cross-account-prerequisites"></a>
+ [Connaissance des règles AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)
+ Compréhension des [utilisateurs, des [rôles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) et des autorisations basées sur les [ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html#TypesPermissions) IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html)
+ Après avoir [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)installé

## Configuration entre comptes pour Amazon SQS
<a name="cross-account-sqs"></a>

Scénario : le compte A envoie les données d'un message MQTT à la file d'attente Amazon SQS du compte B.


| Compte AWS | Compte désigné comme  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Compte A | Action de la règle sqs:SendMessage | 
| {{2222-2222-2222}} | Compte B | File d’attente Amazon SQS [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/accessing-cross-account-resources-using-rules.html)  | 

**Note**  
[Il n'est pas nécessaire que votre file d'attente Amazon SQS de destination se trouve dans la même zone Région AWS que votre AWS IoT règle.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) Pour plus d'informations sur l'action SQS de la règle, consultez[SQS](sqs-rule-action.md).

**Faire la tâches du compte A**
**Remarque**  
Pour exécuter les commandes suivantes, votre utilisateur IAM doit être autorisé `iot:CreateTopicRule` à utiliser le nom de ressource Amazon (ARN) de la règle comme ressource et à `iam:PassRole` agir avec une ressource comme ARN du rôle.

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte A. 

1. Créez un rôle IAM qui fait confiance au moteur de AWS IoT règles et qui associe une politique autorisant l'accès à la file d'attente Amazon SQS du compte B. Consultez des exemples de commandes et de documents de politique dans la section [Octroi AWS IoT de l'accès requis](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Pour créer une règle attachée à une rubrique, exécutez la [create-topic-rule commande](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}}
   ```

   Voici un exemple de fichier de données utiles avec une règle qui insère tous les messages envoyés au `iot/test`sujet dans la file d'attente Amazon SQS spécifiée. L'instruction SQL filtre les messages et le rôle ARN AWS IoT accorde des permissions d'ajouter le message à la file d'attente 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
   			}
   		}
   	]
   }
   ```

   Pour plus d'informations sur la définition d'une action Amazon SQS dans une AWS IoT règle, consultez [Actions de AWS IoT règles - Amazon SQS.](https://docs.aws.amazon.com/iot/latest/developerguide/sqs-rule-action.html)

**Faire la tâches du compte B**

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte B. 

1. Pour autoriser le compte A à accéder à la ressource de file d'attente Amazon SQS, exécutez la [commande](https://docs.aws.amazon.com/cli/latest/reference/sqs/add-permission.html) 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
   ```

## Configuration de comptes croisés pour Amazon SNS
<a name="cross-account-sns"></a>

Scénario : Le compte A envoie des données d'un message MQTT à une rubrique Amazon SNS du compte B.


| Compte AWS | Compte désigné comme  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Compte A | Action de la règle sns:Publish | 
| {{2222-2222-2222}} | Compte B | ARN de rubrique Amazon SNS : {{arn:aws:sns:region:2222-2222-2222:ExampleTopic}}  | 

**Faire la tâches du compte A**
**Remarques**  
 Pour exécuter les commandes suivantes, votre utilisateur IAM doit être autorisé à utiliser `iot:CreateTopicRule` la règle ARN comme ressource et à effectuer l'`iam:PassRole`action avec une ressource comme ARN de rôle.

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte A. 

1. Créez un rôle IAM qui fait confiance au moteur de AWS IoT règles et qui associe une politique autorisant l'accès à la rubrique Amazon SNS du compte B. Pour des exemples de commandes et de documents de politique, consultez la section [Octroi AWS IoT de l'accès requis](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Pour créer une règle attachée à une rubrique, exécutez la [create-topic-rule commande](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}}
   ```

   Voici un exemple de fichier de données utiles avec une règle qui insère tous les messages envoyés au `iot/test` sujet dans le sujet Amazon SNS spécifié. L'instruction SQL filtre les messages et le rôle ARN accorde les AWS IoT autorisations nécessaires pour envoyer le message au sujet 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"
   			}
   		}
   	]
   }
   ```

   Pour plus d'informations sur la définition d'une action Amazon SNS dans une AWS IoT règle, consultez [Actions de AWS IoT règle - Amazon SNS](https://docs.aws.amazon.com/iot/latest/developerguide/sns-rule-action.html).

**Faire la tâches du compte B**

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte B. 

1. Pour autoriser le compte A à accéder à la ressource thématique Amazon SNS, exécutez la [commande](https://docs.aws.amazon.com/cli/latest/reference/sns/add-permission.html) 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
   ```

## Configuration entre comptes pour Amazon S3
<a name="cross-account-s3"></a>

Scénario : Le compte A envoie des données d'un message MQTT vers un compartiment Amazon S3 du compte B.


| Compte AWS | Compte désigné comme  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Compte A | Action de la règle s3:PutObject | 
| {{2222-2222-2222}} | Compte B | Compartiments Amazon S3 : {{arn:aws:s3:::amzn-s3-demo-bucket}}  | 

**Faire la tâches du compte A**
**Remarque**  
Pour exécuter les commandes suivantes, votre utilisateur IAM doit être autorisé à `iot:CreateTopicRule` utiliser la règle ARN comme ressource et à `iam:PassRole` agir avec une ressource comme ARN de rôle.

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte A. 

1. Créez un rôle IAM qui fait confiance au moteur de AWS IoT règles et qui associe une politique autorisant l'accès au compartiment Amazon S3 du compte B. Pour des exemples de commandes et de documents de politique, consultez la section [Octroi AWS IoT de l'accès requis](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html).

1. Pour créer une règle attachée à votre compartiment S3 cible, exécutez la [create-topic-rule commande](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}}
   ```

   Voici un exemple de fichier de données utiles avec une règle qui insère tous les messages envoyés au `iot/test` sujet dans le compartiment Amazon S3 spécifié. L'instruction SQL filtre les messages et le rôle ARN accorde les AWS IoT autorisations nécessaires pour ajouter le message au compartiment 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"
   			}
   		}
   	]
   }
   ```

   Pour plus d'informations sur la façon de définir une action Amazon S3 dans une AWS IoT règle, consultez [Actions de AWS IoT règle - Amazon S3](https://docs.aws.amazon.com/iot/latest/developerguide/s3-rule-action.html).

**Faire la tâches du compte B**

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte B. 

1. Créez une politique de compartiment qui fait confiance au principal du compte A.

   Voici un exemple de fichier de charge utile qui définit une politique de compartiment qui fait confiance au principal d'un autre compte.  
****  

   ```
   {
       "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/*"
           }
       ]
   }
   ```

   Pour plus d'informations, veuillez consulter [bucket policy examples](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-1).

1. Pour associer la politique de compartiment au compartiment spécifié, exécutez la [put-bucket-policy commande](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. Pour que l'accès entre comptes fonctionne, assurez-vous que les paramètres **Bloquer tout accès public** sont corrects. Pour plus d'informations, consultez [Security Best Practices for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Configuration de comptes multiples pour AWS Lambda
<a name="cross-account-lambda"></a>

Scénario : le compte A invoque une AWS Lambda fonction du compte B en transmettant un message MQTT.


| Compte AWS | Compte désigné comme  | Description | 
| --- | --- | --- | 
| {{1111-1111-1111}} | Compte A | Action de la règle lambda:InvokeFunction | 
| {{2222-2222-2222}} | Compte B | ARN de fonction Lambda : {{ arn:aws:lambda:region:2222-2222-2222:function:example-function}}  | 

**Faire la tâches du compte A**
**Remarques**  
 Pour exécuter les commandes suivantes, votre utilisateur IAM doit être autorisé à `iot:CreateTopicRule` utiliser la règle ARN comme ressource et à `iam:PassRole` agir avec la ressource comme ARN de rôle.

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte A. 

1. Exécutez la [create-topic-rule commande](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) pour créer une règle qui définit l'accès entre comptes à la fonction Lambda du compte B.

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

   Voici un exemple de fichier de charge utile avec une règle qui insère tous les messages envoyés au `iot/test` sujet dans la fonction Lambda spécifiée. L'instruction SQL filtre les messages et l'ARN du rôle accorde AWS IoT l'autorisation de transmettre les données à la fonction 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"
   			}
   		}
   	]
   }
   ```

   Pour plus d'informations sur la définition d'une AWS Lambda action dans une AWS IoT règle, consultez la section [Actions de AWS IoT règles - Lambda](https://docs.aws.amazon.com/iot/latest/developerguide/lambda-rule-action.html).

**Faire la tâches du compte B**

1. [Configurez AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) à l'aide de l'utilisateur IAM du compte B. 

1. Exécutez la [commande add permission de Lambda](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) pour autoriser les AWS IoT règles à activer la fonction Lambda. Pour exécuter la commande suivante, votre utilisateur IAM doit être autorisé à `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"
   ```

   **Options :**

   **--principal**

    Ce champ autorise AWS IoT (représenté par`iot.amazonaws.com`) à appeler la fonction Lambda.

   **--source-arn**

   Ce champ confirme que cette fonction Lambda ne peut être activée que `arn:aws:iot:region:1111-1111-1111:rule/example-rule` dans les AWS IoT déclencheurs et qu'aucune autre règle du même compte ou d'un compte différent ne peut activer cette fonction Lambda.

   **--source-account**

   Ce champ confirme que AWS IoT cette fonction Lambda est activée uniquement pour le `1111-1111-1111` compte.
**Remarques**  
Si le message d'erreur « La règle est introuvable » s'affiche sur la console de votre AWS Lambda fonction sous **Configuration**, ignorez le message d'erreur et testez la connexion.