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à.
Iscrizione di una coda Amazon SQS a un argomento Amazon SNS
Per consentire a un argomento Amazon SNS di inviare messaggi a una coda Amazon SQS, scegli una delle seguenti opzioni:
-
Utilizzo del Console Amazon SQS
, che semplifica il processo. Per ulteriori informazioni, consulta Tutorial: Sottoscrizione di una coda Amazon SQS a un argomento Amazon SNS nella Guida per sviluppatori di Amazon Simple Queue Service. -
Utilizza le fasi seguenti:
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 di messaggi Amazon SNS a una coda Amazon SQS; in un altro account.
Per visualizzare un AWS CloudFormation modello che crea un argomento che invia messaggi a due code, consulta. Automatizza la messaggistica da Amazon SNS ad Amazon SQS con AWS CloudFormation
Fase 1: ottenere l'ARN della coda e dell'argomento
Quando esegui la sottoscrizione di una coda al tuo argomento, necessiti di una copia dell'ARN della coda. Analogamente, quando autorizzi l'argomento a inviare messaggi, necessiti di una copia dell'ARN dell'argomento.
Per ottenere l'ARN della coda, puoi utilizzare la console Amazon SQS o l'azione API. GetQueueAttributes
Ottenimento dell'ARN della coda dalla console Amazon SQS
Accedi AWS Management Console e apri la console Amazon SQS all'indirizzo. https://console.aws.amazon.com/sqs/
-
Seleziona la casella per la coda di cui intendi ottenere l'ARN.
-
Nella scheda Details (Dettagli), copia il valore dell'ARN in modo da utilizzarlo per la sottoscrizione all'argomento Amazon SNS.
Per ottenere l'ARN dell'argomento, puoi utilizzare la console Amazon SNS, il comando sns-get-topic-attributes
o l'operazione API GetQueueAttributes
.
Ottenimento dell'ARN dell'argomento dalla console Amazon SNS
Accedi alla console Amazon SNS
. -
Nel riquadro di navigazione, scegliere l'argomento di cui si desidera ottenere l'ARN.
-
Nella sezione Details (Dettagli), copiare il valore di ARN in modo da poterlo utilizzare per autorizzare l'argomento Amazon SNS a inviare messaggi alla coda.
Fase 2: Concedere all'argomento Amazon SNS l'autorizzazione a inviare messaggi alla coda Amazon SQS
Per consentire a un argomento Amazon SNS di inviare messaggi a una coda, devi definire una policy sulla coda che consenta all'argomento Amazon SNS di eseguire l'operazione sqs:SendMessage
.
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 policy su una coda, puoi utilizzare la console Amazon SQS o SetQueueAttributesl'azione API. Prima di iniziare, assicurati di avere l'ARN dell'argomento a cui intendi concedere l'autorizzazione a inviare 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
Accedi AWS Management Console e apri la console Amazon SQS all'indirizzo. https://console.aws.amazon.com/sqs/
-
Seleziona la casella della coda per la quale intendi impostare la policy, scegli la scheda Policy di accesso, quindi scegli Modifica.
-
Nella Policy di accesso, definire chi può accedere alla coda.
-
Aggiungi una condizione che autorizza l'operazione per l'argomento.
-
Impostare
Principal
come servizio Amazon SNS, come mostrato nell'esempio seguente. -
Utilizzare le chiavi di condizione globali
aws:SourceArn
oaws:SourceAccount
per proteggersi dallo scenario Confused deputy. Per utilizzare queste chiavi di condizione, impostare il valore sull'ARN del proprio argomento. Se la coda è sottoscritta a più argomenti, è possibile usare inveceaws:SourceAccount
.
Ad esempio, la seguente politica consente di MyTopic 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" } } } ] }
-
Fase 3: eseguire la sottoscrizione della coda all'argomento Amazon SNS
Per inviare messaggi a una coda tramite un argomento, devi eseguire la sottoscrizione della coda all'argomento Amazon SNS. La coda viene specificata mediante il relativo ARN. Per effettuare la sottoscrizione a un argomento, puoi utilizzare la console Amazon SNS, il comando della CLI sns-subscribe
o l'operazione API Subscribe
. Prima di iniziare, assicurati di avere l'ARN della coda per la quale intendi eseguire la sottoscrizione.
Accedi a Amazon SNS console
-
Nel pannello di navigazione, scegliere Argomenti.
-
Nella pagina Topics (Argomenti) scegliere un argomento.
-
Nella
MyTopic
pagina, nella pagina Abbonamenti, scegli Crea abbonamento. -
Nella pagina Crea sottoscrizione, nella sezione Dettagli, eseguire queste operazioni:
-
Verificare il valore Topic ARN (ARN argomento).
-
Per Protocollo, scegliere Amazon SQS.
-
Per Endpoint immettere l'ARN di una coda Amazon SQS.
-
Scegli Create Subscription (Crea sottoscrizione).
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 di messaggi Amazon SNS a una coda Amazon SQS; in un altro account.
-
Fase 4: concedere agli utenti le autorizzazioni per le operazioni appropriate su argomenti e code
È necessario utilizzare AWS Identity and Access Management (IAM) per consentire solo agli utenti appropriati di pubblicare sull'argomento Amazon SNS e di leggere/eliminare i messaggi dalla coda Amazon SQS. Per ulteriori informazioni sul controllo delle operazioni sugli argomenti e le code per gli utenti IAM, consulta Utilizzo di policy basate su identità con Amazon SNS, e Identity and Access Management in Amazon SQS nella Guida per sviluppatori di Amazon Simple Queue Service.
Esistono due modi di controllare l'accesso a un argomento o a una coda:
-
Aggiungere una policy a un utente o gruppo IAM. 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 autorizzazioni a un argomento o a una coda a un altro AWS account, l'unico modo per farlo è aggiungere una policy che abbia come principale quella a cui desideri concedere le autorizzazioni. Account AWS
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.
Aggiunta di una policy a un utente o gruppo IAM
Se aggiungessi la seguente policy a un utente o gruppo IAM, daresti a quell'utente o ai membri di quel gruppo il permesso di eseguire l'sns:Publish
azione sull'argomento MyTopic.
{ "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Se aggiungessi la seguente policy a un utente o gruppo IAM, daresti a quell'utente o ai membri di quel gruppo il permesso di 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 utenti IAM che dispongono di autorizzazioni di accesso a livello di amministratore (accesso con wildcard) a quella risorsa. L'accesso alla risorsa viene automaticamente negato a tutti gli altri utenti IAM nell'altro account. Se intendi concedere l'accesso alla risorsa a specifici utenti IAM in quel Account AWS , l'account o un utente IAM con accesso di livello amministratore deve delegare le autorizzazioni per la risorsa a quegli utenti IAM. Per ulteriori informazioni sulla delega multiaccount, consulta la sezione relativa all'abilitazione dell'accesso multiaccount nella Guida all'uso di 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 un argomento utilizzando la console Amazon SNS
-
Utilizzando le credenziali dell'utente Account AWS o IAM con autorizzazione alla pubblicazione sull'argomento, accedi AWS Management Console e apri la console Amazon SNS all'indirizzo. https://console.aws.amazon.com/sns/
-
Nel riquadro di navigazione, seleziona l'argomento e scegli Publish to Topic (Pubblica nell'argomento).
-
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).
Visualizzazione del messaggio dall'argomento utilizzando la console Amazon SQS
-
Utilizzando le credenziali dell'utente Account AWS o IAM autorizzato a visualizzare i messaggi in coda, accedi AWS Management Console e apri la console Amazon SQS all'indirizzo. https://console.aws.amazon.com/sqs/
-
Scegli una coda iscritta all'argomento.
-
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.
-
Nella colonna Body (Corpo), scegli More Details (Altri dettagli). La casella Message Details (Dettagli messaggio) contiene un documento JSON con l'oggetto e il messaggio che hai pubblicato nell'argomento. Il messaggio risulta simile al documento JSON seguente.
{ "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" }
-
Scegliere Close (Chiudi). La pubblicazione in un argomento che invia messaggi di notifica a una coda è completata.