

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Le [connecteur](connectors.md) SNS publie des messages sur une rubrique Amazon SNS. Cela permet aux serveurs Web, aux adresses de messagerie et aux abonnés à d'autres messages de répondre à des événements dans le groupe Greengrass.

Ce connecteur reçoit des informations de message SNS dans une rubrique MQTT, puis envoie le message à une rubrique SNS spécifiée. Vous pouvez éventuellement utiliser des fonctions Lambda personnalisées pour implémenter une logique de filtrage ou de formatage sur les messages avant leur publication sur ce connecteur.

Ce connecteur est disponible dans les versions suivantes.


| Version | 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` | 

Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le [Journal des modifications](#sns-connector-changelog).

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

Ce connecteur possède les critères suivants :

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Logiciel de base v1.9.3 ou version ultérieure.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) version 3.7 ou 3.8 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
**Note**  <a name="use-runtime-py3.8"></a>
Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation par défaut de Python 3.7 et les fichiers binaires Python 3.8 installés.  

  ```
  sudo ln -s {{path-to-python-3.8}}/python3.8 /usr/bin/python3.7
  ```
Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.
+ <a name="conn-sns-req-sns-config"></a>Rubrique SNS configurée. Pour plus d'informations, consultez [Création d'une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) dans le *Guide du développeur Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Le [rôle de groupe Greengrass](group-role.md) est configuré pour autoriser l'`sns:Publish`action sur l'Amazon SNSTopic cible, comme illustré dans l'exemple de politique IAM suivant.

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

****  

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

------

  Ce connecteur vous permet de remplacer la rubrique par défaut de façon dynamique dans la charge utile des messages d'entrée. Si votre implémentation utilise cette fonctionnalité, la politique IAM doit `sns:Publish` autoriser l'accès à tous les sujets cibles. Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique \*).

  <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Logiciel de base v1.7 ou version ultérieure.
+ [Python](https://www.python.org/) version 2.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
+ <a name="conn-sns-req-sns-config"></a>Rubrique SNS configurée. Pour plus d'informations, consultez [Création d'une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) dans le *Guide du développeur Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>Le [rôle de groupe Greengrass](group-role.md) est configuré pour autoriser l'`sns:Publish`action sur l'Amazon SNSTopic cible, comme illustré dans l'exemple de politique IAM suivant.

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

****  

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

------

  Ce connecteur vous permet de remplacer la rubrique par défaut de façon dynamique dans la charge utile des messages d'entrée. Si votre implémentation utilise cette fonctionnalité, la politique IAM doit `sns:Publish` autoriser l'accès à tous les sujets cibles. Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique \*).

  <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).

------

## Paramètres du connecteur
<a name="sns-connector-param"></a>

Ce connecteur fournit les paramètres suivants :

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
ARN de la rubrique SNS par défaut vers lequel publier les messages. La rubrique de destination peut être remplacée par la propriété `sns_topic_arn` dans la charge utile du message d'entrée.  
Le rôle de groupe doit permettre l'autorisation `sns:Publish` à toutes les rubriques cibles. Pour de plus amples informations, veuillez consulter [Exigences](#sns-connector-req).
Nom affiché dans la AWS IoT console : ARN de la **rubrique SNS par défaut**  
Nécessaire : `true`  
Type : `string`  
Schéma valide : `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
Mode [conteneurisation](connectors.md#connector-containerization) de ce connecteur. La valeur par défaut est`GreengrassContainer`, ce qui signifie que le connecteur s'exécute dans un environnement d'exécution isolé à l'intérieur du AWS IoT Greengrass conteneur.  
Le paramètre de conteneurisation par défaut pour le groupe ne s'applique pas aux connecteurs.
Nom affiché dans la AWS IoT console : **mode d'isolation du conteneur**  
Nécessaire : `false`  
Type : `string`  
Valeurs valides : `GreengrassContainer` ou `NoContainer`  
Schéma valide : `^NoContainer$|^GreengrassContainer$`

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
ARN de la rubrique SNS par défaut vers lequel publier les messages. La rubrique de destination peut être remplacée par la propriété `sns_topic_arn` dans la charge utile du message d'entrée.  
Le rôle de groupe doit permettre l'autorisation `sns:Publish` à toutes les rubriques cibles. Pour de plus amples informations, veuillez consulter [Exigences](#sns-connector-req).
Nom affiché dans la AWS IoT console : ARN de la **rubrique SNS par défaut**  
Nécessaire : `true`  
Type : `string`  
Schéma valide : `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Exemple de création d'un connecteur (AWS CLI)
<a name="sns-connector-create"></a>

La commande CLI suivante crée un `ConnectorDefinition` avec une version initiale contenant le connecteur 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"
            }
        }
    ]
}'
```

Dans la AWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page **Connecteurs** du groupe. Pour de plus amples informations, veuillez consulter [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md).

## Données d’entrée
<a name="sns-connector-data-input"></a>

Ce connecteur accepte les informations des messages SNS sur un sujet MQTT, puis publie le message tel quel sur le sujet SNS cible. Les messages d'entrée doivent être au format JSON.

<a name="topic-filter"></a>**Filtre de rubrique dans l'abonnement**  
`sns/message`

**Propriétés des messages**    
`request`  
Informations sur le message à envoyer à la rubrique SNS.  
Nécessaire : `true`  
Type : `object` qui inclut les propriétés suivantes :    
`message`  
Contenu du message sous forme de chaîne ou au format JSON. Pour obtenir des exemples, consultez [Exemple d'entrée](#sns-connector-data-input-example).  
Pour envoyer le fichier JSON, la propriété `message_structure` doit être définie sur `json` et le message doit être un objet JSON encodé en chaîne qui contient une clé `default`.  
Nécessaire : `true`  
Type : `string`  
Schéma valide : `.*`  
`subject`  
Objet du message.  
Nécessaire : `false`  
Type : texte ASCII, 100 caractères maximum. Il doit commencer par une lettre, un nombre ou un signe de ponctuation. Il ne doit pas inclure de sauts de ligne ou de caractères de contrôle.  
Schéma valide : `.*`  
`sns_topic_arn`  
ARN de la rubrique SNS vers lequel publier les messages. S'il est spécifié, le connecteur publie dans cette rubrique au lieu de la rubrique par défaut.  
Le rôle de groupe doit permettre l'autorisation `sns:Publish` à n'importe quelles rubriques cibles. Pour de plus amples informations, veuillez consulter [Exigences](#sns-connector-req).
Nécessaire : `false`  
Type : `string`  
Schéma valide : `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
Structure du message.  
Obligatoire : `false`. Cela doit être spécifié pour envoyer un message JSON.  
Type : `string`  
Valeurs valides : `json`  
`id`  
ID arbitraire de la demande. Cette propriété est utilisée pour mapper une demande d'entrée à une réponse de sortie. Lorsque spécifiée, la propriété `id` dans l'objet de réponse est définie sur cette valeur. Si vous n'utilisez pas cette fonctionnalité, vous pouvez omettre cette propriété ou spécifier une chaîne vide.  
Nécessaire : `false`  
Type : `string`  
Schéma valide : `.*`

**Restrictions**  
La taille du message est délimitée par la taille maximale d'un message SNS de 256 Ko.

**Exemple d'entrée : message de type chaîne**  <a name="sns-connector-data-input-example"></a>
Cet exemple envoie un message de type chaîne. Il spécifie la propriété `sns_topic_arn` facultative, qui remplace la rubrique de destination par défaut.  

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

**Exemple d'entrée : message JSON**  
Cet exemple envoie un message sous forme d'objet JSON encodé en chaîne incluant la clé `default`.  

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

## Données de sortie
<a name="sns-connector-data-output"></a>

Ce connecteur publie des informations d'état sous forme de données de sortie dans une rubrique MQTT.

<a name="topic-filter"></a>**Filtre de rubrique dans l'abonnement**  
`sns/message/status`

**Exemple de sortie : réussite**  

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

**Exemple de sortie : échec**  

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

## Exemple d'utilisation
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>Suivez les étapes de haut niveau suivantes pour configurer un exemple de fonction Lambda en Python 3.7 que vous pouvez utiliser pour tester le connecteur.

**Note**  <a name="connectors-setup-get-started-topics"></a>
Si vous utilisez d'autres environnements d'exécution Python, vous pouvez créer un lien symbolique depuis Python3.x Python 3.7.
Les rubriques [Démarrer avec les connecteurs (console)](connectors-console.md) et [Démarrer avec les connecteurs (CLI)](connectors-cli.md) contiennent des étapes détaillées qui vous montrent comment configurer et déployer un exemple de connecteur Twilio Notifications.

1. Veillez à répondre aux [conditions requises](#sns-connector-req) pour le connecteur.

   <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Créez et publiez une fonction Lambda qui envoie des données d'entrée au connecteur.

   Enregistrez l'[exemple de code](#sns-connector-usage-example) en tant que fichier PY. <a name="connectors-setup-function-sdk"></a>Téléchargez et décompressez le [SDK AWS IoT Greengrass de base pour Python](lambda-functions.md#lambda-sdks-core). Ensuite, créez un package zip contenant le fichier PY et le dossier `greengrasssdk` au niveau racine. Ce package zip est le package de déploiement vers lequel vous effectuez le téléchargement AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Après avoir créé la fonction Lambda de Python 3.7, publiez une version de la fonction et créez un alias.

1. Configurez votre groupe Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Ajoutez la fonction Lambda par son alias (recommandé). Configurez le cycle de vie Lambda comme étant de longue durée (ou dans `"Pinned": true` la CLI).

   1. Ajoutez le connecteur et configurez ses [paramètres](#sns-connector-param).

   1. Ajoutez des abonnements qui permettent au connecteur de recevoir des [données d'entrée](#sns-connector-data-input) et d'envoyer des [données de sortie](#sns-connector-data-output) sur des filtres de rubrique pris en charge.
      + <a name="connectors-setup-subscription-input-data"></a>Définissez la fonction Lambda comme source, le connecteur comme cible et utilisez un filtre de rubrique d'entrée compatible.
      + <a name="connectors-setup-subscription-output-data"></a>Définissez le connecteur en tant que source, AWS IoT Core en tant que cible et utilisez un filtre de rubrique de sortie pris en charge. Vous utilisez cet abonnement pour afficher les messages d'état dans la AWS IoT console.

1. <a name="connectors-setup-deploy-group"></a>Déployez le groupe.

1. <a name="connectors-setup-test-sub"></a>Dans la AWS IoT console, sur la page **Test**, abonnez-vous à la rubrique relative aux données de sortie pour consulter les messages d'état provenant du connecteur. L'exemple de fonction Lambda a une longue durée de vie et commence à envoyer des messages immédiatement après le déploiement du groupe.

   Lorsque vous avez terminé les tests, vous pouvez définir le cycle de vie Lambda à la demande (ou `"Pinned": false` dans la CLI) et déployer le groupe. Cela empêche la fonction d'envoyer des messages.

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

L'exemple suivant de fonction Lambda envoie un message d'entrée au connecteur.

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

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

Le connecteur SNS inclut le tiers software/licensing suivant :<a name="boto-3-licenses"></a>
+ [AWS SDK pour Python (Boto3)](https://pypi.org/project/boto3/)/Licence Apache 2.0
+ [botocore](https://pypi.org/project/botocore/)/Licence Apache 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/Licence PSF
+ [docutils](https://pypi.org/project/docutils/)/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public
+ [jmespath](https://pypi.org/project/jmespath/)/Licence MIT
+ [s3transfer](https://pypi.org/project/s3transfer/)/Licence Apache 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Licence MIT

Ce connecteur est publié dans le cadre du contrat de [licence logicielle Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Journal des modifications
<a name="sns-connector-changelog"></a>

Le tableau suivant décrit les modifications apportées à chaque version du connecteur.


| Version | Modifications | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Ajout du paramètre `IsolationMode` pour configurer le mode de conteneurisation du connecteur. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Mise à niveau de l'environnement d'exécution Lambda vers Python 3.7, ce qui modifie les exigences d'exécution. | 
| 2 | Correctif pour réduire la journalisation excessive. | 
| 1 | Première version. | 

<a name="one-conn-version"></a>Un groupe Greengrass ne peut contenir qu'une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter [Mise à niveau des versions du connecteur](connectors.md#upgrade-connector-versions).

## Consultez aussi
<a name="sns-connector-see-also"></a>
+ [Intégrer à des services et protocoles à l'aide de connecteurs Greengrass](connectors.md)
+ [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md)
+ [Démarrage avec les connecteurs Greengrass (CLI)](connectors-cli.md)
+ [ Publier une action](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) dans la documentation Boto 3
+ [Qu'est-ce qu'Amazon Simple Notification Service ?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) dans le *Guide du développeur Amazon Simple Notification Service*