Comment configurer mon point de terminaison Amazon SQS entre comptes sur la rubrique Amazon SNS ?

Lecture de 9 minute(s)
0

J'ai une file d'attente Amazon Simple Queue Service (Amazon SQS) dans le compte A. Je souhaite abonner cette file d'attente à ma rubrique Amazon Simple Notification Service (Amazon SNS) dans le compte B.

Brève description

Créez un abonnement à partir de la rubrique Amazon SNS en tant que propriétaire de rubrique. Vous pouvez également créer l'abonnement à partir de la file d'attente Amazon SQS en tant que propriétaire de file d'attente. Pour créer correctement l'abonnement, les deux approches doivent disposer des autorisations appropriées.

Résolution

Important : pour vous abonner en tant que propriétaire de file d'attente, assurez-vous que votre stratégie d'accès à la rubrique SNS du compte B dispose des autorisations appropriées. Ces autorisations permettent à la file d'attente SQS du compte A de s'abonner à la rubrique SNS. Pour vous abonner en tant que propriétaire de rubrique, assurez-vous que votre stratégie d'accès de la file d'attente SQS du compte A dispose des autorisations appropriées. Le compte A doit disposer des autorisations nécessaires pour permettre à la rubrique SNS d'envoyer l'URL de confirmation d'abonnement.

Abonnez-vous en tant que propriétaire de file d'attente

Pour vous abonner à une file d'attente en tant que propriétaire de file d'attente, effectuez les tâches suivantes.

Modifier la stratégie d'accès à SNS du compte B

Procédez comme suit :

  1. Connectez-vous à la console Amazon SNS dans le compte B.
  2. Passez à la région AWS appropriée.
  3. Choisissez Rubriques, puis sélectionnez votre rubrique SNS.
  4. Choisissez Modifier.
  5. Développez la section Stratégie d’accès.
  6. Copiez et collez la stratégie d'accès suivante dans la section de l'éditeur JSON :
    {
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "111122223333"
          },
          "Action": "sns:Subscribe",
          "Resource": "arn:aws:sns:Region:account-id:topic-name"
        }
      ]
    }
    Remarque : remplacez le compte AWS et l'ARN de la rubrique SNS par vos valeurs.
  7. Choisissez Enregistrer.

En tant que propriétaire de file d'attente, effectuez les étapes suivantes pour abonner votre file d'attente SQS du compte A à votre rubrique SNS du compte B :

  1. Connectez-vous à la console Amazon SQS dans le compte A.
  2. Passez à la région appropriée.
  3. Choisissez Files d'attente, puis sélectionnez votre file d'attente SQS.
  4. Dans la section Abonnements SNS, sélectionnez S'abonner à la rubrique Amazon SNS.
  5. Sous Spécifier une rubrique Amazon SNS disponible pour cette file d'attente, sélectionnez la liste déroulante. Puis, choisissez Entrer l'ARN de la rubrique Amazon SNS.
  6. Dans le champ de texte Une rubrique Amazon SNS qui peut envoyer des notifications à une file d'attente Amazon SQS, entrez l’ARN de votre rubrique SNS.
  7. Choisissez Enregistrer.
  8. Connectez-vous à la console Amazon SNS dans le compte B.
  9. Choisissez Rubriques, puis sélectionnez votre rubrique SNS.
  10. Pour vérifier que l'abonnement est confirmé pour votre rubrique SNS dans le compte B, consultez la section Abonnements.
    Remarque : une fois l'abonnement créé, une instruction est ajoutée à la stratégie d'accès de la file d'attente SQS. La stratégie permet à la rubrique SNS d'envoyer des messages à votre file d'attente. La stratégie se présente de la manière suivante :
{
      "Sid": "topic-subscription-arn:aws:sns:Region:account-id:topic-name",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:Region:account-id:queue-name",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name"
        }
      }
    }

Abonnez-vous en tant que propriétaire de rubrique

Pour vous abonner à une file d'attente en tant que propriétaire de rubrique, effectuez les tâches suivantes.

Modifiez la file d'attente SQS du compte A

Procédez comme suit :

  1. Connectez-vous à la console Amazon SQS dans le compte A.
  2. Passez à la région appropriée.
  3. Choisissez Files d'attente, puis sélectionnez votre file d'attente SQS.
  4. Choisissez Modifier.
  5. Développez la section Stratégie d’accès.
  6. Copiez et collez la stratégie d'accès suivante dans l'éditeur JSON :
    {
          "Sid": "Allow_SNS_topic_in_Account_B_to_Send_Message",
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": "SQS:SendMessage",
          "Resource": "arn:aws:sqs:Region:account-id:queue-name",
          "Condition": {
            "ArnLike": {
              "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name"
            }
          }
        }
    Remarque : remplacez l'ARN de la file d'attente SQS et l'ARN de la rubrique SNS par vos valeurs.

En tant que propriétaire de rubrique, procédez comme suit pour abonner votre file d'attente SQS dans un autre compte :

  1. Connectez-vous à la console Amazon SNS dans le compte B.
  2. Passez à la région appropriée.
  3. Choisissez Rubriques, puis sélectionnez votre rubrique SNS.
  4. Sous Abonnements, sélectionnez Créer un abonnement.
  5. Choisissez la liste déroulante Protocole, puis sélectionnez Amazon SQS.
  6. Sélectionnez Créer un abonnement.
  7. Pour confirmer l'abonnement, connectez-vous à la console Amazon SQS dans le compte A.
  8. Choisissez Files d'attente, puis sélectionnez la file d'attente SQS à laquelle vous êtes abonné.
  9. Choisissez Envoyer et recevoir des messages.
  10. Sélectionnez Rechercher des messages. Un message d'Amazon SNS s’affiche dans la section Messages.
  11. Sélectionnez l'ID du message. Sous SubscribeURL, copiez l'URL entre guillemets.
  12. Pour afficher le ConfirmSubscriptionResult avec ** SubscriptionArn**, collez ce lien URL dans votre navigateur Web et appuyez sur Entrée.
  13. Connectez-vous à la console Amazon SNS dans le compte B.
  14. Choisissez Rubriques, puis sélectionnez votre rubrique SNS.
  15. Pour vérifier que l’abonnement est confirmé, vérifiez le statut de l’abonnement sous Abonnements. Le statut de l'abonnement passe de En attente de confirmation à Confirmé.

Remarque : étant donné que l'abonnement appartient au compte SNS, vous ne pouvez pas le voir répertorié dans la console SQS.

Conseils de résolution de problèmes

Pour résoudre les problèmes liés à vos files d'attente, effectuez les tâches suivantes en fonction de votre cas.

Ma file d'attente SQS est chiffrée

Les files d'attente SQS chiffrées à l'aide d'une clé AWS Key Management Service (AWS KMS) peuvent restreindre l'accès entre les comptes. Si vous ne définissez pas de clé pour votre file d'attente chiffrée, celle-ci utilise la clé AWS KMS (SSE-KMS) en tant que clé par défaut. Cette clé n'autorise l'accès que pour les principaux du même compte. Pour plus d'informations, consultez l’article Chiffrement au repos dans Amazon SQS.

Pour accéder aux files d'attente chiffrées qui utilisent SSE-KMS, créez une clé AWS KMS gérée par le client. Puis, ajoutez des autorisations dans la stratégie de clé qui permettent au service SNS d'effectuer les appels d'API AWS KMS.

Pour autoriser le service SNS à utiliser les méthodes d'API GenerateDataKey et Déchiffrer, ajoutez l'instruction suivante à la stratégie de clé gérée par le client :

{
      "Effect": "Allow",
      "Principal": {
            "Service": "sns.amazonaws.com"
      },
      "Action": [
            "kms:GenerateDataKey*",
            "kms:Decrypt"
      ],
      "Resource": "*"
}

Pour en savoir plus, consultez l’article Configuration du chiffrement côté serveur (SSE) pour une file d’attente (console).

Mon abonnement est toujours en attente dans la console SNS lorsque je crée mon abonnement dans la console Amazon SNS

Pour résoudre ce problème, procédez comme suit :

  1. Supprimez votre abonnement. Puis, commencez à partir de l'étape 13 des étapes précédentes.

  2. Pour utiliser l'interface de ligne de commande AWS (AWS CLI) afin d’interroger votre file d'attente SQS, exécutez la commande suivante pour récupérer l'URL de l'abonnement :

    aws sqs receive-message --queue-url https**:**//sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10

    **Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'AWS CLI.

  3. Copiez et collez cette URL dans votre navigateur pour confirmer l'abonnement. Assurez-vous de remplacer l'URL de la file d'attente par la vôtre.

Lorsque je copie et colle ma stratégie d'accès à la rubrique SNS, le message d'erreur « Impossible de définir la stratégie d'accès à la rubrique s’affiche

Lorsque je copie et colle ma stratégie d'accès à la rubrique SNS, le message d'erreur suivant s'affiche :

« Impossible de définir la stratégie d'accès à la rubrique. Code d'erreur : InvalidParameter - Message d’erreur : Une erreur s'est produite lors de la définition de la stratégie d'accès aux attributs. Paramètre non valide : Erreur de stratégie : null. »

Pour résoudre ce problème, procédez comme suit :

  1. Pour vous assurer que la syntaxe de votre stratégie est correcte, copiez et collez la stratégie d'accès au site Web de l'outil de validation JSON.
  2. Vérifiez votre stratégie d'accès pour vous assurer qu'elle ne contient pas d’instruction dupliquée. Vérifiez que votre premier ID d’instruction est suivi d'une virgule.

Mon ID d'abonnement s'affiche comme « Supprimé » dans la console Amazon SNS

Lors de l'intégration entre comptes de SNS et SQS, le propriétaire de l'abonnement est déterminé en fonction de l'emplacement à partir duquel l'abonnement est créé.

Si l'abonnement est créé à partir du compte SQS, SQS est le propriétaire de l'abonnement. Si l'abonnement est créé à partir d'un compte SNS, SNS est le propriétaire de l'abonnement.

Si vous appelez l’API de désabonnement à partir d’un compte qui n’est pas propriétaire de l’abonnement, ce dernier passe au statut Supprimé. Ou, si vous essayez de supprimer l'abonnement depuis la console, celui-ci passe au statut Supprimé. Lorsque l’abonnement à la rubrique SNS présente le statut Supprimé, le compte propriétaire de l’abonnement ne peut pas réabonner le même point de terminaison à la rubrique.

Au bout de 48 heures, Amazon SNS efface l’abonnement Supprimé et le compte propriétaire de l’abonnement peut réabonner le même point de terminaison à la rubrique.

Pour vous réabonner avant 48 heures, appelez l’API d’abonnement depuis le compte AWS propriétaire de la rubrique SNS afin de recréer l'abonnement.

Meilleures pratiques

Authentifiez votre abonnement SNS à votre file d'attente SQS. Avec cette configuration, seul le propriétaire de la rubrique et le propriétaire de l'abonnement peuvent annuler l'abonnement de la file d'attente SQS à la rubrique SNS.

Informations connexes

Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte

Autoriser la publication des notifications d'événements Amazon Simple Storage Service (Amazon S3) dans une rubrique

Comment résoudre les erreurs d'autorisation lorsque j'essaie d'ajouter des abonnés à une rubrique Amazon SNS ?

Comprendre la période de réutilisation des clés de données

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois