Invio SNS di messaggi Amazon a una SQS coda Amazon 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 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.

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

  1. Accedi alla SNSconsole Amazon.

  2. Nel pannello di navigazione, scegliere Argomenti.

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

  4. Nella sezione Modifica MyTopicpagina, espandi la sezione Politica 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 dell'account di delegare l'autorizzazione al relativo IAM utente/ruolo. Solo l'account root o gli utenti amministratori saranno autorizzati a richiamare sns:Subscribe. L'IAMutente/ruolo deve inoltre consentire sns:subscribe alla propria coda di iscriversi.

  6. 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.

  1. Accedi alla SQSconsole Amazon.

  2. Nel pannello di navigazione, scegliere Code.

  3. Dall'elenco delle code, scegli la coda per iscriverti all'argomento AmazonSNS.

  4. Scegli l'SNSargomento Abbonati ad Amazon.

  5. Dal menu Specificare un SNS argomento Amazon disponibile per questa coda, scegli l'SNSargomento Amazon per la tua coda.

  6. Scegli Inserisci l'SNSargomento ARN Amazon, quindi inserisci il nome della risorsa Amazon dell'argomento (ARN).

  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 utilizzi l'Subscribeazione, 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'ReceiveMessageazione.

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.

  1. Accedi alla SNSconsole Amazon.

  2. Nel pannello di navigazione, scegliere Sottoscrizioni.

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

  4. Nella pagina Crea sottoscrizione, nella sezione Dettagli, eseguire queste operazioni:

    1. Per Argomento ARN, inserisci ARN l'argomento.

    2. Per Protocol, scegli Amazon SQS.

    3. Per Endpoint, entra nella ARN coda.

    4. 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

  1. Accedi alla SQSconsole Amazon.

  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 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 ConfirmSubscriptionAmazon SNS API Reference.

      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. URLDeve essere passato dal proprietario della coda al proprietario dell'abbonamento. Il proprietario dell'abbonamento deve URL inserirlo nella SNSconsole Amazon.

  5. Accedi come proprietario dell'abbonamento alla SNSconsole Amazon Il proprietario dell'abbonamento esegue 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 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.

  11. (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.