

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

# Richiamo di Lambda Event Functions con le notifiche Amazon SNS
<a name="with-sns"></a>

Puoi utilizzare una Lambda Event Function per elaborare le notifiche di Amazon Simple Notification Service (Amazon SNS). Amazon SNS supporta Lambda Event Functions come destinazione per i messaggi inviati a un argomento. Puoi sottoscrivere la funzione ad argomenti nello stesso account o in altri account AWS . Per la procedura guidata dettagliata, consulta [Tutorial: utilizzo AWS Lambda con Amazon Simple Notification Service](with-sns-example.md).

Lambda supporta i trigger SNS solo per argomenti SNS standard. Gli argomenti FIFO non sono supportati.

Lambda elabora i messaggi SNS in modo asincrono mettendoli in coda e gestendo i nuovi tentativi. Se Amazon SNS non è in grado di raggiungere Lambda o il messaggio viene rifiutato, Amazon SNS riprova a intervalli crescenti per diverse ore. Per ulteriori informazioni, consulta [Affidabilità](https://aws.amazon.com/sns/faqs/#Reliability) nelle domande frequenti su Amazon SNS.

**avvertimento**  
Le chiamate asincrone Lambda elaborano ogni evento almeno una volta e possono verificarsi elaborazioni duplicate dei record. Per evitare potenziali problemi legati agli eventi duplicati, ti consigliamo vivamente di rendere idempotente il codice della funzione. Per ulteriori informazioni, consulta [Come posso rendere idempotente la mia funzione Lambda](https://repost.aws/knowledge-center/lambda-function-idempotent) nel Knowledge Center. AWS 

## Utilità di idempotenza di Powertools per AWS Lambda
<a name="services-sns-powertools-idempotency"></a>

L'utilità di idempotenza di Powertools for AWS Lambda rende idempotenti le funzioni degli eventi Lambda. È disponibile per Python TypeScript, Java e.NET. [*Per ulteriori informazioni, vedere l'[utilità Idempotency](https://docs.aws.amazon.com/powertools/python/latest/utilities/idempotency/) nella documentazione di *Powertools for AWS Lambda (Python*), l'utilità Idempotency nella [documentazione di Powertools for Lambda (), l'utilità Idempotency](https://docs.aws.amazon.com/powertools/typescript/2.1.1/utilities/idempotency/) *nella documentazione di Powertools AWS for Lambda TypeScript (Java)* [e l'utilità Idempotency](https://docs.aws.amazon.com/powertools/java/latest/utilities/idempotency/) *nella documentazione di Powertools AWS for Lambda* (.NET). AWS *](https://docs.aws.amazon.com/powertools/dotnet/utilities/idempotency/)

**Topics**
+ [Utilità di idempotenza di Powertools per AWS Lambda](#services-sns-powertools-idempotency)
+ [Aggiungere un trigger tematico Amazon SNS per una funzione di eventi Lambda utilizzando la console](#sns-trigger-console)
+ [Aggiungere manualmente un trigger di argomento Amazon SNS per una funzione di evento Lambda](#sns-trigger-manual)
+ [Esempio di forma evento SNS](#sns-sample-event)
+ [Tutorial: utilizzo AWS Lambda con Amazon Simple Notification Service](with-sns-example.md)

## Aggiungere un trigger tematico Amazon SNS per una funzione di eventi Lambda utilizzando la console
<a name="sns-trigger-console"></a>

Per aggiungere un argomento SNS come trigger per una funzione di eventi Lambda, il modo più semplice è utilizzare la console Lambda. Quando aggiungi il trigger tramite la console, Lambda configura automaticamente le autorizzazioni e gli abbonamenti necessari per iniziare a ricevere eventi dall'argomento SNS.

**Per aggiungere un argomento SNS come trigger per una funzione evento Lambda (console)**

1. Apri la [pagina Event Functions](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegli il nome della funzione per la quale si desidera aggiungere il trigger.

1. Scegli **Configurazione**, quindi scegli **Trigger**.

1. Selezionare **Add trigger** (Aggiungi trigger).

1. In **Configurazione del trigger**, nell'elenco a discesa, scegli **SNS**.

1. Per **Argomento SNS**, scegli l'argomento SNS da sottoscrivere.

## Aggiungere manualmente un trigger di argomento Amazon SNS per una funzione di evento Lambda
<a name="sns-trigger-manual"></a>

Per configurare manualmente un trigger SNS per una funzione di eventi Lambda, devi completare i seguenti passaggi:
+ Definisci una policy basata sulle risorse per la tua funzione per consentire a SNS di richiamarla.
+ Sottoscrivi la tua funzione Lambda Event all'argomento Amazon SNS.
**Nota**  
Se il tuo argomento SNS e la tua Lambda Event Function si trovano in account AWS diversi, devi anche concedere autorizzazioni aggiuntive per consentire le sottoscrizioni tra account all'argomento SNS. Per maggiori informazioni, consulta [Concedere l'autorizzazioni tra account per la sottoscrizione di Amazon SNS](with-sns-example.md#with-sns-subscription-grant-permission).

Puoi usare AWS Command Line Interface (AWS CLI) per completare entrambi questi passaggi. Innanzitutto, per definire una politica basata sulle risorse per una funzione di eventi Lambda che consenta le chiamate SNS, usa il comando seguente. AWS CLI Assicurati di sostituire il valore di `--function-name` con il nome della tua Lambda Event Function e il valore di `--source-arn` con l'argomento SNS ARN.

```
aws lambda add-permission --function-name {{example-function}} \
    --source-arn {{arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda}} \
    --statement-id function-with-sns --action "lambda:InvokeFunction" \
    --principal sns.amazonaws.com
```

Per iscrivere la tua funzione all'argomento SNS, usa il comando seguente. AWS CLI Sostituisci il valore di `--topic-arn` con il tuo argomento SNS ARN e il valore `--notification-endpoint` di con il tuo Lambda Event Function ARN.

```
aws sns subscribe --protocol lambda \
    --region us-east-1 \
    --topic-arn {{arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda}} \
    --notification-endpoint {{arn:aws:lambda:us-east-1:123456789012:function:example-function}}
```

## Esempio di forma evento SNS
<a name="sns-sample-event"></a>

Amazon SNS richiama la funzione in modo [asincrono](invocation-async.md) con un evento che contiene un messaggio e dei metadati.

**Example Evento messaggio di Amazon SNS**  

```
{
  "Records": [
    {
      "EventVersion": "1.0",
      "EventSubscriptionArn": "arn:aws:sns:us-east-1:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
      "EventSource": "aws:sns",
      "Sns": {
        "SignatureVersion": "1",
        "Timestamp": "2019-01-02T12:45:07.000Z",
        "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==",
        "SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem",
        "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
        "Message": "Hello from SNS!",
        "MessageAttributes": {
          "Test": {
            "Type": "String",
            "Value": "TestString"
          },
          "TestBinary": {
            "Type": "Binary",
            "Value": "TestBinary"
          }
        },
        "Type": "Notification",
        "UnsubscribeUrl": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&amp;SubscriptionArn=arn:aws:sns:us-east-1:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486",
        "TopicArn":"arn:aws:sns:us-east-1:123456789012:sns-lambda",
        "Subject": "TestInvoke"
      }
    }
  ]
}
```