

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
<a name="subscribe-sqs-queue-to-sns-topic"></a>

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](https://console.aws.amazon.com/sqs/), che semplifica il processo. Per ulteriori informazioni, consulta Tutorial: [Sottoscrizione di una coda Amazon SQS a un argomento Amazon SNS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-subscribe-queue-sns-topic.html) nella *Guida per sviluppatori di Amazon Simple Queue Service*.
+ Utilizza le fasi seguenti: 

  1. [Ottieni l'Amazon Resource Name (ARN) della coda a cui desideri inviare i messaggi e l'argomento a cui intendi sottoscrivere la coda.](#SendMessageToSQS.arn)

  1. [Concedi l'autorizzazione `sqs:SendMessage` all'argomento Amazon SNS in modo che possa inviare messaggi alla coda.](#SendMessageToSQS.sqs.permissions)

  1. [Sottoscrizione della coda all'argomento Amazon SNS.](#SendMessageToSQS.subscribe)

  1. [Concedi agli utenti IAM o agli Account AWS le autorizzazioni appropriate per pubblicare nell'argomento Amazon SNS e leggere i messaggi nella coda Amazon SQS.](#SendMessageToSQS.iam.permissions)

  1. [Verifica la procedura pubblicando un messaggio nell'argomento e leggendo il messaggio dalla coda.](#SendMessageToSQS.test)

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](sns-send-message-to-sqs-cross-account.md).

Per visualizzare un 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](SendMessageToSQS.cloudformation.md)

## Fase 1: ottenere l'ARN della coda e dell'argomento
<a name="SendMessageToSQS.arn"></a>

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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)

**Ottenimento dell'ARN della coda dalla console Amazon SQS**

1. Accedi Console di gestione AWS e apri la console Amazon SQS all'indirizzo. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Seleziona la casella per la coda di cui intendi ottenere l'ARN.

1. 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](https://docs.aws.amazon.com/cli/latest/reference/sns/get-topic-attributes.html)` o l'operazione API `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryGetQueueAttributes.html)`.

**Ottenimento dell'ARN dell'argomento dalla console Amazon SNS**

1. Accedi alla [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Nel riquadro di navigazione, scegliere l'argomento di cui si desidera ottenere l'ARN.

1. 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
<a name="SendMessageToSQS.sqs.permissions"></a>

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](sns-create-topic.md) e [Creare una coda](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-create-queue.html) nella *Guida per sviluppatori di Amazon Simple Queue Service*. 

Per impostare una policy su una coda, puoi utilizzare la console Amazon SQS o [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QuerySetQueueAttributes.html)l'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**

1. Accedi Console di gestione AWS e apri la console Amazon SQS all'indirizzo. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

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

1. 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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) o [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) per proteggersi dallo scenario [Confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Per utilizzare queste chiavi di condizione, impostare il valore sull'ARN del proprio argomento. Se la coda è sottoscritta a più argomenti, è possibile usare invece `aws: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
<a name="SendMessageToSQS.subscribe"></a>

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](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html)` o l'operazione API `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`. Prima di iniziare, assicurati di avere l'ARN della coda per la quale intendi eseguire la sottoscrizione.

1. Accedi a [Amazon SNS console](https://console.aws.amazon.com/sns/home)

1. Nel pannello di navigazione, scegliere **Argomenti**.

1. Nella pagina **Topics (Argomenti)** scegliere un argomento.

1. **Nella {{**MyTopic**}} pagina, nella pagina **Abbonamenti**, scegli Crea abbonamento.**

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

   1. Verificare il valore **Topic ARN (ARN argomento)**.

   1. Per **Protocollo**, scegliere **Amazon SQS**.

   1. Per **Endpoint** immettere l'ARN di una coda Amazon SQS.

   1. 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](sns-send-message-to-sqs-cross-account.md).

## Fase 4: concedere agli utenti le autorizzazioni per le operazioni appropriate su argomenti e code
<a name="SendMessageToSQS.iam.permissions"></a>

È necessario utilizzare AWS Identity and Access Management (IAM) per consentire solo agli utenti appropriati di pubblicare sull'argomento Amazon SNS e sui read/delete 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](sns-using-identity-based-policies.md), e [Identity and Access Management in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) 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](#SendMessageToSQS.iam.permissions.user). 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](#SendMessageToSQS.iam.permissions.resource). Se desideri concedere autorizzazioni a un argomento o creare una coda a un altro AWS account, l'unico modo per farlo è aggiungere una policy che abbia come principale quella a cui Account AWS 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.

### Aggiunta di una policy a un utente o gruppo IAM
<a name="SendMessageToSQS.iam.permissions.user"></a>

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
<a name="SendMessageToSQS.iam.permissions.resource"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) 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
<a name="SendMessageToSQS.test"></a>

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**

1. Utilizzando le credenziali dell'utente Account AWS o dell'utente IAM con autorizzazione alla pubblicazione sull'argomento, accedi Console di gestione AWS e apri la console Amazon SNS all'indirizzo. [https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/home)

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

1. 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**

1. Utilizzando le credenziali dell'utente Account AWS o dell'utente IAM con autorizzazione a visualizzare i messaggi in coda, accedi Console di gestione AWS e apri la console Amazon SQS all'indirizzo. [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. Scegli una **coda** iscritta all'argomento.

1. 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**. 

1. 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"
   }
   ```

1. Scegliere **Close (Chiudi)**. La pubblicazione in un argomento che invia messaggi di notifica a una coda è completata.