

Avviso di fine del supporto: il 7 ottobre 2026, AWS il supporto per. AWS IoT Greengrass Version 1 Dopo il 7 ottobre 2026, non potrai più accedere alle risorse. AWS IoT Greengrass V1 Per ulteriori informazioni, visita [Migrate](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html) from. AWS IoT Greengrass Version 1

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

# Connettore SNS
<a name="sns-connector"></a>

Il [connettore](connectors.md) SNS pubblica messaggi su un argomento di Amazon SNS. Ciò consente ai server Web, agli indirizzi e-mail e agli altri abbonati al messaggio di rispondere agli eventi nel gruppo Greengrass.

Questo connettore riceve informazioni sui messaggi SNS in un argomento MQTT, quindi invia il messaggio a un argomento SNS specificato. Facoltativamente, puoi utilizzare funzioni Lambda personalizzate per implementare la logica di filtraggio o formattazione sui messaggi prima che vengano pubblicati su questo connettore.

Questo connettore ha le seguenti versioni.


| Versione | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:region::/connectors/SNS/versions/4` | 
| 3 | `arn:aws:greengrass:region::/connectors/SNS/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/SNS/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/SNS/versions/1` | 

Per informazioni sulle modifiche di ogni versione, consulta [Changelog](#sns-connector-changelog).

## Requisiti
<a name="sns-connector-req"></a>

Questo connettore presenta i seguenti requisiti:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Software principale v1.9.3 o successivo.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versione 3.7 o 3.8 installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH.
**Nota**  <a name="use-runtime-py3.8"></a>
Per usare Python 3.8, esegui il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.
+ <a name="conn-sns-req-sns-config"></a>Un argomento SNS configurato. Per le istruzioni, consulta [Creazione di un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) nella *Guida per lo Sviluppatore di Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Il [ruolo del gruppo Greengrass](group-role.md) è configurato per consentire l'`sns:Publish`azione sull'Amazon di destinazione SNStopic, come mostrato nel seguente esempio di policy IAM.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Questo connettore consente di sostituire dinamicamente l'argomento predefinito nel payload del messaggio di input. Se l'implementazione utilizza questa funzionalità, la policy IAM deve consentire l'`sns:Publish`autorizzazione su tutti gli argomenti di destinazione. Puoi concedere alle risorse un accesso granulare o condizionale (ad esempio, utilizzando uno schema di denominazione con il carattere jolly \$1).

  <a name="set-up-group-role"></a>Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta [Gestione del ruolo del gruppo Greengrass (console)](group-role.md#manage-group-role-console) o [Gestione del ruolo del gruppo Greengrass (CLI)](group-role.md#manage-group-role-cli).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Software di base v1.7 o successivo.
+ [Python](https://www.python.org/) versione 2.7 installato sul dispositivo principale e aggiunto alla variabile di ambiente PATH.
+ <a name="conn-sns-req-sns-config"></a>Un argomento SNS configurato. Per le istruzioni, consulta [Creazione di un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) nella *Guida per lo Sviluppatore di Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Il [ruolo del gruppo Greengrass](group-role.md) è configurato per consentire l'`sns:Publish`azione sull'Amazon di destinazione SNStopic, come mostrato nel seguente esempio di policy IAM.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:us-east-1:123456789012:topic-name"
              ]
          }
      ]
  }
  ```

------

  Questo connettore consente di sostituire dinamicamente l'argomento predefinito nel payload del messaggio di input. Se l'implementazione utilizza questa funzionalità, la policy IAM deve consentire l'`sns:Publish`autorizzazione su tutti gli argomenti di destinazione. Puoi concedere alle risorse un accesso granulare o condizionale (ad esempio, utilizzando uno schema di denominazione con il carattere jolly \$1).

  <a name="set-up-group-role"></a>Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta [Gestione del ruolo del gruppo Greengrass (console)](group-role.md#manage-group-role-console) o [Gestione del ruolo del gruppo Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parametri del connettore
<a name="sns-connector-param"></a>

Questo connettore fornisce i seguenti parametri:

------
#### [ Version 4 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
L'ARN dell'argomento SNS predefinito in cui pubblicare i messaggi. L'argomento di destinazione può essere ignorato con la proprietà `sns_topic_arn` del payload del messaggio di input.  
Il ruolo del gruppo deve permettere l'autorizzazione `sns:Publish` a tutti gli argomenti di destinazione. Per ulteriori informazioni, consulta [Requisiti](#sns-connector-req).
Nome visualizzato nella AWS IoT console: **argomento SNS predefinito** ARN  
Obbligatorio: `true`  
Tipo: `string`  
Modello valido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
Modalità di [containerizzazione](connectors.md#connector-containerization) per questo connettore. L'impostazione predefinita è`GreengrassContainer`, il che significa che il connettore viene eseguito in un ambiente di runtime isolato all'interno del AWS IoT Greengrass contenitore.  
L'impostazione predefinita della containerizzazione per il gruppo non si applica ai connettori.
Nome visualizzato nella AWS IoT console: **modalità di isolamento del contenitore**  
Obbligatorio: `false`  
Tipo: `string`  
Valori validi: `GreengrassContainer` o `NoContainer`  
Modello valido: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 1 - 3 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
L'ARN dell'argomento SNS predefinito in cui pubblicare i messaggi. L'argomento di destinazione può essere ignorato con la proprietà `sns_topic_arn` del payload del messaggio di input.  
Il ruolo del gruppo deve permettere l'autorizzazione `sns:Publish` a tutti gli argomenti di destinazione. Per ulteriori informazioni, consulta [Requisiti](#sns-connector-req).
Nome visualizzato nella AWS IoT console: **argomento SNS predefinito** ARN  
Obbligatorio: `true`  
Tipo: `string`  
Modello valido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Esempio di creazione di un connettore (AWS CLI)
<a name="sns-connector-create"></a>

Il seguente comando CLI crea un file `ConnectorDefinition` con una versione iniziale che contiene il connettore SNS.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySNSConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/SNS/versions/4",
            "Parameters": {
                "DefaultSNSArn": "arn:aws:sns:region:account-id:topic-name",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

Nella AWS IoT Greengrass console, puoi aggiungere un connettore dalla pagina **Connettori** del gruppo. Per ulteriori informazioni, consulta [Nozioni di base sui connettori Greengrass (console)](connectors-console.md).

## Dati di input
<a name="sns-connector-data-input"></a>

Questo connettore accetta informazioni sui messaggi SNS su un argomento MQTT, quindi pubblica il messaggio così com'è nell'argomento SNS di destinazione. I messaggi di input devono essere in formato JSON.

<a name="topic-filter"></a>**Filtro argomento in sottoscrizione**  
`sns/message`

**Proprietà dei messaggi**    
`request`  
Informazioni sul messaggio da inviare all'argomento SNS.  
Obbligatorio: `true`  
Tipo: `object` che include le seguenti proprietà:    
`message`  
Il contenuto del messaggio come stringa o in formato JSON. Per degli esempi, vedi [Input di esempio](#sns-connector-data-input-example).  
Per inviare JSON, la proprietà `message_structure` deve essere impostata su `json` e il messaggio deve essere un oggetto JSON codificato come stringa che contiene una chiave `default`.  
Obbligatorio: `true`  
Tipo: `string`  
Modello valido: `.*`  
`subject`  
L'oggetto del messaggio.  
Obbligatorio: `false`  
Tipo: testo ASCII, fino a 100 caratteri. Deve iniziare con una lettera, un numero o un segno di punteggiatura. Non deve contenere interruzioni di riga né caratteri di controllo.  
Modello valido: `.*`  
`sns_topic_arn`  
L'ARN dell'argomento SNS in cui pubblicare i messaggi. Se specificato, il connettore effettua la pubblicazione in questo argomento anziché in quello predefinito.  
Il ruolo del gruppo deve permettere l'autorizzazione `sns:Publish` a qualsiasi argomento di destinazione. Per ulteriori informazioni, consulta [Requisiti](#sns-connector-req).
Obbligatorio: `false`  
Tipo: `string`  
Schema valido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
La struttura del messaggio.  
Obbligatorio: `false`. Questo deve essere specificato per inviare un messaggio JSON.  
Tipo: `string`  
Valori validi: `json`  
`id`  
Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output. Quando specificato, la proprietà `id` nell'oggetto della risposta è impostata su questo valore. Se non utilizzi questa funzione, puoi omettere la proprietà oppure specificare una stringa vuota.  
Obbligatorio: `false`  
Tipo: `string`  
Schema valido: `.*`

**Limiti**  
Le dimensioni dei messaggi SNS non devono superare i 256 KB.

**Input di esempio: messaggio in formato stringa**  <a name="sns-connector-data-input-example"></a>
In questo esempio viene inviato un messaggio in formato stringa. Specifica la proprietà facoltativa `sns_topic_arn`, che sostituisce l'argomento di destinazione predefinito.  

```
{
    "request": {
        "subject": "Message subject",
        "message": "Message data",
        "sns_topic_arn": "arn:aws:sns:region:account-id:topic2-name"
    },
    "id": "request123"
}
```

**Input di esempio: messaggio JSON**  
Questo esempio invia un messaggio come oggetto JSON codificato come stringa che include la chiave `default`.  

```
{
    "request": {
        "subject": "Message subject",
        "message": "{ \"default\": \"Message data\" }",
        "message_structure": "json"
    },
    "id": "request123"
}
```

## Dati di output
<a name="sns-connector-data-output"></a>

Questo connettore pubblica le informazioni di stato come dati di output su un argomento MQTT.

<a name="topic-filter"></a>**Filtro argomento in sottoscrizione**  
`sns/message/status`

**Output di esempio: Operazione riuscita**  

```
{
    "response": {
        "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a",
        "status": "success"
    },
    "id": "request123"
}
```

**Esempio di output: Errore**  

```
{
   "response" : {
        "error": "InvalidInputException",
        "error_message": "SNS Topic Arn is invalid",
        "status": "fail"
   },
   "id": "request123"
}
```

## Esempio di utilizzo
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>Usa i seguenti passaggi di alto livello per configurare una funzione Lambda di esempio di Python 3.7 che puoi usare per provare il connettore.

**Nota**  <a name="connectors-setup-get-started-topics"></a>
Se usi altri runtime Python, puoi creare un collegamento simbolico da Python3.x a Python 3.7.
Gli argomenti [Nozioni di base sui connettori (console)](connectors-console.md) e [Nozioni di base sui connettori (CLI)](connectors-cli.md) contengono passaggi dettagliati che illustrano come configurare e distribuire un connettore Twilio Notifications di esempio.

1. Assicurarsi di soddisfare i [requisiti](#sns-connector-req) per il connettore.

   <a name="set-up-group-role"></a>Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta [Gestione del ruolo del gruppo Greengrass (console)](group-role.md#manage-group-role-console) o [Gestione del ruolo del gruppo Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Crea e pubblica una funzione Lambda che invia dati di input al connettore.

   Salvare il [codice di esempio](#sns-connector-usage-example) come file PY. <a name="connectors-setup-function-sdk"></a>Scarica e decomprimi il [AWS IoT Greengrass Core SDK per Python](lambda-functions.md#lambda-sdks-core). Quindi, crea un pacchetto zip che contiene il file PY e la cartella `greengrasssdk` a livello root. Questo pacchetto zip è il pacchetto di distribuzione in cui carichi. AWS Lambda

   <a name="connectors-setup-function-publish"></a>Dopo aver creato la funzione Python 3.7 Lambda, pubblica una versione della funzione e crea un alias.

1. Configurare il gruppo Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Aggiungi la funzione Lambda tramite il relativo alias (consigliato). Configura il ciclo di vita Lambda come longevo (o nella `"Pinned": true` CLI).

   1. Aggiungere il connettore e configurarne i relativi [parametri](#sns-connector-param).

   1. Aggiungere sottoscrizioni che consentono al connettore di ricevere [i dati di input](#sns-connector-data-input) e inviare [i dati di output](#sns-connector-data-output) nei filtri degli argomenti supportati.
      + <a name="connectors-setup-subscription-input-data"></a>Imposta la funzione Lambda come origine, il connettore come destinazione e utilizza un filtro per argomenti di input supportato.
      + <a name="connectors-setup-subscription-output-data"></a>Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Utilizzi questo abbonamento per visualizzare i messaggi di stato nella AWS IoT console.

1. <a name="connectors-setup-deploy-group"></a>Distribuisci il gruppo.

1. <a name="connectors-setup-test-sub"></a>Nella AWS IoT console, nella pagina **Test**, sottoscrivi l'argomento relativo ai dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio è di lunga durata e inizia a inviare messaggi subito dopo l'implementazione del gruppo.

   Al termine del test, puoi impostare il ciclo di vita Lambda su richiesta (o nella CLI) e `"Pinned": false` distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.

### Esempio
<a name="sns-connector-usage-example"></a>

L'esempio seguente della funzione Lambda invia un messaggio di input al connettore.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'sns/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "message": "Message from SNS Connector Test"
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Licenze
<a name="sns-connector-license"></a>

Il connettore SNS include i seguenti software/licenze di terze parti:<a name="boto-3-licenses"></a>
+ [AWS SDK per Python (Boto3)](https://pypi.org/project/boto3/)/Apache License 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT License

Questo connettore è rilasciato ai sensi del contratto di [licenza del software Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="sns-connector-changelog"></a>

La tabella seguente descrive le modifiche apportate a ciascuna versione del connettore.


| Versione | Modifiche | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Aggiunto il parametro `IsolationMode` per configurare la modalità di containerizzazione per il connettore. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>È stato aggiornato il runtime Lambda a Python 3.7, che modifica i requisiti di runtime. | 
| 2 | Correggere per ridurre l'eccessiva registrazione di log. | 
| 1 | Versione iniziale.  | 

<a name="one-conn-version"></a>Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta [Aggiornamento delle versioni dei connettori](connectors.md#upgrade-connector-versions).

## Consulta anche
<a name="sns-connector-see-also"></a>
+ [Integrazione con servizi e protocolli tramite i connettori Greengrass](connectors.md)
+ [Nozioni di base sui connettori Greengrass (console)](connectors-console.md)
+ [Nozioni di base sui connettori Greengrass (CLI)](connectors-cli.md)
+ [Operazione di pubblicazione](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) nella documentazione Boto 3
+ [Cos'è Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*