

Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita [Migrar desde AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

El [conector](connectors.md) SNS publica mensajes en un tema de Amazon SNS. Esto permite a los servidores web, direcciones de correo electrónico y otros suscriptores de mensajes responder a los eventos del grupo de Greengrass.

Este conector recibe información de mensaje de SNS sobre un tema de MQTT y, a continuación, envía el mensaje a un tema de SNS especificado. Si lo desea, puede utilizar las funciones de Lambda personalizadas para implementar los filtros o la lógica de formato en los mensajes antes de que se publiquen en este conector.

Este conector tiene las siguientes versiones.


| Versión | 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` | 

Para obtener información sobre los cambios de versión, consulte el [Registro de cambios](#sns-connector-changelog).

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

Este conector exige los siguientes requisitos:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Software básico v1.9.3 o posterior.
+ <a name="conn-req-py-3.7-and-3.8"></a>Se necesita tener la versión 3.7 o 3.8 de [Python](https://www.python.org/) instalada en el dispositivo principal y añadido a la variable de entorno PATH.
**nota**  <a name="use-runtime-py3.8"></a>
Para usar Python 3.8, ejecute el siguiente comando para crear un enlace simbólico desde la carpeta de instalación predeterminada de Python 3.7 a los binarios de Python 3.8 instalados.  

  ```
  sudo ln -s {{path-to-python-3.8}}/python3.8 /usr/bin/python3.7
  ```
Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.
+ <a name="conn-sns-req-sns-config"></a>Un tema de SNS configurado. Para obtener instrucciones, consulte el [tema Creación de un tema de Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) en la *Guía para desarrolladores de Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>El [rol del grupo de Greengrass](group-role.md) configurado para permitir la acción `sns:Publish` en el tema Amazon SNS de destino, tal y como se muestra en la siguiente política de IAM de ejemplo.

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

****  

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

------

  Este conector le permite anular dinámicamente el tema predeterminado en la carga de mensajes de entrada. Si su implementación utiliza esta característica, la política de IAM debe permitir a `sns:Publish` el permiso en todos los temas de destino. Puede conceder acceso granular o condicional a recursos (por ejemplo, utilizando un esquema de nomenclatura con comodín \*)

  <a name="set-up-group-role"></a>Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte [Administración del rol de grupo de Greengrass (consola)](group-role.md#manage-group-role-console) o [Administración del rol de grupo de 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 básico v1.7 o posterior.
+ Versión 2.7 de [Python](https://www.python.org/) instalada en el dispositivo principal y añadida a la variable de entorno PATH.
+ <a name="conn-sns-req-sns-config"></a>Un tema de SNS configurado. Para obtener instrucciones, consulte el [tema Creación de un tema de Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) en la *Guía para desarrolladores de Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>El [rol del grupo de Greengrass](group-role.md) configurado para permitir la acción `sns:Publish` en el tema Amazon SNS de destino, tal y como se muestra en la siguiente política de IAM de ejemplo.

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

****  

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

------

  Este conector le permite anular dinámicamente el tema predeterminado en la carga de mensajes de entrada. Si su implementación utiliza esta característica, la política de IAM debe permitir a `sns:Publish` el permiso en todos los temas de destino. Puede conceder acceso granular o condicional a recursos (por ejemplo, utilizando un esquema de nomenclatura con comodín \*)

  <a name="set-up-group-role"></a>Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte [Administración del rol de grupo de Greengrass (consola)](group-role.md#manage-group-role-console) o [Administración del rol de grupo de Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parámetros de conector
<a name="sns-connector-param"></a>

Este conector proporciona los siguientes parámetros:

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
El ARN del tema de SNS predeterminado en el que publicar mensajes. El tema de destino se puede anular mediante la propiedad `sns_topic_arn` en la carga de mensajes de entrada.  
El rol de grupo debe permitir el permiso `sns:Publish` en todos los temas de destino. Para obtener más información, consulte [Requisitos](#sns-connector-req).
Nombre para mostrar en la AWS IoT consola: ARN del **tema SNS predeterminado**  
Obligatorio: `true`  
Tipo: `string`  
Patrón válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
El modo de [creación de contenedores](connectors.md#connector-containerization) para este conector. El valor predeterminado es`GreengrassContainer`, lo que significa que el conector se ejecuta en un entorno de ejecución aislado dentro del AWS IoT Greengrass contenedor.  
La configuración de creación de contenedores predeterminada para el grupo no se aplica a los conectores.
Nombre para mostrar en la AWS IoT consola: **modo de aislamiento del contenedor**  
Obligatorio: `false`  
Tipo: `string`  
Valores válidos: `GreengrassContainer` o `NoContainer`  
Patrón válido: `^NoContainer$|^GreengrassContainer$`

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
El ARN del tema de SNS predeterminado en el que publicar mensajes. El tema de destino se puede anular mediante la propiedad `sns_topic_arn` en la carga de mensajes de entrada.  
El rol de grupo debe permitir el permiso `sns:Publish` en todos los temas de destino. Para obtener más información, consulte [Requisitos](#sns-connector-req).
Nombre para mostrar en la AWS IoT consola: ARN del **tema SNS predeterminado**  
Obligatorio: `true`  
Tipo: `string`  
Patrón válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Ejemplo de creación de un conector (AWS CLI)
<a name="sns-connector-create"></a>

El siguiente comando de la CLI crea una `ConnectorDefinition` con una versión inicial que contiene el conector de 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"
            }
        }
    ]
}'
```

En la AWS IoT Greengrass consola, puede añadir un conector desde la página de **conectores** del grupo. Para obtener más información, consulte [Introducción a los conectores de Greengrass (consola)](connectors-console.md).

## Datos de entrada
<a name="sns-connector-data-input"></a>

Este conector acepta la información de mensaje de SNS sobre un tema de MQTT y, a continuación, publica el mensaje tal cual en el tema de SNS de destino. Los mensajes de entrada deben tener un formato JSON válido.

<a name="topic-filter"></a>**Filtro de temas en la suscripción**  
`sns/message`

**Propiedades de mensajes**    
`request`  
Información sobre los mensajes que se envían al tema de SNS.  
Obligatorio: `true`  
Escriba: `object` que incluye las siguientes propiedades:    
`message`  
El contenido del mensaje como cadena o en formato JSON. Para ver ejemplos, consulte [Ejemplo de entrada](#sns-connector-data-input-example).  
Para enviar JSON, la propiedad `message_structure` debe establecerse en `json` y el mensaje debe ser un objeto JSON codificado como cadena que contenga una clave `default`.  
Obligatorio: `true`  
Tipo: `string`  
Patrón válido: `.*`  
`subject`  
El asunto del mensaje.  
Obligatorio: `false`  
Escriba: texto ASCII, de hasta 100 caracteres. Este debe empezar por una letra, un número o un signo de puntuación. Este no debe incluir saltos de línea ni caracteres de control.  
Patrón válido: `.*`  
`sns_topic_arn`  
El ARN del tema de SNS en el que publicar mensajes. Si se especifica, el conector publica en este tema en lugar del tema predeterminado.  
El rol de grupo debe permitir el permiso `sns:Publish` en cualquier tema de destino. Para obtener más información, consulte [Requisitos](#sns-connector-req).
Obligatorio: `false`  
Tipo: `string`  
Patrón válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
La estructura del mensaje.  
Obligatorio: `false`. Se debe especificar para enviar un mensaje JSON.  
Tipo: `string`  
Valores válidos: `json`  
`id`  
Un ID arbitrario para la solicitud. Esta propiedad se usa para asignar una solicitud de entrada a una respuesta de salida. Si se especifica, la propiedad `id` en el objeto de respuesta se establece en este valor. Si no utiliza esta característica, puede omitir esta propiedad o especificar una cadena vacía.  
Obligatorio: `false`  
Tipo: `string`  
Patrón válido: `.*`

**Límites**  
El tamaño del mensaje está limitado a un tamaño de mensaje de SNS máximo de 256 KB.

**Ejemplo de entrada: mensaje en cadena**  <a name="sns-connector-data-input-example"></a>
Este ejemplo envía un mensaje en cadena. Especifica la propiedad `sns_topic_arn` opcional, que anula el tema de destino predeterminado.  

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

**Ejemplo de entrada: mensaje JSON**  
Este ejemplo envía un mensaje como objeto JSON codificado en cadena que incluye la clave `default`.  

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

## Datos de salida
<a name="sns-connector-data-output"></a>

Este conector publica información de estado como datos de salida en un tema MQTT.

<a name="topic-filter"></a>**Filtro de temas en la suscripción**  
`sns/message/status`

**Ejemplo de salida: Correcto**  

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

**Ejemplo de salida: Error**  

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

## Ejemplo de uso
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>Utilice los siguientes pasos de alto nivel para configurar una función de Lambda de Python 3.7 de ejemplo que puede utilizar para probar el conector.

**nota**  <a name="connectors-setup-get-started-topics"></a>
Si usa otros tiempos de ejecución de Python, puede crear un enlace simbólico desde Python3.x Python 3.7.
Los temas [Introducción a los conectores (consola)](connectors-console.md) y [Introducción a los conectores (CLI)](connectors-cli.md) contienen pasos detallados que muestran cómo configurar e implementar un conector de notificaciones Twilio de ejemplo.

1. Asegúrese de cumplir los [requisitos](#sns-connector-req) para el conector.

   <a name="set-up-group-role"></a>Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte [Administración del rol de grupo de Greengrass (consola)](group-role.md#manage-group-role-console) o [Administración del rol de grupo de Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Cree y publique una función de Lambda que envíe datos de entrada al conector.

   Guarde el [código de ejemplo](#sns-connector-usage-example) como un archivo PY. <a name="connectors-setup-function-sdk"></a>Descargue y descomprima el [SDK de AWS IoT Greengrass Core para Python](lambda-functions.md#lambda-sdks-core). A continuación, cree un paquete zip que contenga el archivo PY y la carpeta `greengrasssdk` en el nivel raíz. Este paquete zip es el paquete de implementación que se carga en AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Después de crear la función de Lambda de Python 3.7, publique una versión de característica y cree un alias.

1. Configuración del grupo de Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Agregue la función de Lambda por su alias (recomendado). Configure el ciclo de vida de Lambda como de larga duración (o `"Pinned": true` en la CLI).

   1. Agregue el conector y configure sus [parámetros](#sns-connector-param).

   1. Agregue suscripciones que permitan al conector recibir [datos de entrada](#sns-connector-data-input) y enviar [datos de salida](#sns-connector-data-output) en filtros de tema compatibles.
      + <a name="connectors-setup-subscription-input-data"></a>Establezca la función de Lambda como fuente, el conector como destino y utilice un filtro de tema de entrada compatible.
      + <a name="connectors-setup-subscription-output-data"></a>Establezca el conector como origen, AWS IoT Core como destino y utilice un filtro de tema de salida compatible. Utiliza esta suscripción para ver los mensajes de estado en la AWS IoT consola.

1. <a name="connectors-setup-deploy-group"></a>Implemente el grupo.

1. <a name="connectors-setup-test-sub"></a>En la AWS IoT consola, en la página de **prueba**, suscríbase al tema de datos de salida para ver los mensajes de estado del conector. La función de Lambda de ejemplo es de larga duración y comienza a enviar mensajes inmediatamente después de implementar el grupo.

   Cuando haya terminado de probar, puede establecer el ciclo de vida de Lambda en Bajo demanda (o `"Pinned": false` en la CLI) e implementar el grupo. Esto impide que la característica envíe mensajes.

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

El siguiente ejemplo de función de Lambda envía un mensaje de entrada al conector.

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

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

El conector SNS incluye los siguientes productos de terceros software/licensing:<a name="boto-3-licenses"></a>
+ [AWS SDK para 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

Este conector se publica bajo el [contrato de licencia de software de Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Registros de cambios
<a name="sns-connector-changelog"></a>

La siguiente tabla describe los cambios en cada versión del conector.


| Versión | Cambios | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Se ha agregado el parámetro `IsolationMode` para configurar el modo de creación de contenedores del conector. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Se actualizó el tiempo de ejecución de Lambda a Python 3.7, lo que cambia el requisito de tiempo de ejecución. | 
| 2 | Se ha introducido una corrección para reducir el registro excesivo. | 
| 1 | Versión inicial. | 

<a name="one-conn-version"></a>Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte [Actualización de versiones de los conectores](connectors.md#upgrade-connector-versions).

## Véase también
<a name="sns-connector-see-also"></a>
+ [Integración con servicios y protocolos mediante conectores de Greengrass](connectors.md)
+ [Introducción a los conectores de Greengrass (consola)](connectors-console.md)
+ [Introducción a los conectores de Greengrass (CLI)](connectors-cli.md)
+ [Publicar acción](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) en la documentación de Boto 3
+ [¿Qué es Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) en la *Guía para desarrolladores de Amazon Simple Notification Service*