Sottoscrizione di una SQS coda Amazon a un argomento Amazon SNS - 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à.

Sottoscrizione di una SQS coda Amazon a un argomento Amazon SNS

Per consentire a un SNS argomento Amazon di inviare messaggi a una SQS coda Amazon, esegui una delle seguenti operazioni:

Per informazioni sulla configurazione di un argomento per l'invio di messaggi a una coda che si trova in un account AWS differente, consultare Invio SNS di messaggi Amazon a una SQS coda Amazon in un altro account.

Per vedere un AWS CloudFormation modello che crea un argomento che invia messaggi a due code, consulta. Automatizza la SQS messaggistica SNS da Amazon ad Amazon con AWS CloudFormation

Fase 1: Eliminare ARN la coda e l'argomento

Quando ti iscrivi a una coda al tuo argomento, avrai bisogno di una copia del file ARN per la coda. Allo stesso modo, quando autorizzi l'argomento a inviare messaggi alla coda, avrai bisogno di una copia dell'ARNargomento.

Per ottenere la codaARN, puoi utilizzare la SQS console Amazon o l'GetQueueAttributesAPIazione.

Per ottenere la coda ARN dalla console Amazon SQS
  1. Accedi a AWS Management Console e apri la SQS console Amazon all'indirizzo https://console.aws.amazon.com/sqs/.

  2. Seleziona la casella per la coda a cui ARN vuoi accedere.

  3. Dalla sezione Dettagli, copia il ARN valore in modo da poterlo utilizzare per abbonarti all'SNSargomento Amazon.

Per approfondire l'argomentoARN, puoi utilizzare la SNS console Amazon, il sns-get-topic-attributes comando o l'GetQueueAttributesAPIazione.

Per scaricare l'argomento ARN dalla SNS console Amazon
  1. Accedi alla SNSconsole Amazon.

  2. Nel pannello di navigazione, scegli l'argomento di cui ARN desideri accedere.

  3. Dalla sezione Dettagli, copia il ARNvalore in modo da poterlo utilizzare per autorizzare l'SNSargomento Amazon a inviare messaggi alla coda.

Passaggio 2: autorizza l'SNSargomento Amazon a inviare messaggi alla SQS coda Amazon

Affinché un SNS argomento Amazon sia in grado di inviare messaggi a una coda, devi impostare una politica sulla coda che consenta all'SNSargomento Amazon di eseguire l'sqs:SendMessageazione.

Prima di eseguire la sottoscrizione di una coda a un argomento, devi creare un argomento e una coda. Se non lo hai già fatto, creali adesso. Per ulteriori informazioni, consultare Creazione di un argomento e Creare una coda nella Guida per sviluppatori di Amazon Simple Queue Service.

Per impostare una politica su una coda, puoi utilizzare la SQS console Amazon o l'SetQueueAttributesAPIazione. Prima di iniziare, assicurati di avere ARN l'argomento a cui desideri consentire l'invio di messaggi alla coda. Se stai sottoscrivendo una coda a più argomenti, la policy deve contenere un elemento Statement per ogni argomento.

Per impostare una SendMessage policy su una coda utilizzando la console Amazon SQS
  1. Accedi a AWS Management Console e apri la SQS console Amazon all'indirizzo https://console.aws.amazon.com/sqs/.

  2. Seleziona la casella della coda per la quale intendi impostare la policy, scegli la scheda Policy di accesso, quindi scegli Modifica.

  3. Nella Policy di accesso, definire chi può accedere alla coda.

    • Aggiungi una condizione che autorizza l'operazione per l'argomento.

    • Impostato Principal per essere il SNS servizio Amazon, come mostrato nell'esempio seguente.

    • Utilizzare le chiavi di condizione globali aws:SourceArn o aws:SourceAccount per proteggersi dallo scenario Confused deputy. Per utilizzare queste chiavi condizionali, imposta il ARN valore sul tuo argomento. Se la coda è sottoscritta a più argomenti, è possibile usare invece aws:SourceAccount.

    Ad esempio, la seguente politica consente MyTopic di inviare messaggi a MyQueue.

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }

Passaggio 3: iscriviti alla coda all'argomento Amazon SNS

Per inviare messaggi a una coda tramite un argomento, devi iscrivere la coda all'argomento AmazonSNS. Specifichi la coda in base alla sua. ARN Per iscriverti a un argomento, puoi utilizzare la SNS console Amazon, il sns-subscribe CLI comando o l'SubscribeAPIazione. Prima di iniziare, assicurati di avere ARN la coda a cui desideri iscriverti.

  1. Accedi alla SNSconsole Amazon.

  2. Nel pannello di navigazione, scegliere Argomenti.

  3. Nella pagina Topics (Argomenti) scegliere un argomento.

  4. Sul MyTopic nella pagina Abbonamenti, scegli Crea abbonamento.

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

    1. Verifica l'argomento ARN.

    2. Per Protocol, scegli Amazon SQS.

    3. Per Endpoint, inserisci il nome ARN di una SQS coda Amazon.

    4. Selezionare Create Subscription (Crea abbonamento).

    Dopo la conferma della sottoscrizione, il campo Subscription ID (ID sottoscrizione) della nuova sottoscrizione visualizza il relativo ID. Se il proprietario della coda crea la sottoscrizione, questa viene automaticamente confermata e dovrebbe essere attiva quasi immediatamente.

    In genere, esegui la sottoscrizione della tua coda al tuo argomento nel tuo account. Tuttavia, puoi anche eseguire la sottoscrizione di una coda in un altro account al tuo argomento. Se l'utente che crea la sottoscrizione non è il proprietario della coda (ad esempio, se un utente dell'account A esegue la sottoscrizione di una coda nell'account B a un argomento nell'account A), la sottoscrizione deve essere confermata. Per ulteriori informazioni sulla sottoscrizione di una coda in un account differente e sulla conferma della sottoscrizione, consulta Invio SNS di messaggi Amazon a una SQS coda Amazon in un altro account.

Fase 4: concedere agli utenti le autorizzazioni per le operazioni appropriate su argomenti e code

Dovresti usare AWS Identity and Access Management (IAM) per consentire solo agli utenti appropriati di pubblicare sull'SNSargomento Amazon e di leggere/eliminare i messaggi dalla coda AmazonSQS. Per ulteriori informazioni sul controllo delle azioni su argomenti e code per IAM gli utentiUtilizzo di politiche basate sull'identità con Amazon SNS, consulta la pagina Gestione delle identità e degli accessi in Amazon SQS nella Amazon Simple Queue Service Developer Guide.

Esistono due modi di controllare l'accesso a un argomento o a una coda:

  • Aggiungi una policy a un IAM utente o a un gruppo. Il modo più semplice di concedere agli utenti le autorizzazioni per argomenti o code è di creare un gruppo e aggiungere a quel gruppo dapprima la policy appropriata e quindi gli utenti. È molto più semplice aggiungere e rimuovere utenti da un gruppo anziché tenere traccia delle policy impostate su singoli utenti.

  • Aggiungere una policy a un argomento o a una coda. Se desideri concedere le autorizzazioni a un argomento o aggiungere una coda a un altro AWS account, l'unico modo per farlo è aggiungere una politica che abbia come principale la politica a Account AWS cui desideri concedere le autorizzazioni.

Il primo metodo deve essere utilizzato nella maggior parte dei casi (applicare policy a gruppi e gestire le autorizzazioni per gli utenti aggiungendo o rimuovendo gli utenti appropriati ai gruppi). Se invece hai la necessità di concedere delle autorizzazioni a un utente in un altro account, devi utilizzare il secondo metodo.

Aggiungere una politica a un utente o a un gruppo IAM

Se aggiungessi la seguente politica a un IAM utente o a un gruppo, concederesti all'utente o ai membri di quel gruppo l'autorizzazione a eseguire l'sns:Publishazione sull'argomento MyTopic.

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

Se aggiungessi la seguente politica a un IAM utente o a un gruppo, concederesti all'utente o ai membri di quel gruppo l'autorizzazione a eseguire sqs:DeleteMessage le azioni sqs:ReceiveMessage and sulle code MyQueue 1 e MyQueue 2.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }

Aggiunta di una policy a un argomento o a una coda

Gli esempi di policy seguenti mostrano come concedere autorizzazioni per un argomento e una coda a un altro account.

Nota

Quando concedi a un'altra persona Account AWS l'accesso a una risorsa del tuo account, concedi anche agli IAM utenti che dispongono di autorizzazioni di accesso a livello di amministratore (accesso con wildcard) a quella risorsa. A tutti IAM gli altri utenti dell'altro account viene automaticamente negato l'accesso alla tua risorsa. Se desideri IAM consentire a utenti specifici di Account AWS accedere alla tua risorsa, l'account o un IAM utente con accesso a livello di amministratore deve delegare le autorizzazioni per la risorsa a tali utenti. IAM Per ulteriori informazioni sulla delega tra account, vedere Abilitazione dell'accesso su più account nella Guida all'uso. IAM

Se hai aggiunto la seguente politica a un argomento MyTopic nell'account 123456789012, daresti all'account 111122223333 il permesso di eseguire l'azione su quell'argomento. sns:Publish

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

Se hai aggiunto la seguente politica a una coda MyQueue nell'account 123456789012, daresti all'account 111122223333 l'autorizzazione a eseguire le azioni and su quella coda. sqs:ReceiveMessage sqs:DeleteMessage

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }

Fase 5: eseguire la verifica delle sottoscrizioni della coda all'argomento

Puoi eseguire la verifica delle sottoscrizioni di una coda a un argomento pubblicando nell'argomento e visualizzando il messaggio che l'argomento invia alla coda.

Per pubblicare su un argomento utilizzando la SNS console Amazon
  1. Utilizzando le credenziali dell'IAMutente Account AWS o con autorizzazione alla pubblicazione sull'argomento, accedi AWS Management Console e apri la SNS console Amazon all'indirizzo https://console.aws.amazon.com/sns/.

  2. Nel riquadro di navigazione, seleziona l'argomento e scegli Publish to Topic (Pubblica nell'argomento).

  3. Nella casella Subject (Oggetto), immettere un oggetto (ad esempio, Testing publish to queue) nella casella Message (Messaggio), immettere del testo (ad esempio, Hello world!) e selezionare Publish Message (Pubblica messaggio). Viene visualizzato il messaggio "Your message has been successfully published" (Il messaggio è stato pubblicato).

Per visualizzare il messaggio dell'argomento utilizzando la SQS console Amazon
  1. Utilizzando le credenziali dell'IAMutente Account AWS o autorizzato a visualizzare i messaggi in coda, accedi AWS Management Console e apri la SQS console Amazon all'indirizzo. https://console.aws.amazon.com/sqs/

  2. Scegli una coda iscritta all'argomento.

  3. Scegli Send and receive messages (Invia e ricevi messaggi), quindi seleziona Poll for messages (Polling per i messaggi). Viene visualizzato un messaggio di tipo notifica.

  4. Nella colonna Body (Corpo), scegli More Details (Altri dettagli). La casella Dettagli del messaggio contiene un JSON documento che contiene l'oggetto e il messaggio che hai pubblicato sull'argomento. Il messaggio è simile al seguente JSON documento.

    { "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
  5. Scegliere Close (Chiudi). La pubblicazione in un argomento che invia messaggi di notifica a una coda è completata.