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 SNS di messaggi Amazon a una SQS coda Amazon in un altro account
Questo documento descrive come pubblicare una notifica su un SNS argomento di Amazon con uno o più abbonamenti ad Amazon SQS Queues 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 SNS delle notifiche Amazon alle SQS code Amazon 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 SQS coda Amazon ha un volume elevato di messaggi, consigliamo al proprietario della coda di creare l'abbonamento.
Argomenti
Creazione della sottoscrizione da parte del proprietario della coda
L'account che ha creato la SQS coda Amazon è 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 SNSconsole Amazon
. -
Nel pannello di navigazione, scegliere Argomenti.
-
Selezionare un argomento, quindi scegliere Edit (Modifica).
-
Nella sezione Modifica
MyTopic
pagina, 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 dell'account di delegare l'autorizzazione al relativo IAM utente/ruolo. Solo l'account root o gli utenti amministratori saranno autorizzati a richiamaresns:Subscribe
. L'IAMutente/ruolo deve inoltre consentiresns:subscribe
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 argomento Account AWS utilizzando il AWS 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.
Accedi alla SQSconsole Amazon
. -
Nel pannello di navigazione, scegliere Code.
-
Dall'elenco delle code, scegli la coda per iscriverti all'argomento AmazonSNS.
-
Scegli l'SNSargomento Abbonati ad Amazon.
-
Dal menu Specificare un SNS argomento Amazon disponibile per questa coda, scegli l'SNSargomento Amazon per la tua coda.
-
Scegli Inserisci l'SNSargomento ARN Amazon, quindi inserisci il nome della risorsa Amazon dell'argomento (ARN).
-
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 utilizzi l'Subscribe
azione, Amazon SNS invia una conferma dell'abbonamento alla coda. L'abbonamento viene visualizzato nella SNS console Amazon, con l'ID di abbonamento impostato su In attesa di conferma.
Per confermare l'abbonamento, un utente con l'autorizzazione a leggere i messaggi dalla coda deve recuperare la conferma URL dell'abbonamento e il proprietario dell'abbonamento deve confermare l'abbonamento utilizzando la conferma dell'abbonamento. URL Fino alla conferma della sottoscrizione, nessuna delle notifiche pubblicate nell'argomento viene inviata alla coda. Per confermare l'abbonamento, puoi utilizzare la SQS console Amazon o l'ReceiveMessage
azione.
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 Passaggio 2: autorizza l'SNSargomento Amazon a inviare messaggi alla SQS coda Amazon.
Fase 1: Per aggiungere un abbonamento Amazon SQS Queue a un argomento in un altro, Account AWS utilizzare il AWS 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 SNSconsole Amazon
. -
Nel pannello di navigazione, scegliere Sottoscrizioni.
-
Nella pagina Sottoscrizioni scegliere Create subscription (Crea sottoscrizione).
-
Nella pagina Crea sottoscrizione, nella sezione Dettagli, eseguire queste operazioni:
-
Per Argomento ARN, inserisci ARN l'argomento.
-
Per Protocol, scegli Amazon SQS.
-
Per Endpoint, entra nella ARN coda.
-
Scegli Crea sottoscrizione.
Nota
-
Per poter comunicare con il servizio, la coda deve disporre delle autorizzazioni per Amazon. SNS
-
-
Di seguito è riportato un esempio di dichiarazione politica che consente all'SNSargomento Amazon di inviare un messaggio alla SQS coda Amazon.
{ "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 un abbonamento utilizzando il AWS Management Console
-
Accedi alla SQSconsole Amazon
. -
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 Dettagli del messaggio, trova e annota il URL valore Subscribe. Questo è il collegamento di sottoscrizione (esempio qui di seguito). Per ulteriori dettagli sulla convalida dei API token, consulta
ConfirmSubscription
Amazon SNS API Reference.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. URLDeve essere passato dal proprietario della coda al proprietario dell'abbonamento. Il proprietario dell'abbonamento deve URL inserirlo nella SNSconsole Amazon
.
-
-
Accedi come proprietario dell'abbonamento alla SNSconsole Amazon
Il proprietario dell'abbonamento esegue 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 XML risposta, 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 l'argomento abbonamento nella SNS console Amazon, puoi vedere che il messaggio di conferma in sospeso è stato sostituito dall'abbonamento ARN nella colonna ID abbonamento.
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.