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 Fanout delle notifiche Amazon SNS alle code di Amazon SQS per l'elaborazione asincrona). 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
Accedi alla console Amazon SNS
. -
Nel pannello di navigazione, scegliere Argomenti.
-
Selezionare un argomento, quindi scegliere Edit (Modifica).
-
Nella
MyTopic
pagina Modifica, espandi la sezione Politica di accesso. -
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 chiamaresns:Subscribe
suMyTopic
nell’account123456789012
.Un utente con le credenziali per l'account
111122223333
può sottoscrivere aMyTopic
. 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 richiamaresns:Subscribe
. Anche l'utente/ruolo IAM deve averesns:subscribe
per consentire alla propria coda di iscriversi. -
Scegli Save changes (Salva modifiche).
Un utente con le credenziali per l'account
111122223333
può iscriversi a MyTopic.
Fase 2: Per aggiungere un abbonamento Amazon SQS Queue a un argomento in un altro, utilizzando il Account AWSAWS Management Console
Prima di iniziare, assicurati ARNs di disporre dell'argomento e della coda e di aver autorizzato l'argomento a inviare messaggi alla coda.
Accedere alla console Amazon SQS
. -
Nel pannello di navigazione, scegliere Code.
-
Dall'elenco di code, scegliere la coda per iscriversi all'argomento Amazon SNS.
-
Scegli Subscribe to Amazon SNS topic (Iscriviti all'argomento Amazon SNS).
-
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.
-
Scegliere Enter Amazon SNS topic ARN (Inserisci ARN dell'argomento Amazon SNS) e quindi inserire l'Amazon Resource Name (ARN) dell'argomento.
-
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: Per aggiungere un abbonamento alla coda Amazon SQS a un argomento in un altro, utilizzare il Account AWSAWS Management Console
Prima di iniziare, assicurati di disporre delle ARNs impostazioni relative all'argomento e alla coda e di aver autorizzato l'argomento a inviare messaggi alla coda.
Accedi alla console Amazon SNS
. -
Nel pannello di navigazione, scegliere Sottoscrizioni.
-
Nella pagina Sottoscrizioni scegliere Create subscription (Crea sottoscrizione).
-
Nella pagina Create subscription (Crea sottoscrizione), nella sezione Dettagli, eseguire queste operazioni:
-
Per Argomento ARN, immettere l'ARN dell'argomento.
-
Per Protocollo, scegliere Amazon SQS.
-
Per Endpoint, immettere l'ARN della coda.
-
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" } } }
Passaggio 2: Per confermare una sottoscrizione utilizzando il AWS Management Console
-
Accedere alla console Amazon SQS
. -
Selezionare la coda con una sottoscrizione in sospeso all'argomento.
-
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.
-
Nella colonna Corpo eseguire le operazioni seguenti:
-
Scegliere Maggiori dettagli.
-
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
ConfirmSubscription
nella 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...
-
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
.
-
-
Accedere come proprietario della sottoscrizione alla console Amazon SNS
. Il proprietario della sottoscrizione effettua la conferma. -
Scelta dell'argomento pertinente.
-
Scegliere la sottoscrizione pertinente nella tabella degli elenchi di sottoscrizione dell'argomento. È etichettato come "In attesa di conferma".
-
Scegliere Confirm subscription (Conferma sottoscrizione).
-
Viene visualizzato un modale che richiede il collegamento di conferma della sottoscrizione. Incollare il collegamento di conferma della sottoscrizione.
-
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.
-
(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.