

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

# Esegui l'eliminazione delle notifiche Amazon SNS alle code di Amazon SQS per l'elaborazione asincrona
<a name="sns-sqs-as-subscriber"></a>

[Amazon SNS](https://aws.amazon.com/sns/) funziona a stretto contatto con Amazon Simple Queue Service (Amazon SQS). Questi servizi offrono numerosi vantaggi agli sviluppatori. Amazon SNS consente alle applicazioni di inviare messaggi con vincoli tempistici a più sottoscrittori grazie a un meccanismo "push", eliminando la necessità di cercare periodicamente gli aggiornamenti o di "eseguirne il polling". Amazon SQS; è un servizio di accodamento di messaggi utilizzato dalle applicazioni distribuite per scambiare messaggi mediante un modello di polling. Può essere utilizzato per separare i componenti di invio e ricezione, senza richiedere la disponibilità simultanea di tutti i componenti. Grazie all'integrazione di Amazon SNS con Amazon SQS, è possibile recapitare i messaggi alle applicazioni che richiedono la notifica immediata di un evento e renderli persistenti in una coda Amazon SQS in modo da essere elaborati in seguito da altre applicazioni. 

Quando esegui la sottoscrizione di una coda Amazon SQS; a un argomento Amazon SNS, puoi pubblicare un messaggio nell'argomento e Amazon SNS invia un messaggio Amazon SQS alla coda per la quale è stata eseguita la sottoscrizione. Il messaggio Amazon SQS contiene l'oggetto e il messaggio pubblicati nell'argomento insieme ai metadati relativi al messaggio in un documento JSON. Il messaggio Amazon SQS sarà 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"
}
```

# 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\$1**) 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.

# Automatizza la messaggistica da Amazon SNS ad Amazon SQS con AWS CloudFormation
<a name="SendMessageToSQS.cloudformation"></a>

CloudFormation consente di utilizzare un file modello per creare e configurare una raccolta di AWS risorse insieme come una singola unità. Questa sezione include un modello di esempio in grado di semplificare la distribuzione di argomenti che effettuano pubblicazioni nelle code. I modelli eseguono automaticamente la procedura di configurazione creando due code e un argomento con sottoscrizioni alle code, aggiungendo una policy alle code affinché l'argomento possa inviare messaggi alle code e creando utenti e gruppi IAM per controllare l'accesso a tali risorse.

Per ulteriori informazioni sulla distribuzione AWS delle risorse utilizzando un CloudFormation modello, consulta la Guida [introduttiva](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) nella *Guida per l'CloudFormation utente*.

## Utilizzo di un CloudFormation modello per configurare argomenti e code all'interno di un Account AWS
<a name="SendMessageToSQS.cloudformation.iam"></a>

Il modello di esempio crea un argomento Amazon SNS in grado di inviare messaggi a due code Amazon SQS con autorizzazioni appropriate per consentire ai membri di un gruppo IAM di pubblicare nell'argomento e a un altro gruppo di leggere messaggi dalle code. Il modello crea inoltre utenti IAM che vengono aggiunti a ogni gruppo.

Copiare il contenuto del modello in un file. [Puoi anche scaricare il modello dalla pagina Modelli.AWS CloudFormation ](https://aws.amazon.com/cloudformation/aws-cloudformation-templates/) Nella pagina dei modelli, scegli **Sfoglia modelli di esempio per AWS servizio**, quindi scegli **Amazon Simple Queue Service**. 

My SNSTopic è configurato per pubblicare su due endpoint sottoscritti, che sono due code Amazon SQS MyQueue (1 e 2). MyQueue MyPublishTopicGroup [è un gruppo IAM i cui membri sono autorizzati a pubblicare su My SNSTopic utilizzando l'azione Publish API o il [comando sns-publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html) Il modello crea gli utenti IAM MyPublishUser MyQueueUser e fornisce loro profili di accesso e chiavi di accesso. L'utente che crea uno stack con questo modello specifica le password per i profili di accesso come parametri di input. Il modello crea chiavi di accesso per i due utenti IAM con MyPublishUserKey e MyQueueUserKey. AddUserToMyPublishTopicGroup si aggiunge MyPublishUser a MyPublishTopicGroup in modo che all'utente vengano assegnate le autorizzazioni al gruppo.

My RDMessage QueueGroup è un gruppo IAM i cui membri sono autorizzati a leggere ed eliminare messaggi dalle due code di Amazon SQS utilizzando le azioni [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html)e [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryDeleteMessage.html)API. AddUserToMyQueueGroup si aggiunge MyQueueUser a My RDMessage QueueGroup in modo che all'utente vengano assegnate le autorizzazioni al gruppo. MyQueuePolicy assegna il permesso SNSTopic a My di pubblicare le sue notifiche nelle due code.

L'elenco seguente mostra il contenuto del CloudFormation modello.

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  
  "Description" : "AWS CloudFormation Sample Template SNSToSQS: This Template creates an SNS topic that can send messages to 
  two SQS queues with appropriate permissions for one IAM user to publish to the topic and another to read messages from the queues. 
  MySNSTopic is set up to publish to two subscribed endpoints, which are two SQS queues (MyQueue1 and MyQueue2). MyPublishUser is an IAM user 
  that can publish to MySNSTopic using the Publish API. MyTopicPolicy assigns that permission to MyPublishUser. MyQueueUser is an IAM user 
  that can read messages from the two SQS queues. MyQueuePolicy assigns those permissions to MyQueueUser. It also assigns permission for 
  MySNSTopic to publish its notifications to the two queues. The template creates access keys for the two IAM users with MyPublishUserKey 
  and MyQueueUserKey. ***Warning*** you will be billed for the AWS resources used if you create a stack from this template.",

  "Parameters": {
    "MyPublishUserPassword": {
      "NoEcho": "true",
      "Type": "String",
      "Description": "Password for the IAM user MyPublishUser",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern": "[a-zA-Z0-9]*",
      "ConstraintDescription": "must contain only alphanumeric characters."
    },
    "MyQueueUserPassword": {
      "NoEcho": "true",
      "Type": "String",
      "Description": "Password for the IAM user MyQueueUser",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern": "[a-zA-Z0-9]*",
      "ConstraintDescription": "must contain only alphanumeric characters."
    }
  },


  "Resources": {
    "MySNSTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "Subscription": [{
            "Endpoint": {
              "Fn::GetAtt": ["MyQueue1", "Arn"]
            },
            "Protocol": "sqs"
          },
          {
            "Endpoint": {
              "Fn::GetAtt": ["MyQueue2", "Arn"]
            },
            "Protocol": "sqs"
          }
        ]
      }
    },
    "MyQueue1": {
      "Type": "AWS::SQS::Queue"
    },
    "MyQueue2": {
      "Type": "AWS::SQS::Queue"
    },
    "MyPublishUser": {
      "Type": "AWS::IAM::User",
      "Properties": {
        "LoginProfile": {
          "Password": {
            "Ref": "MyPublishUserPassword"
          }
        }
      }
    },
    "MyPublishUserKey": {
      "Type": "AWS::IAM::AccessKey",
      "Properties": {
        "UserName": {
          "Ref": "MyPublishUser"
        }
      }
    },
    "MyPublishTopicGroup": {
      "Type": "AWS::IAM::Group",
      "Properties": {
        "Policies": [{
          "PolicyName": "MyTopicGroupPolicy",
          "PolicyDocument": {
            "Statement": [{
              "Effect": "Allow",
              "Action": [
                "sns:Publish"
              ],
              "Resource": {
                "Ref": "MySNSTopic"
              }
            }]
          }
        }]
      }
    },
    "AddUserToMyPublishTopicGroup": {
      "Type": "AWS::IAM::UserToGroupAddition",
      "Properties": {
        "GroupName": {
          "Ref": "MyPublishTopicGroup"
        },
        "Users": [{
          "Ref": "MyPublishUser"
        }]
      }
    },
    "MyQueueUser": {
      "Type": "AWS::IAM::User",
      "Properties": {
        "LoginProfile": {
          "Password": {
            "Ref": "MyQueueUserPassword"
          }
        }
      }
    },
    "MyQueueUserKey": {
      "Type": "AWS::IAM::AccessKey",
      "Properties": {
        "UserName": {
          "Ref": "MyQueueUser"
        }
      }
    },
    "MyRDMessageQueueGroup": {
      "Type": "AWS::IAM::Group",
      "Properties": {
        "Policies": [{
          "PolicyName": "MyQueueGroupPolicy",
          "PolicyDocument": {
            "Statement": [{
              "Effect": "Allow",
              "Action": [
                "sqs:DeleteMessage",
                "sqs:ReceiveMessage"
              ],
              "Resource": [{
                  "Fn::GetAtt": ["MyQueue1", "Arn"]
                },
                {
                  "Fn::GetAtt": ["MyQueue2", "Arn"]
                }
              ]
            }]
          }
        }]
      }
    },
    "AddUserToMyQueueGroup": {
      "Type": "AWS::IAM::UserToGroupAddition",
      "Properties": {
        "GroupName": {
          "Ref": "MyRDMessageQueueGroup"
        },
        "Users": [{
          "Ref": "MyQueueUser"
        }]
      }
    },
    "MyQueuePolicy": {
      "Type": "AWS::SQS::QueuePolicy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [{
            "Effect": "Allow",
            "Principal": {
              "Service": "sns.amazonaws.com"
            },
            "Action": ["sqs:SendMessage"],
            "Resource": "*",
            "Condition": {
              "ArnEquals": {
                "aws:SourceArn": {
                  "Ref": "MySNSTopic"
                }
              }
            }
          }]
        },
        "Queues": [{
          "Ref": "MyQueue1"
        }, {
          "Ref": "MyQueue2"
        }]
      }
    }
  },
  "Outputs": {
    "MySNSTopicTopicARN": {
      "Value": {
        "Ref": "MySNSTopic"
      }
    },
    "MyQueue1Info": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueue1", "Arn"]
            },
            "URL:",
            {
              "Ref": "MyQueue1"
            }
          ]
        ]
      }
    },
    "MyQueue2Info": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueue2", "Arn"]
            },
            "URL:",
            {
              "Ref": "MyQueue2"
            }
          ]
        ]
      }
    },
    "MyPublishUserInfo": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyPublishUser", "Arn"]
            },
            "Access Key:",
            {
              "Ref": "MyPublishUserKey"
            },
            "Secret Key:",
            {
              "Fn::GetAtt": ["MyPublishUserKey", "SecretAccessKey"]
            }
          ]
        ]
      }
    },
    "MyQueueUserInfo": {
      "Value": {
        "Fn::Join": [
          " ",
          [
            "ARN:",
            {
              "Fn::GetAtt": ["MyQueueUser", "Arn"]
            },
            "Access Key:",
            {
              "Ref": "MyQueueUserKey"
            },
            "Secret Key:",
            {
              "Fn::GetAtt": ["MyQueueUserKey", "SecretAccessKey"]
            }
          ]
        ]
      }
    }
  }
}
```