

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.

# Abonnement d'une file d'attente Amazon SQS à une rubrique Amazon SNS
<a name="subscribe-sqs-queue-to-sns-topic"></a>

Pour permettre à une rubrique Amazon SNS d'envoyer des messages à une file d'attente Amazon SQS, choisissez l'une des options suivantes :
+ Utilisez la [console Amazon SQS](https://console.aws.amazon.com/sqs/), ce qui simplifie le processus. Pour plus d'informations, consultez [Abonnement d'une file d'attente Amazon SQS à une rubrique Amazon SNS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) dans le *Guide du développeur Amazon Simple Queue Service*.
+ Procédez comme suit : 

  1. [Obtenez l'Amazon Resource Name (ARN) de la file d'attente à laquelle vous souhaitez envoyer des messages et de la rubrique à laquelle vous souhaitez abonner la file d'attente.](#SendMessageToSQS.arn)

  1. [Accordez l'autorisation `sqs:SendMessage` à la rubrique Amazon SNS afin qu'elle puisse envoyer des messages à la file d'attente.](#SendMessageToSQS.sqs.permissions)

  1. [Abonnez la file d'attente à la rubrique Amazon SNS.](#SendMessageToSQS.subscribe)

  1. [Accordez aux utilisateurs IAM ou à Comptes AWS les autorisations d'effectuer une publication dans la rubrique Amazon SNS et de lire les messages à partir de la file d'attente Amazon SQS.](#SendMessageToSQS.iam.permissions)

  1. [Testez la procédure en publiant un message dans la rubrique et en le lisant à partir de la file d'attente.](#SendMessageToSQS.test)

Pour découvrir comment configurer une rubrique pour envoyer des messages à une file d'attente située dans un autre compte  AWS, consultez [Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte](sns-send-message-to-sqs-cross-account.md).

Pour voir un CloudFormation modèle qui crée une rubrique qui envoie des messages à deux files d'attente, voir[Automatisez la messagerie Amazon SNS vers Amazon SQS avec AWS CloudFormation](SendMessageToSQS.cloudformation.md).

## Étape 1 : obtenir l'ARN de la file d'attente et de la rubrique
<a name="SendMessageToSQS.arn"></a>

Lorsque vous abonnez une file d'attente à votre rubrique, vous avez besoin d'une copie de l'ARN de la file d'attente. De même, lorsque vous accordez à la rubrique l'autorisation d'envoyer des messages à la file d'attente, vous avez besoin d'une copie de l'ARN de la rubrique.

Pour obtenir l'ARN de la file d'attente, vous pouvez utiliser la console Amazon SQS ou l'action [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)API.

**Pour obtenir l'ARN de la file d'attente à partir de la console Amazon SQS**

1. Connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Cochez la case correspondant à la file d'attente dont vous souhaitez obtenir l'ARN.

1. Sur l'onglet **Détails**, copiez la valeur de l'ARN afin de pouvoir l'utiliser pour l'abonnement à la rubrique Amazon SNS.

Pour obtenir l'ARN de la rubrique, vous pouvez utiliser la console Amazon SNS, la commande `[sns-get-topic-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/get-topic-attributes.html)` ou l'action d'API `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)`.

**Pour obtenir l'ARN de la rubrique à partir de la console Amazon SNS**

1. Connectez-vous à la [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Dans le panneau de navigation, sélectionnez la rubrique dont vous souhaitez obtenir l'ARN.

1. Dans la section **Détails**, copiez la valeur du champ **ARN** afin de pouvoir l'utiliser pour accorder à la rubrique Amazon SNS l'autorisation d'envoyer des messages à la file d'attente.

## Étape 2 : autoriser la rubrique Amazon SNS à envoyer des messages à la file d'attente Amazon SQS
<a name="SendMessageToSQS.sqs.permissions"></a>

Pour qu'une rubrique Amazon SNS soit en mesure d'envoyer des messages à une file d'attente, vous devez définir une politique sur la file d'attente qui permette à la rubrique Amazon SNS d'effectuer l'action `sqs:SendMessage`.

Avant d'abonner une file d'attente à une rubrique, vous avez besoin d'une rubrique et d'une file d'attente. Si vous n'avez pas encore créé de rubrique ou de file d'attente, faites-le maintenant. Pour plus d'informations, consultez [Création d'une rubrique](sns-create-topic.md) et [Création d'une file d'attente](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-create-queue.html) dans le *Guide du développeur Amazon Simple Queue Service*. 

Pour définir une politique sur une file d'attente, vous pouvez utiliser la console Amazon SQS ou l'action [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html)API. Avant de commencer, assurez-vous que vous disposez de l'ARN de la rubrique que vous souhaitez autoriser à envoyer des messages à la file d'attente. Si vous abonnez une file d'attente à plusieurs rubriques, votre stratégie doit contenir un élément `Statement` pour chaque rubrique.

**Pour définir une SendMessage politique sur une file d'attente à l'aide de la console Amazon SQS**

1. Connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Cochez la case de la file d'attente dont vous souhaitez définir la politique, choisissez l'onglet **Politique d'accès**, puis choisissez **Modifier**.

1. Dans la **Politique d'accès**, définissez qui peut accéder à votre file d'attente.
   + Ajoutez une condition qui autorise l'action pour la rubrique.
   + Définissez `Principal` en tant que service Amazon SNS, comme indiqué dans l'exemple ci-dessous. 
   + Utiliser les clés de condition globales [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) ou [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) pour se protéger contre le scénario [Député confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Pour utiliser ces clés de condition, définissez la valeur de l'ARN de votre sujet. Si votre file d'attente est abonnée à plusieurs rubriques, vous pouvez utiliser `aws:SourceAccount` à la place. 

   Par exemple, la politique suivante permet d' MyTopic envoyer des messages à MyQueue. 

   ```
   {
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": "sqs:SendMessage",
         "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic"
           }
         }
       }
     ]
   }
   ```

## Étape 3 : abonner la file d'attente à la rubrique Amazon SNS
<a name="SendMessageToSQS.subscribe"></a>

Pour envoyer des messages à une file d'attente via une rubrique, vous devez abonner la file d'attente à la rubrique Amazon SNS. Spécifiez la file d'attente à l'aide de son ARN. Pour réaliser un abonnement à une rubrique, vous pouvez utiliser la console Amazon SNS, la CLI `[sns-subscribe](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html)` de commande ou l'action d'API `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`. Avant de commencer, assurez-vous que vous disposez de l'ARN de la file d'attente que vous souhaitez abonner.

1. Connectez-vous à la [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Dans le panneau de navigation, choisissez **Rubriques**.

1. Sur la page **Rubriques**, choisissez une rubrique.

1. Sur la ***MyTopic*** page, dans la page **Abonnements**, choisissez **Créer un abonnement**.

1. Sur la page **Créer un abonnement**, dans la section **Détails **, procédez comme suit :

   1. Vérifiez la valeur de **ARN de la rubrique**.

   1. Pour **Protocole**, choisissez **Amazon SQS**.

   1. Pour **Point de terminaison**, saisissez l'ARN d'une file d'attente Amazon SQS.

   1. Choisissez **Créer un abonnement**.

   Lorsque l'abonnement est confirmé, le champ **ID de l'abonnement** de votre nouvel abonnement affiche son ID d'abonnement. Si le propriétaire de la file d'attente crée l'abonnement, ce dernier est automatiquement confirmé et l'abonnement doit être actif presque immédiatement.

   En général, vous abonnez votre propre file d'attente à votre propre rubrique dans votre propre compte. Cependant, vous pouvez également abonner une file d'attente d'un autre compte à votre rubrique. Si l'utilisateur qui crée l'abonnement n'est pas le propriétaire de la file d'attente (par exemple, si un utilisateur du compte A abonne une file d'attente du compte B à une rubrique du compte A), l'abonnement doit être confirmé. Pour plus d'informations sur l'abonnement d'une file d'attente d'un autre compte et la confirmation de l'abonnement, consultez la page [Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte](sns-send-message-to-sqs-cross-account.md).

## Étape 4 : autoriser les utilisateurs à accéder aux actions appropriées sur la rubrique et la file d'attente
<a name="SendMessageToSQS.iam.permissions"></a>

Vous devez utiliser Gestion des identités et des accès AWS (IAM) pour autoriser uniquement les utilisateurs appropriés à publier sur la rubrique Amazon SNS et sur les messages de la file read/delete d'attente Amazon SQS. Pour plus d'informations sur le contrôle des actions sur les rubriques et les files d'attente pour les utilisateurs IAM, consultez[Utilisation de politiques basées sur l'identité avec Amazon SNS](sns-using-identity-based-policies.md) et [Gestion des identités et des accès dans Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) dans le Guide du développeur Amazon Simple Queue Service.

Il existe deux façons de contrôler l'accès à une rubrique ou une file d'attente :
+ [Ajoutez une politique à un utilisateur ou un groupe IAM](#SendMessageToSQS.iam.permissions.user). La façon la plus simple d'accorder à des utilisateurs des autorisations d'accès à des rubriques ou des files d'attente consiste à créer un groupe et à lui ajouter la politique appropriée, puis à ajouter des utilisateurs à ce groupe. Il est beaucoup plus facile d'ajouter ou de supprimer des utilisateurs dans un groupe que de suivre les politiques que vous définissez pour des utilisateurs individuels.
+ [Ajoutez une politique à une rubrique ou une file d'attente](#SendMessageToSQS.iam.permissions.resource). Si vous souhaitez autoriser un autre AWS compte à accéder à un sujet ou à une file d'attente, la seule façon de le faire est d'ajouter une politique dont le principal est la personne à laquelle Compte AWS vous souhaitez accorder des autorisations.

Vous devez utiliser la première méthode dans la plupart des cas (appliquer des politiques à des groupes et gérer les autorisations accordées aux utilisateurs en ajoutant ou supprimant les utilisateurs appropriés dans les groupes). Si vous avez besoin d'accorder des autorisations à un utilisateur d'un autre compte, vous devez utiliser la seconde méthode.

### Ajout d'une politique à un utilisateur ou un groupe IAM
<a name="SendMessageToSQS.iam.permissions.user"></a>

Si vous ajoutiez la politique suivante à un utilisateur ou à un groupe IAM, vous autoriseriez cet utilisateur ou les membres de ce groupe à effectuer l'`sns:Publish`action sur le sujet MyTopic.

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
    }
  ]
}
```

Si vous ajoutiez la politique suivante à un utilisateur ou à un groupe IAM, vous autoriseriez cet utilisateur ou les membres de ce groupe à effectuer les `sqs:DeleteMessage` actions `sqs:ReceiveMessage` et sur les files d'attente MyQueue 1 et MyQueue 2.

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue1",
        "arn:aws:sqs:us-east-2:123456789012:MyQueue2"
      ]
    }
  ]
}
```

### Ajout d'une politique à une rubrique ou une file d'attente
<a name="SendMessageToSQS.iam.permissions.resource"></a>

Les exemples de politiques suivants montrent comment accorder à un autre compte des autorisations d'accès à une rubrique et une file d'attente.

**Note**  
Lorsque vous accordez à une autre personne l' Compte AWS accès à une ressource de votre compte, vous accordez également aux utilisateurs IAM disposant d'un accès de niveau administrateur (accès générique) des autorisations d'accès à cette ressource. Tous les autres utilisateurs IAM de l'autre compte se voient automatiquement refuser l'accès à votre ressource. Si vous voulez accorder à des utilisateurs IAM spécifiques de ce compte Compte AWS l'accès à votre ressource, le compte ou un utilisateur IAM disposant d'un accès de niveau administrateur doit déléguer des autorisations pour la ressource à ces utilisateurs IAM. Pour plus d'informations sur la délégation entre comptes, consultez la section [Activation d'accès entre comptes](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) du *guide Utilisation d'IAM*.

Si vous avez ajouté la politique suivante à un sujet MyTopic du compte 123456789012, vous autorisez le compte 111122223333 à effectuer l'action sur ce sujet. `sns:Publish`

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
    }
  ]
}
```

Si vous avez ajouté la politique suivante à une file d'attente MyQueue du compte 123456789012, vous autoriseriez le compte 111122223333 à effectuer les actions et sur cette file d'attente. `sqs:ReceiveMessage` `sqs:DeleteMessage`

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": [
        "sqs:DeleteMessage",
        "sqs:ReceiveMessage"
      ],
      "Resource": [
        "arn:aws:sqs:us-east-2:123456789012:MyQueue"
      ]
    }
  ]
}
```

## Étape 5 : Tester les abonnements de la file d'attente à une rubrique
<a name="SendMessageToSQS.test"></a>

Vous pouvez tester les abonnements d'une file d'attente à une rubrique en effectuant une publication dans la rubrique et en affichant le message que la rubrique envoie à la file d'attente.

**Pour effectuer une publication dans une rubrique à l'aide de la console Amazon SNS**

1. À l'aide des informations d'identification de l'utilisateur Compte AWS ou de l'utilisateur IAM autorisé à publier sur le sujet, connectez-vous à la console Amazon SNS AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/home)

1. Dans le panneau de navigation, sélectionnez la rubrique et choisissez **Publier dans la rubrique**.

1. Dans la zone **Sujet**, entrez un objet (par exemple, **Testing publish to queue**). Dans la zone **Message**, saisissez du texte (par exemple, **Hello world\$1**) et choisissez **Publier un message**. Le message suivant s'affiche : Votre message a été publié.

**Pour afficher le message à partir de la rubrique à l'aide de la console Amazon SQS**

1. À l'aide des informations d'identification de l'utilisateur Compte AWS ou de l'utilisateur IAM autorisé à consulter les messages de la file d'attente, connectez-vous à la console Amazon SQS AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Choisissez une **file d'attente** abonnée à la rubrique.

1. Choisissez **Send and receive messages** (Envoyer et recevoir des messages), puis **Poll for messages** (Rechercher des messages). Un message de type **Notification** s'affiche. 

1. Dans la colonne **Corps**, choisissez **Plus de détails**. La zone **Détails des messages** contient un document JSON qui inclut l'objet et le message que vous avez publiés dans la rubrique. Le message se présente comme le document JSON suivant.

   ```
   {
     "Type" : "Notification",
     "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
     "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
     "Subject" : "Testing publish to subscribed queues",
     "Message" : "Hello world!",
     "Timestamp" : "2012-03-29T05:12:16.901Z",
     "SignatureVersion" : "1",
     "Signature" : "EXAMPLEnTrFPa3...",
     "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
     "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee"
   }
   ```

1. Choisissez **Fermer**. Vous venez d'effectuer une publication dans une rubrique qui envoie des messages de notification à une file d'attente.