Envoi de messages Amazon SNS à une file d'attente Amazon SQS d'un autre compte - Amazon Simple Notification Service

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

Vous pouvez publier une notification dans une rubrique Amazon SNS avec un ou plusieurs abonnements à des files d'attente Amazon SNS d'un autre compte. Configurez la rubrique et les files d'attente de la même manière que vous le feriez s'ils se trouvaient dans le même compte (voir Distribution ramifiée vers des files d'attente Amazon SQS). La différence majeure réside dans le traitement de la confirmation d'abonnement, qui varie selon le mode d'abonnement de la file d'attente à la rubrique.

Il est recommandé de suivre les étapes référencées dans la section Création de l'abonnement par le propriétaire de la file d'attente lorsque c'est possible, car la confirmation est automatique lorsque le propriétaire de la file d'attente crée l'abonnement.

Création de l'abonnement par le propriétaire de la file d'attente

Le compte qui a créé la file d'attente Amazon SNS est le propriétaire de la file d'attente. Lorsque le propriétaire de la file d'attente crée un abonnement, ce dernier ne requiert pas de confirmation. La file d'attente commence à recevoir des notifications de la rubrique dès que l'action Subscribe est terminée. Pour permettre au propriétaire de la file d'attente de s'abonner à la rubrique du propriétaire de la rubrique, ce dernier doit accorder au propriétaire de la file d'attente l'autorisation d'appeler l'action Subscribe sur la rubrique.

Étape 1 : Pour définir la politique de rubrique à l'aide de AWS Management Console

  1. Connectez-vous à la console Amazon SNS.

  2. Dans le panneau de navigation, choisissez Rubriques.

  3. Sélectionnez une rubrique, puis choisissez Modifier.

  4. Dans la page Edit MyTopic (Modifier MyTopic) développez la section Access policy (politique d'accès).

  5. Saisissez la politique suivante :

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

    Cette stratégie donne au compte 111122223333 l’autorisation d'appeler sns:Subscribesur MyTopic dans le compte 123456789012.

    Un utilisateur possédant les informations d'identification pour le compte 111122223333 peut s'abonner à MyTopic. Cette autorisation permet à l'ID de compte de déléguer l'autorisation à son utilisateur/rôle IAM. Seuls les utilisateurs du compte racine ou les administrateurs seront autorisés à appeler sns:Subscribe. L'utilisateur/le rôle IAM devra également avoir sns:subscribe pour permettre à sa file d'attente de s'abonner.

  6. Choisissez Enregistrer les modifications.

    Un utilisateur possédant les informations d'identification pour le compte 111122223333 peut s'abonner à MyTopic.

Étape 2 : Pour ajouter un abonnement à une file d'attente Amazon SQS à une rubrique d'un autre Compte AWS à l'aide de AWS Management Console

Avant de commencer, assurez-vous que vous disposez des ARN de votre rubrique et de votre file d'attente, et que vous avez autorisé la rubrique à envoyer des messages à la file d'attente.

  1. Connectez-vous à la console Amazon SQS.

  2. Dans le panneau de navigation, choisissez Queues (Files d’attente).

  3. Dans la liste des files d'attente, choisissez la file d'attente à abonner à la rubrique Amazon SNS.

  4. Dans Actions, choisissez Subscribe to Amazon SNS topic (Abonner à la rubrique Amazon SNS).

  5. Dans Spécifiez une rubrique Amazon SNS disponible pour ce menu de file d'attente, choisissez la Rubrique Amazon SNS pour votre file d'attente.

  6. Choisissez Entrer l'ARN de la rubrique Amazon SNS, puis entrez la rubrique Amazon Resource Name (ARN).

  7. Choisissez Enregistrer.

    Note
    • Pour pouvoir communiquer avec le service, la file d'attente doit disposer des autorisations pour Amazon SNS.

    • Parce que vous êtes le propriétaire de la file d'attente, vous n'avez pas à confirmer l'abonnement.

Création de l'abonnement par un utilisateur qui n'est pas le propriétaire de la file d'attente

Tout utilisateur qui crée un abonnement mais qui n'est pas le propriétaire de la file d'attente doit confirmer l'abonnement.

Lorsque vous utilisez l'action Subscribe, Amazon SNS envoie une confirmation d'abonnement à la file d'attente. L'abonnement s'affiche dans la console Amazon SNS et son ID d'abonnement est défini sur Confirmation en attente.

Pour confirmer l'abonnement, un utilisateur autorisé à lire des messages dans la file d'attente doit récupérer l'URL de confirmation d'abonnement, et le propriétaire de l'abonnement doit confirmer l'abonnement à l'aide de l'URL de confirmation d'abonnement. Aucune notification publiée dans la rubrique n'est envoyée à la file d'attente, tant que l'abonnement n'est pas confirmé. Pour confirmer l'abonnement, vous pouvez utiliser la console Amazon SQS ou l'action ReceiveMessage.

Note

Avant d'abonner un point de terminaison à la rubrique, assurez-vous que la file d'attente peut recevoir des messages de la rubrique en définissant l'autorisation sqs:SendMessage pour la file d'attente. Pour plus d'informations, consultez Étape 2 : autoriser la rubrique Amazon SNS à envoyer des messages à la file d'attente Amazon SQS.

Étape 1 : Pour ajouter un abonnement à une file d'attente Amazon SQS à une rubrique d'un autre Compte AWS à l'aide de AWS Management Console

Avant de commencer, assurez-vous que vous disposez des ARN de votre rubrique et de votre file d'attente, et que vous avez autorisé la rubrique à envoyer des messages à la file d'attente.

  1. Connectez-vous à la console Amazon SNS.

  2. Dans le panneau de navigation, choisissez Abonnements.

  3. Sur la page Subscriptions (Abonnements), choisissez Create subscription (Créer un abonnement).

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

    1. Pour ARN de la rubrique, entrez l'ARN de la rubrique.

    2. Pour Protocole, choisissez Amazon SQS.

    3. Pour Point de terminaison, entrez l'ARN de la file d'attente.

    4. Choisissez Créer un abonnement.

      Note
      • Pour pouvoir communiquer avec le service, la file d'attente doit disposer des autorisations pour Amazon SNS.

Voici un exemple d'énoncé de stratégie qui permet à la rubrique Amazon SNS d'envoyer un message à la file d'attente Amazon SQS.

{ "Sid": "Stmt1234", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName" } } }

Étape 2 : Pour confirmer un abonnement à l'aide de AWS Management Console

  1. Connectez-vous à la console Amazon SQS.

  2. Sélectionnez la file d'attente comportant un abonnement à la rubrique en attente.

  3. Choisissez Actions sur la file d'attente, Afficher/Supprimer des messages puis choisissez Commencer la recherche de messages.

    Un message contenant la confirmation de l'abonnement est reçu dans la file d'attente.

  4. Dans la colonne Corps procédez comme suit :

    1. Choisissez Plus de détails.

    2. Dans la boîte de dialogue Message Details (Détails des messages), recherchez et notez la valeur de SubscribeURL. Il s'agit du lien de votre abonnement (exemple ci-dessous). Pour plus d'informations sur la validation des jetons d'API, consultez ConfirmSubscription dans la référence d'API Amazon SNS.

      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
    3. Notez le lien de confirmation d'abonnement. L'URL doit être transmise du propriétaire de la file d'attente au propriétaire de l'abonnement. Le propriétaire de l'abonnement doit entrer l'URL dans la Console Amazon SNS.

  5. Connectez-vous en tant que propriétaire de l'abonnement à la Console Amazon SNS Le propriétaire de l'abonnement effectue la confirmation.

  6. Choisissez la rubrique appropriée.

  7. Choisissez l'abonnement approprié dans le tableau des listes d'abonnements de la rubrique. Il est étiqueté comme « Confirmation en attente ».

  8. Choisissez le lien de Confirmer l'abonnement.

  9. Un modal apparaît pour indiquer le lien de confirmation de l'abonnement. Collez le lien de confirmation de l'abonnement.

  10. Sélectionnez la confirmation de l'abonnement dans le modal.

    Une réponse XML s'affiche, par exemple :

    <ConfirmSubscriptionResponse> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-bc89-012d-3e45-6fg7h890123i</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

    La file d'attente abonnée est prête à recevoir des messages de la rubrique.

  11. (Facultatif) Si vous affichez l'abonnement à la rubrique dans la console Amazon SNS, vous pouvez constater que le message Confirmation en attente a été remplacé par l'ARN d'abonnement dans la colonne ID de l'abonnement.

Comment forcer un abonnement à exiger une authentification sur les demandes de désabonnement ?

Le propriétaire de l'abonnement doit définir l'indicateur AuthenticateOnUnsubscribe sur true lors de la confirmation de l'abonnement.

  • AuthenticateOnUnsubscribe est automatiquement défini sur true lorsque le propriétaire de la file d'attente crée l'abonnement.

  • AuthenticateOnUnsubscribe ne peut pas être défini sur true lorsque le lien de confirmation de l'abonnement est atteint sans authentification.