

Aviso de fim do suporte: em 7 de outubro de 2026, AWS o suporte para o. AWS IoT Greengrass Version 1 Depois de 7 de outubro de 2026, você não poderá mais acessar os AWS IoT Greengrass V1 recursos. Para obter mais informações, visite [Migrar de AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

O [conector](connectors.md) do SNS publica mensagens em um tópico do Amazon SNS. Isso permite que os servidores web, endereços de e-mail e outros assinantes de mensagens respondam a eventos no grupo do Greengrass.

Esse conector recebe informações de mensagens do SNS em um tópico MQTT e envia a mensagem para um determinado tópico do SNS. Você também pode usar funções do Lambda personalizadas para implementar a lógica de formatação ou filtragem em mensagens antes que elas sejam publicadas nesse conector.

Esse conector tem as seguintes versões.


| Versão | 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 obter informações sobre alterações de versão, consulte o [Changelog](#sns-connector-changelog).

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

Esse conector tem os seguintes requisitos:

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Software principal v1.9.3 ou posterior.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/), versão 3.7 ou 3.8, instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
**nota**  <a name="use-runtime-py3.8"></a>
Para usar o Python 3.8, execute o comando a seguir para criar um symblink da pasta de instalação padrão do Python 3.7 para os binários instalados do Python 3.8.  

  ```
  sudo ln -s {{path-to-python-3.8}}/python3.8 /usr/bin/python3.7
  ```
Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass.
+ <a name="conn-sns-req-sns-config"></a>Um tópico do SNS configurado. Para obter mais informações, consulte [Criação de um tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>A [função de grupo do Greengrass](group-role.md) configurada para permitir a ação `sns:Publish` no tópico de destino do Amazon SNS, conforme mostrado no exemplo de política do IAM a seguir.

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

****  

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

------

  Esse conector permite que você substitua dinamicamente o tópico padrão na carga da mensagem de entrada. Se a sua implementação usa esse atributo, a política do IAM deve conceder a permissão `sns:Publish` em todos os tópicos de destino. Você pode conceder acesso granular ou condicional aos recursos (por exemplo, usando um esquema de nomeação \* curinga).

  <a name="set-up-group-role"></a>Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para acessar mais informações, consulte [Gerenciar a função de grupo do Greengrass (console)](group-role.md#manage-group-role-console) ou [Gerenciar a função de grupo do 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 principal v1.7 ou posterior.
+ [Python](https://www.python.org/) versão 2.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
+ <a name="conn-sns-req-sns-config"></a>Um tópico do SNS configurado. Para obter mais informações, consulte [Criação de um tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.
+ <a name="conn-sns-req-iam-policy"></a>A [função de grupo do Greengrass](group-role.md) configurada para permitir a ação `sns:Publish` no tópico de destino do Amazon SNS, conforme mostrado no exemplo de política do IAM a seguir.

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

****  

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

------

  Esse conector permite que você substitua dinamicamente o tópico padrão na carga da mensagem de entrada. Se a sua implementação usa esse atributo, a política do IAM deve conceder a permissão `sns:Publish` em todos os tópicos de destino. Você pode conceder acesso granular ou condicional aos recursos (por exemplo, usando um esquema de nomeação \* curinga).

  <a name="set-up-group-role"></a>Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para acessar mais informações, consulte [Gerenciar a função de grupo do Greengrass (console)](group-role.md#manage-group-role-console) ou [Gerenciar a função de grupo do Greengrass (CLI)](group-role.md#manage-group-role-cli).

------

## Parâmetros do conector
<a name="sns-connector-param"></a>

Esse conector oferece os seguintes parâmetros:

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
O ARN do tópico padrão do SNS no qual publicar mensagens. O tópico de destino pode ser substituído pela propriedade `sns_topic_arn` na carga da mensagem de entrada.  
A função do grupo deve conceder a permissão `sns:Publish` em todos os tópicos de destino. Para obter mais informações, consulte [Requisitos](#sns-connector-req).
Nome de exibição no AWS IoT console: ARN do **tópico SNS padrão**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
O modo de [conteinerização](connectors.md#connector-containerization) para este conector. O padrão é`GreengrassContainer`, o que significa que o conector é executado em um ambiente de execução isolado dentro do AWS IoT Greengrass contêiner.  
A configuração padrão de conteinerização para o grupo não se aplica aos conectores.
Nome de exibição no AWS IoT console: **modo de isolamento de contêiner**  
Obrigatório: `false`  
Digite: `string`  
Valores válidos: `GreengrassContainer` ou `NoContainer`  
Padrão válido: `^NoContainer$|^GreengrassContainer$`

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

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
O ARN do tópico padrão do SNS no qual publicar mensagens. O tópico de destino pode ser substituído pela propriedade `sns_topic_arn` na carga da mensagem de entrada.  
A função do grupo deve conceder a permissão `sns:Publish` em todos os tópicos de destino. Para obter mais informações, consulte [Requisitos](#sns-connector-req).
Nome de exibição no AWS IoT console: ARN do **tópico SNS padrão**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### Exemplo de criação de conector (AWS CLI)
<a name="sns-connector-create"></a>

O seguinte comando da CLI cria um `ConnectorDefinition` com uma versão inicial que contém o conector do 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"
            }
        }
    ]
}'
```

No AWS IoT Greengrass console, você pode adicionar um conector na página **Conectores** do grupo. Para obter mais informações, consulte [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md).

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

Esse conector aceita informações de mensagens do SNS em um tópico MQTT e publica a mensagem da maneira que se encontra como um tópico do SNS de destino. As mensagens de entrada devem estar no formato JSON.

<a name="topic-filter"></a>**Filtro de tópico na assinatura**  
`sns/message`

**Propriedades de mensagens**    
`request`  
Informações sobre a mensagem a ser enviada para o tópico do SNS.  
Obrigatório: `true`  
Tipo: `object` que inclui as seguintes propriedades:    
`message`  
O conteúdo da mensagem como uma string ou no formato JSON. Para obter exemplos, consulte [Exemplos de entrada](#sns-connector-data-input-example).  
Para enviar JSON, a propriedade `message_structure` deve ser definida como `json` e a mensagem deve ser uma string codificada por objeto JSON com uma chave `default`.  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `.*`  
`subject`  
O assunto da mensagem.  
Obrigatório: `false`  
Tipo: O texto ASCII, com até 100 caracteres. Deve começar com uma letra, um número ou um sinal de pontuação. Não deve incluir quebras de linha ou caracteres de controle.  
Padrão válido: `.*`  
`sns_topic_arn`  
O ARN do tópico do SNS no qual publicar mensagens. Se especificado, o conector publicará nesse tópico em vez do tópico padrão.  
A função do grupo deve conceder a permissão `sns:Publish` a qualquer tópico de destino. Para obter mais informações, consulte [Requisitos](#sns-connector-req).
Obrigatório: `false`  
Digite: `string`  
Padrão válido: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
A estrutura da mensagem.  
Obrigatório:`false`. Isso deve ser especificado para enviar uma mensagem JSON.  
Tipo: `string`  
Valores válidos: `json`  
`id`  
Um ID arbitrário para a solicitação. Essa propriedade é usada para mapear a solicitação de entrada para uma resposta de saída. Quando especificada, a propriedade `id` no objeto de resposta é definida para esse valor. Se você não usa esse atributo, é possível omitir essa propriedade ou especificar uma string vazia.  
Obrigatório: `false`  
Digite: `string`  
Padrão válido: `.*`

**Limites**  
O tamanho da mensagem é limitado por um tamanho máximo de mensagem do SNS de 256 KB.

**Exemplo de entrada: mensagem de string**  <a name="sns-connector-data-input-example"></a>
Este exemplo envia uma mensagem de string. Ele especifica a propriedade opcional `sns_topic_arn`, que substitui o tópico de destino padrão.  

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

**Exemplo de entrada: mensagem JSON**  
Este exemplo envia uma mensagem como objeto JSON codificado por string que inclui a chave `default`.  

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

## Dados de saída
<a name="sns-connector-data-output"></a>

O conector publica informações de status como dados de saída em um tópico MQTT.

<a name="topic-filter"></a>**Filtro de tópico na assinatura**  
`sns/message/status`

**Exemplo de resultado: sucesso**  

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

**Exemplo de resultado: falha**  

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

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

<a name="connectors-setup-intro"></a>Use as seguintes etapas de alto nível para configurar um exemplo de função do Lambda Python 3.7 que pode ser usado para testar o conector.

**nota**  <a name="connectors-setup-get-started-topics"></a>
Se você usar outros tempos de execução do Python, poderá criar um link simbólico para Python3.x o Python 3.7.
Os tópicos [Conceitos básicos de conectores (console)](connectors-console.md) e [Conceitos básicos de conectores (CLI)](connectors-cli.md) contêm etapas detalhadas que mostram como configurar e implantar um exemplo do conector de notificações do Twilio.

1. Certifique-se de cumprir os [requisitos](#sns-connector-req) para o conector.

   <a name="set-up-group-role"></a>Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para acessar mais informações, consulte [Gerenciar a função de grupo do Greengrass (console)](group-role.md#manage-group-role-console) ou [Gerenciar a função de grupo do Greengrass (CLI)](group-role.md#manage-group-role-cli).

1. <a name="connectors-setup-function"></a>Crie e publique uma função do Lambda que envie dados de entrada para o conector.

   Salve o [código de exemplo](#sns-connector-usage-example) como arquivo PY. <a name="connectors-setup-function-sdk"></a>Baixe e descompacte o [SDK do AWS IoT Greengrass Core para Python](lambda-functions.md#lambda-sdks-core). Crie então um pacote zip que contenha o arquivo PY e a pasta `greengrasssdk` no nível raiz. Este pacote zip é o pacote de implantação que você transfere por upload para o AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Depois de criar a função do Lambda Python 3.7, publique uma versão de função e crie um alias.

1. Configure o grupo do Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Adicione a função do Lambda pelo seu alias (recomendado). Configure o ciclo de vida do Lambda como de longa duração (ou `"Pinned": true` na CLI).

   1. Adicione o conector e configure seus [parâmetros](#sns-connector-param).

   1. Adicione assinaturas que permitam que o conector receba [dados de entrada](#sns-connector-data-input) e envie [dados de saída](#sns-connector-data-output) em filtros de tópico compatíveis.
      + <a name="connectors-setup-subscription-input-data"></a>Defina a função do Lambda como origem, o conector como destino e use um filtro de tópico de entrada compatível.
      + <a name="connectors-setup-subscription-output-data"></a>Defina o conector como origem, o AWS IoT Core como destino, e use um filtro de tópico de saída compatível. Você usa essa assinatura para visualizar mensagens de status no AWS IoT console.

1. <a name="connectors-setup-deploy-group"></a>Implante o grupo.

1. <a name="connectors-setup-test-sub"></a>No AWS IoT console, na página **Teste**, inscreva-se no tópico de dados de saída para ver as mensagens de status do conector. A função de exemplo do Lambda é de longa duração e começa a enviar mensagens imediatamente após o grupo ser implantado.

   Ao finalizar o teste, você pode definir o ciclo de vida do Lambda como sob demanda (ou `"Pinned": false` na CLI) e implantar o grupo. Isso impede o envio de mensagens pela função.

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

O exemplo a seguir da função do Lambda envia uma mensagem de entrada para o 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
```

## Licenças
<a name="sns-connector-license"></a>

O conector SNS inclui os seguintes terceiros software/licensing:<a name="boto-3-licenses"></a>
+ [AWS SDK para Python (Boto3)](https://pypi.org/project/boto3/)/Licença Apache 2.0
+ [botocore](https://pypi.org/project/botocore/)/Licença Apache 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/Licença PSF
+ [docutils](https://pypi.org/project/docutils/)/Licença BSD, GNU Licença pública geral (GPL), Licença Python Software Foundation, Domínio público
+ [jmespath](https://pypi.org/project/jmespath/)/Licença MIT
+ [s3transfer](https://pypi.org/project/s3transfer/)/Licença Apache 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Licença MIT

Esse conector é liberado de acordo com o [Contrato de licença de software do Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

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

A tabela a seguir descreve as alterações em cada versão do conector.


| Versão | Alterações | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>Adicionado o parâmetro `IsolationMode` para configurar o modo de conteinerização para o conector. | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Atualização do runtime do Lambda para Python 3.7, o que altera o requisito de runtime. | 
| 2 | Corrija para reduzir o registro excessivo. | 
| 1 | Versão inicial. | 

<a name="one-conn-version"></a>Um grupo do Greengrass só pode conter uma versão do conector por vez. Para obter informações sobre como fazer upgrade de uma versão do conector, consulte [Atualizar a versões do conector](connectors.md#upgrade-connector-versions).

## Consulte também
<a name="sns-connector-see-also"></a>
+ [Integrar a serviços e protocolos usando conectores do Greengrass](connectors.md)
+ [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md)
+ [Conceitos básicos de conectores do Greengrass (CLI)](connectors-cli.md)
+ [ Ação de publicação](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish) na documentação do Boto 3
+ [O que é o Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*