Invio di messaggi Amazon SNS a una coda Amazon SQS; in un altro account - Amazon Simple Notification Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Invio di messaggi Amazon SNS a una coda Amazon SQS; in un altro account

Questo documento descrive come pubblicare una notifica in un argomento Amazon SNS con una o più sottoscrizioni a code Amazon SQS in un altro account. La procedura di configurazione di argomento e code è identica a quella utilizzata quando questi si trovano nello stesso account (vedi Fan-out a code Amazon SQS). La differenza principale riguarda la gestione della conferma della sottoscrizione, che varia in base al modo in cui viene eseguita la sottoscrizione della coda all'argomento.

È consigliabile quando possibile seguire i passaggi di cui si fa riferimento nella sezione Creazione della sottoscrizione da parte del proprietario della coda, perché la conferma è automatica quando il proprietario della coda crea la sottoscrizione.

Nota

Se la coda Amazon SQS ha un volume di messaggi elevato, raccomandiamo che il proprietario della coda crei la sottoscrizione.

Creazione della sottoscrizione da parte del proprietario della coda

L'account che ha creato la coda Amazon SQS è il proprietario della coda. Quando il proprietario della coda crea la sottoscrizione, la conferma della sottoscrizione non è necessaria. La coda inizia a ricevere le notifiche dall'argomento al termine dell'operazione Subscribe. Per consentire al proprietario della coda di effettuare la sottoscrizione all'argomento, il proprietario dell'argomento deve autorizzare l'account del proprietario della coda a chiamare l'operazione Subscribe sull'argomento.

Fase 1: per impostare la policy dell'argomento utilizzando AWS Management Console

  1. Accedi alla console Amazon SNS.

  2. Nel pannello di navigazione, scegliere Argomenti.

  3. Selezionare un argomento, quindi scegliere Edit (Modifica).

  4. Nella pagina Edit myTopic (Modifica myTopic) espandere la sezione Policy di accesso.

  5. Immettere la seguente policy:

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

    Questa policy consente all'account 111122223333 di chiamare sns:Subscribe su MyTopic nell’account 123456789012.

    Un utente con le credenziali per l'account 111122223333 può sottoscrivere a MyTopic. Questa autorizzazione consente all'ID account di delegare l'autorizzazione al proprio utente/ruolo IAM. Solo l'account root o gli utenti amministratori saranno autorizzati a richiamare sns:Subscribe. Anche l'utente/ruolo IAM deve avere sns:subscribe per consentire alla propria coda di iscriversi.

  6. Seleziona Salva modifiche.

    Un utente con le credenziali per l'account 111122223333 può sottoscrivere a MyTopic.

Fase 2: aggiungere una sottoscrizione di una coda Amazon SQS a un argomento in un altro Account AWS utilizzando AWS Management Console.

Prima di iniziare, assicurarsi di disporre degli ARN per l'argomento e la coda e di aver fornito l'autorizzazione all'argomento per inviare messaggi alla coda.

  1. Accedere alla console Amazon SQS.

  2. Nel pannello di navigazione, scegliere Code.

  3. Dall'elenco di code, scegliere la coda per iscriversi all'argomento Amazon SNS.

  4. Scegli Subscribe to Amazon SNS topic (Iscriviti all'argomento Amazon SNS).

  5. Da Specify an Amazon SNS topic available for this queue menu (Specifica un argomento Amazon SNS disponibile per questo menu di coda), scegliere Amazon SNS topic (Argomento Amazon SNS) per la coda.

  6. Scegliere Enter Amazon SNS topic ARN (Inserisci ARN dell'argomento Amazon SNS) e quindi inserire l'Amazon Resource Name (ARN) dell'argomento.

  7. Seleziona Salva.

    Nota
    • Per poter comunicare con il servizio, la coda deve disporre delle autorizzazioni per Amazon SNS.

    • Poiché sei il proprietario della coda, non devi confermare la sottoscrizione.

Creazione di una sottoscrizione da parte di un utente non proprietario della coda

Qualsiasi utente che crea una sottoscrizione ma non è il proprietario della coda deve confermare la sottoscrizione.

Quando si utilizza l'azione Subscribe, Amazon SNS invia una conferma di sottoscrizione alla coda. La sottoscrizione viene visualizzata nella console Amazon SNS, con l'ID di sottoscrizione impostato su Conferma in sospeso.

Per confermare la sottoscrizione, un utente autorizzato a leggere i messaggi dalla coda deve recuperare l'URL di conferma della sottoscrizione e il proprietario della sottoscrizione deve confermare la sottoscrizione utilizzando l'URL di conferma della sottoscrizione. Fino alla conferma della sottoscrizione, nessuna delle notifiche pubblicate nell'argomento viene inviata alla coda. Per confermare la sottoscrizione, è possibile utilizzare la console Amazon SQS o l'azione ReceiveMessage.

Nota

Prima di sottoscrivere un endpoint all'argomento, assicurarsi che la coda possa ricevere messaggi dall'argomento impostando l'autorizzazione sqs:SendMessage per la coda. Per ulteriori informazioni, consulta Fase 2: Concedere all'argomento Amazon SNS l'autorizzazione a inviare messaggi alla coda Amazon SQS.

Fase 1: aggiunta di una sottoscrizione di una coda Amazon SQS a un argomento in un altro Account AWS utilizzando la AWS Management Console.

Prima di iniziare, assicurarsi di disporre degli ARN per l'argomento e la coda e di aver fornito l'autorizzazione all'argomento per inviare messaggi alla coda.

  1. Accedi alla console Amazon SNS.

  2. Nel pannello di navigazione, scegliere Sottoscrizioni.

  3. Nella pagina Sottoscrizioni scegliere Create subscription (Crea sottoscrizione).

  4. Nella pagina Create subscription (Crea sottoscrizione), nella sezione Dettagli, eseguire queste operazioni:

    1. Per Argomento ARN, immettere l'ARN dell'argomento.

    2. Per Protocollo, scegliere Amazon SQS.

    3. Per Endpoint, immettere l'ARN della coda.

    4. Scegli Create Subscription (Crea sottoscrizione).

      Nota
      • Per poter comunicare con il servizio, la coda deve disporre delle autorizzazioni per Amazon SNS.

Il seguente è un esempio di istruzione di policy che consente all'argomento Amazon SNS di inviare un messaggio alla coda 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" } } }

Fase 2: conferma di una sottoscrizione utilizzando la AWS Management Console

  1. Accedere alla console Amazon SQS.

  2. Selezionare la coda con una sottoscrizione in sospeso all'argomento.

  3. Scegli Send and receive messages (Invia e ricevi messaggi), quindi seleziona Poll for messages (Polling per i messaggi).

    Nella coda viene ricevuto un messaggio con la conferma della sottoscrizione.

  4. Nella colonna Corpo eseguire le operazioni seguenti:

    1. Scegliere Maggiori dettagli.

    2. Nella finestra di dialogo Message Details (Dettagli messaggio), trovare e annotare il valore SubscribeURL. Questo è il collegamento di sottoscrizione (esempio qui di seguito). Per ulteriori dettagli sulla convalida dei token API, consulta ConfirmSubscriptionnella Documentazione di riferimento delle API di Amazon SNS.

      https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
    3. Prendere nota del collegamento di conferma della sottoscrizione. L'URL deve essere passato dal proprietario della coda al proprietario della sottoscrizione. Il proprietario della sottoscrizione deve inserire l'URL nella console Amazon SNS.

  5. Accedere come proprietario della sottoscrizione alla console Amazon SNS. Il proprietario della sottoscrizione effettua la conferma.

  6. Scelta dell'argomento pertinente.

  7. Scegliere la sottoscrizione pertinente nella tabella degli elenchi di sottoscrizione dell'argomento. È etichettato come "In attesa di conferma".

  8. Scegliere Confirm subscription (Conferma sottoscrizione).

  9. Viene visualizzato un modale che richiede il collegamento di conferma della sottoscrizione. Incollare il collegamento di conferma della sottoscrizione.

  10. Selezionare Confirm subscription (Conferma sottoscrizione).nel modale.

    Viene visualizzata una risposta XML, ad esempio:

    <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 coda per la quale hai confermato la sottoscrizione è pronta a ricevere messaggi dall'argomento.

  11. (Facoltativo) Se visualizzi la sottoscrizione dell'argomento nella console Amazon SNS, puoi verificare che il messaggio Pending Confirmation (Conferma in sospeso) è stato sostituito dall'ARN della sottoscrizione nella colonna Subscription ID (ID sottoscrizione).

Come faccio a forzare una sottoscrizione a richiedere l'autenticazione per le richieste di annullamento della sottoscrizione?

Il proprietario della sottoscrizione deve impostare il flag AuthenticateOnUnsubscribe su true alla conferma della sottoscrizione.

  • AuthenticateOnUnsubscribe viene automaticamente impostato su true quando il proprietario della coda crea la sottoscrizione.

  • AuthenticateOnUnsubscribe non può essere impostato su true quando si passa al collegamento di conferma della sottoscrizione senza autenticazione.