Amazon SNS - AWS IoT Greengrass

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

Amazon SNS

O componente Amazon SNS (aws.greengrass.SNS) publica mensagens em um tópico do Amazon Simple Notification Service (Amazon SNS) Service (Amazon SNS). Você pode usar esse componente para enviar eventos dos dispositivos principais do Greengrass para servidores web, endereços de e-mail e outros assinantes de mensagens. Para obter mais informações, consulte O que é o Amazon SNS? no Guia do desenvolvedor do Amazon Simple Notification Service.

Para publicar em um tópico do Amazon SNS com esse componente, publique uma mensagem no tópico em que esse componente se inscreve. Por padrão, esse componente se inscreve no tópico sns/message local de publicação/assinatura. Você pode especificar outros tópicos, incluindo tópicos do AWS IoT Core MQTT, ao implantar esse componente.

Em seu componente personalizado, talvez você queira implementar a lógica de filtragem ou formatação para processar mensagens de outras fontes antes de publicá-las nesse componente. Isso permite que você centralize sua lógica de processamento de mensagens em um único componente.

nota

Esse componente fornece funcionalidade semelhante ao conector Amazon SNS na AWS IoT Greengrass V1. Para obter mais informações, consulte o conector Amazon SNS no Guia do desenvolvedor AWS IoT Greengrass V1.

Versões

Esse componente tem as seguintes versões:

  • 2.1.x

  • 2.0.x

Tipo

Esse componente é um componente Lambda () aws.greengrass.lambda. O núcleo do Greengrass executa a função Lambda desse componente usando o componente lançador Lambda.

Para ter mais informações, consulte Tipos de componentes.

Sistema operacional

Esse componente pode ser instalado somente nos dispositivos principais do Linux.

Requisitos

Esse componente tem os seguintes requisitos:

  • Seu dispositivo principal deve atender aos requisitos para executar as funções do Lambda. Se você quiser que o dispositivo principal execute funções Lambda em contêineres, o dispositivo deve atender aos requisitos para fazer isso. Para ter mais informações, consulte Requisitos da função do Lambda.

  • Python versão 3.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.

  • Um tópico do Amazon SNS. Para obter mais informações, consulte Criação de um tópico do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.

  • A função de dispositivo do Greengrass deve permitir a sns:Publish ação, conforme mostrado no exemplo de política do IAM a seguir.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": [ "arn:aws:sns:region:account-id:topic-name" ] } ] }

    Você pode substituir dinamicamente o tópico padrão na carga da mensagem de entrada desse componente. Se seu aplicativo usa esse recurso, a política do IAM deve incluir todos os tópicos de destino como recursos. Você pode conceder acesso granular ou condicional aos recursos (por exemplo, usando um esquema de nomeação * curinga).

  • Para receber dados de saída desse componente, você deve mesclar a seguinte atualização de configuração para o componente antigo do roteador de assinatura (aws.greengrass.LegacySubscriptionRouter) ao implantar esse componente. Essa configuração especifica o tópico em que esse componente publica as respostas.

    Legacy subscription router v2.1.x
    { "subscriptions": { "aws-greengrass-sns": { "id": "aws-greengrass-sns", "source": "component:aws.greengrass.SNS", "subject": "sns/message/status", "target": "cloud" } } }
    Legacy subscription router v2.0.x
    { "subscriptions": { "aws-greengrass-sns": { "id": "aws-greengrass-sns", "source": "arn:aws:lambda:region:aws:function:aws-greengrass-sns:version", "subject": "sns/message/status", "target": "cloud" } } }
    • Substitua a região pela Região da AWS que você usa.

    • Substitua a versão pela versão da função Lambda que esse componente executa. Para encontrar a versão da função Lambda, você deve visualizar a receita da versão desse componente que você deseja implantar. Abra a página de detalhes desse componente no AWS IoT Greengrass console e procure o par de valores-chave da função Lambda. Esse par de valores-chave contém o nome e a versão da função Lambda.

    Importante

    Você deve atualizar a versão da função Lambda no roteador de assinatura legado sempre que implantar esse componente. Isso garante que você use a versão correta da função Lambda para a versão do componente que você implanta.

    Para ter mais informações, consulte Criar implantações.

  • O componente Amazon SNS tem suporte para execução em uma VPC. Para implantar esse componente em uma VPC, é necessário o seguinte.

    • O componente Amazon SNS deve ter conectividade com a sns.region.amazonaws.com qual tenha o endpoint VPC de. com.amazonaws.us-east-1.sns

Endpoints e portas

Esse componente deve ser capaz de realizar solicitações de saída para os seguintes endpoints e portas, além dos endpoints e portas necessários para a operação básica. Para ter mais informações, consulte Permitir o tráfego de dispositivos por meio de um proxy ou firewall.

Endpoint Porta Obrigatório Descrição

sns.region.amazonaws.com

443 Sim

Publique mensagens no Amazon SNS.

Dependências

Quando você implanta um componente, AWS IoT Greengrass também implanta versões compatíveis de suas dependências. Isso significa que você deve atender aos requisitos do componente e de todas as suas dependências para implantá-lo com êxito. Esta seção lista as dependências das versões lançadas desse componente e as restrições de versão semântica que definem as versões do componente para cada dependência. Você também pode visualizar as dependências de cada versão do componente no AWS IoT Greengrass console. Na página de detalhes do componente, procure a lista de dependências.

2.1.7

A tabela a seguir lista as dependências da versão 2.1.7 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.13.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.6

A tabela a seguir lista as dependências da versão 2.1.6 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.12.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.5

A tabela a seguir lista as dependências da versão 2.1.5 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.11.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.4

A tabela a seguir lista as dependências da versão 2.1.4 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.10.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.3

A tabela a seguir lista as dependências da versão 2.1.3 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.9.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.2

A tabela a seguir lista as dependências da versão 2.1.2 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.8.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.1.1

A tabela a seguir lista as dependências da versão 2.1.1 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.7.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.8 - 2.1.0

A tabela a seguir lista as dependências das versões 2.0.8 e 2.1.0 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.6.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.7

A tabela a seguir lista as dependências da versão 2.0.7 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.5.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.6

A tabela a seguir lista as dependências da versão 2.0.6 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.4.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.5

A tabela a seguir lista as dependências da versão 2.0.5 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.3.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.4

A tabela a seguir lista as dependências da versão 2.0.4 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.2.0 Rígido
Lançador Lambda ^2.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) ^2.0.0 Flexível
Serviço de troca de tokens ^2.0.0 Rígido
2.0.3

A tabela a seguir lista as dependências da versão 2.0.3 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.3 <2.1.0 Rígido
Lançador Lambda >=1.0.0 Rígido
Lambda runtimes (Tempos de execução do Lambda) >=1.0.0 Flexível
Serviço de troca de tokens >=1.0.0 Rígido

Para obter mais informações sobre dependências de componentes, consulte a referência da receita do componente.

Configuração

Esse componente fornece os seguintes parâmetros de configuração que você pode personalizar ao implantar o componente.

nota

A configuração padrão desse componente inclui parâmetros da função Lambda. Recomendamos que você edite somente os parâmetros a seguir para configurar esse componente em seus dispositivos.

lambdaParams

Um objeto que contém os parâmetros da função Lambda desse componente. Esse objeto contém as seguintes informações:

EnvironmentVariables

Um objeto que contém os parâmetros da função Lambda. Esse objeto contém as seguintes informações:

DEFAULT_SNS_ARN

O ARN do tópico padrão do Amazon SNS em que esse componente publica mensagens. Você pode substituir o tópico de destino pela sns_topic_arn propriedade na carga da mensagem de entrada.

containerMode

(Opcional) O modo de conteinerização desse componente. Escolha uma das seguintes opções:

  • NoContainer— O componente não é executado em um ambiente de execução isolado.

  • GreengrassContainer— O componente é executado em um ambiente de execução isolado dentro do AWS IoT Greengrass contêiner.

Padrão: GreengrassContainer

containerParams

(Opcional) Um objeto que contém os parâmetros do contêiner desse componente. O componente usa esses parâmetros se você especificar GreengrassContainer paracontainerMode.

Esse objeto contém as seguintes informações:

memorySize

(Opcional) A quantidade de memória (em kilobytes) a ser alocada para o componente.

O padrão é 512 MB (525.312 KB).

pubsubTopics

(Opcional) Um objeto que contém os tópicos em que o componente se inscreve para receber mensagens. Você pode especificar cada tópico e se o componente se inscreve nos tópicos do MQTT AWS IoT Core ou nos tópicos locais de publicação/assinatura.

Esse objeto contém as seguintes informações:

0— Este é um índice de matriz como uma string.

Um objeto que contém as seguintes informações:

type

(Opcional) O tipo de mensagem de publicação/assinatura que esse componente usa para assinar mensagens. Escolha uma das seguintes opções:

  • PUB_SUB – Assine mensagens locais de publicar/assinar. Se você escolher essa opção, o tópico não poderá conter curingas do MQTT. Para obter mais informações sobre como enviar mensagens do componente personalizado ao especificar essa opção, consultePublique/assine mensagens locais.

  • IOT_CORE— Assine as mensagens do AWS IoT Core MQTT. Se você escolher essa opção, o tópico poderá conter curingas do MQTT. Para obter mais informações sobre como enviar mensagens de componentes personalizados ao especificar essa opção, consultePublique/assine mensagens MQTT AWS IoT Core.

Padrão: PUB_SUB

topic

(Opcional) O tópico no qual o componente se inscreve para receber mensagens. Se você especificar IotCore paratype, poderá usar curingas MQTT (+e#) neste tópico.

exemplo Exemplo: atualização da mesclagem de configuração (modo contêiner)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic" } }, "containerMode": "GreengrassContainer" }
exemplo Exemplo: atualização de mesclagem de configuração (sem modo de contêiner)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic" } }, "containerMode": "NoContainer" }

Dados de entrada

Esse componente aceita mensagens sobre o tópico a seguir e publica a mensagem no estado em que se encontra no tópico de destino do Amazon SNS. Por padrão, esse componente assina mensagens locais de publicação/assinatura. Para obter mais informações sobre como publicar mensagens nesse componente a partir de seus componentes personalizados, consultePublique/assine mensagens locais.

Tópico padrão (publicação/assinatura local): sns/message

A mensagem aceita as seguintes propriedades. As mensagens de entrada devem estar no formato JSON.

request

As informações sobre a mensagem a ser enviada ao tópico do Amazon SNS.

Tipo: object que contém as seguintes informações:

message

O conteúdo da mensagem como uma sequência de caracteres.

Para enviar um objeto JSON, serialize-o como uma string e especifique json a message_structure propriedade.

Tipo: string

subject

(Opcional) O assunto da mensagem.

Tipo: string

O assunto pode ser texto ASCII e até 100 caracteres. Ele deve começar com uma letra, número ou sinal de pontuação. Não pode incluir quebras de linha nem caracteres de controle.

sns_topic_arn

(Opcional) O ARN do tópico do Amazon SNS em que esse componente publica a mensagem. Especifique essa propriedade para substituir o tópico padrão do Amazon SNS.

Tipo: string

message_structure

(Opcional) A estrutura da mensagem. Especifique json para enviar uma mensagem JSON que você serializa como uma string na content propriedade.

Tipo: string

Valores válidos: json

id

Um ID arbitrário para a solicitação. Use essa propriedade para mapear uma solicitação de entrada para uma resposta de saída. Quando você especifica essa propriedade, o componente define a id propriedade no objeto de resposta com esse valor.

Tipo: string

nota

O tamanho da mensagem pode ser de no máximo 256 KB.

exemplo Exemplo de entrada: mensagem de string
{ "request": { "subject": "Message subject", "message": "Message data", "sns_topic_arn": "arn:aws:sns:region:account-id:topic2-name" }, "id": "request123" }
exemplo Exemplo de entrada: mensagem JSON
{ "request": { "subject": "Message subject", "message": "{ \"default\": \"Message data\" }", "message_structure": "json" }, "id": "request123" }

Dados de saída

Por padrão, esse componente publica respostas como dados de saída no seguinte tópico do MQTT. Você deve especificar esse tópico conforme a subject configuração do componente antigo do roteador de assinatura. Para obter mais informações sobre como assinar mensagens sobre esse tópico em seus componentes personalizados, consultePublique/assine mensagens MQTT AWS IoT Core.

Tópico padrão (AWS IoT Core MQTT): sns/message/status

exemplo Exemplo de resultado: sucesso
{ "response": { "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a", "status": "success" }, "id": "request123" }
exemplo Exemplo de resultado: falha
{ "response" : { "error": "InvalidInputException", "error_message": "SNS Topic Arn is invalid", "status": "fail" }, "id": "request123" }

Arquivo de log local

Esse componente usa o seguinte arquivo de log.

/greengrass/v2/logs/aws.greengrass.SNS.log
Para ver os registros desse componente
  • Execute o comando a seguir no dispositivo principal para visualizar o arquivo de log desse componente em tempo real. /greengrass/v2Substitua pelo caminho para a pasta AWS IoT Greengrass raiz.

    sudo tail -f /greengrass/v2/logs/aws.greengrass.SNS.log

Licenças

Esse componente inclui o seguinte software/licenciamento de terceiros:

Esse componente é lançado de acordo com o Contrato de Licença de Software Principal do Greengrass.

Changelog

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

Version (Versão)

Alterações

2.1.7

Versão atualizada para a versão 2.12.0 do Greengrass nucleus.

2.1.6

Versão atualizada para a versão 2.11.0 do Greengrass nucleus.

2.1.5

Versão atualizada para a versão 2.10.0 do Greengrass nucleus.

2.1.4

Versão atualizada para a versão 2.9.0 do Greengrass nucleus.

2.1.3

Versão atualizada para a versão 2.8.0 do Greengrass nucleus.

2.1.2

Versão atualizada para a versão 2.7.0 do Greengrass nucleus.

2.1.1

Versão atualizada para a versão 2.6.0 do Greengrass nucleus.

2.1.0

Novos atributos

2.0.8

Versão atualizada para a versão 2.5.0 do Greengrass nucleus.

2.0.7

Versão atualizada para a versão 2.4.0 do Greengrass nucleus.

2.0.6

Versão atualizada para a versão 2.3.0 do Greengrass nucleus.

2.0.5

Versão atualizada para a versão 2.2.0 do Greengrass nucleus.

2.0.4

Versão atualizada para a versão 2.1.0 do Greengrass nucleus.

2.0.3

Versão inicial.