Amazon SNS - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS

Amazon SNS SNS Amazon SNS。aws.greengrass.SNS您可以使用此组件将事件从 Greengrass 核心设备发送到 Web 服务器、电子邮件地址和其他消息订阅者。,A mazon SNS? Amazon Simple Notifice》

要使用此组件向 Amazon SNS 主题发布消息,请向该组件订阅的主题发布消息。默认情况下,此组件订阅sns/message本地发布/订阅主题。部署此组件时,您可以指定其他主题,包括Amazon IoT Core MQTT 主题。

在自定义组件中,您可能需要实现筛选或格式化逻辑,以便在将来自其他来源的消息发布到此组件之前对其进行处理。这使您可以将消息处理逻辑集中在单个组件上。

注意

此组件提供与Amazon IoT Greengrass V1 中的 Amazon SNS 连接器类似的功能。有关更多信息,请参阅 Amazon IoT GreengrassV1 开发者指南中的 Amazon SNS 连接器

版本

此组件有以下版本:

  • 2.1.x

  • 2.0.0

类型

组件是一个 Lambda 组件 (aws.greengrass.lambda)。 Greengrass 核心使用 Lambda 启动器组件运行该组件的 Lambda 函数。

有关更多信息,请参阅 组件类型

操作系统

此组件只能安装在 Linux 核心设备上。

要求

此组件有以下要求:

  • 您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数,则该设备必须满足要求才能运行容器化 Lambda 函数。有关更多信息,请参阅 Lambda 函数的要求

  • Python 版本 3.7 已安装在核心设备上并添加到 PATH 环境变量中。

  • Amazon SNS 主题。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的创建 Amazon SNS 主题

  • G reengrass IAM。sns:Publish

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

    您可以动态覆盖此组件的输入消息负载中的默认主题。如果您的应用程序使用此功能,则 IAM 策略必须将所有目标主题作为资源包括在内。您可以授予对资源的具体或条件访问权限(例如,通过使用通配符 * 命名方案)。

  • 要从此组件接收输出数据,在部署此组件时,必须合并旧版订阅路由器组件 (aws.greengrass.LegacySubscriptionRouter) 的以下配置更新。此配置指定了此组件发布响应的主题。

    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" } } }
    • 用你Amazon Web Services 区域使用的区域替换区域

    • 要查找 Lambda 函数版本,您必须查看要部署的此组件版本的配方。在Amazon IoT Greengrass控制台中打开此组件的详细信息页面,查找 Lambda 函数的键值对。此键值对包含 Lambda 函数的名称和版本。

    重要

    每次部署此组件时,都必须更新传统订阅路由器上的 Lambda 函数版本。这可确保您为部署的组件版本使用正确的 Lambda 函数版本。

    有关更多信息,请参阅 创建部署

端点和端口

除了基本操作所需的端点和端口外,此组件还必须能够向以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备通过代理或防火墙进行流量

Endpoint 端口 必填 描述

sns.region.amazonaws.com

443

向 Amazon SNS 发布消息。

附属物

部署组件时,Amazon IoT Greengrass还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及为每个依赖项定义组件版本的语义版本约束。您还可以在Amazon IoT Greengrass控制台中查看每个版本组件的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

2.1.3

下表列出了此组件版本 2.1.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.1.2

下表列出了2.1.2。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.1.1

下表列出了2.1.1。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.8 - 2.1.0

下表列出了此组件版本 2.0.8 和 2.1.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.7

下表列出了此组件版本 2.0.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.6

下表列出了此组件版本 2.0.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.5

下表列出了此组件版本 2.0.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.4

下表列出了此组件 2.0.4 版的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
代币交换服务 ^2.0.0 硬性
2.0.3

下表列出了此组件版本 2.0.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >2.0.0 硬性
Lambda 发射器 >1.0.0 硬性
Lambda 运行时 >1.0.0 软性
代币交换服务 >1.0.0 硬性

有关组件依赖关系的更多信息,请参阅组件配方参考

配置

此组件提供以下配置参数,您可以在部署组件时对其进行自定义。

注意

此组件的默认配置包括 Lambda 函数参数。我们建议您仅编辑以下参数以在您的设备上配置此组件。

lambdaParams

一个包含此组件的 Lambda 函数参数的对象。Configurity():

EnvironmentVariables

Lambda。Configurity():

DEFAULT_SNS_ARN

此组件发布消息的默认 Amazon SNS 主题的 ARN。您可以使用输入消息负载中的sns_topic_arn属性替换目标主题。

containerMode

(可选)此组件的容器化模式。从以下选项中进行选择:

  • NoContainer—。

  • GreengrassContainer— 该组件在Amazon IoT Greengrass容器内的隔离运行时环境中运行。

默认值:GreengrassContainer

containerParams

(可选)包含此组件的容器参数的对象。如果您指定GreengrassContainer,则组件将使用这些参数containerMode

Configurity():

memorySize

(可选)分配给组件的内存量(以千字节为单位)。

默认为 512 MB (525,312 KB)。

pubsubTopics

(可选)包含组件订阅以接收消息的主题的对象。您可以指定每个主题,以及该组件是订阅来自Amazon IoT Core还是本地发布/订阅主题的 MQTT 主题。

Configurity():

0— 这是字符串形式的数组索引。

一个2.0

type

(可选)此组件用于订阅消息的发布/订阅消息的类型。从以下选项中进行选择:

  • Pubsub – 订阅本地发布/订阅消息。,MQTT。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅发布/订阅本地消息

  • IotCore – 订阅 Amazon IoT Core MQTT 消息。如果选择此选项,则主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅发布/订阅Amazon IoT CoreMQTT 消息

默认值:Pubsub

topic

(可选)组件订阅以接收消息的主题。如果您指定IotCoretype,则可以在本主题中使用 MQTT 通配符(+#)。

例 示例:配置合并更新(容器模式)

{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic" } }, "containerMode": "GreengrassContainer" }

例 示例:配置合并更新(无容器模式)

{ "lambdaExecutionParameters": { "EnvironmentVariables": { "DEFAULT_SNS_ARN": "arn:aws:sns:us-west-2:123456789012:mytopic" } }, "containerMode": "NoContainer" }

输入数据

此组件接受有关以下主题的消息,并将消息按原样发布到目标 Amazon SNS 主题。默认情况下, 有关如何从您的自定义组件向该组件发布消息的更多信息,请参阅发布/订阅本地消息

默认主题(本地发布/订阅):sns/message

该消息接受以下属性。JSON。

request

Amazon SNS。

类型:object包含以下信息:

message

字符串形式的消息内容。

要发送 JSON 对象,请将其序列化为字符串,然后jsonmessage_structure属性指定。

类型:string

subject

(可选)消息的主题。

类型:string

主题可以是 ASCII 文本,最多 100 个字符。它必须以字母、数字或标点符号开头。它不能包含换行符或控制字符。

sns_topic_arn

(可选)Amazon SNS ARN。Amazon SNS。

类型:string

message_structure

(可选)消息的结构。在content属性中指定json发送您序列化为字符串的 JSON 消息。

类型:string

有效值:json

id

请求的任意 ID。使用此属性将输入请求映射到输出响应。当您指定此属性时,组件会将响应对象中的id属性设置为该值。

类型:string

注意

消息大小最大可为 256 KB。

例 :字符串消息

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

例 :JSON 消息

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

输出数据

默认情况下,此组件将响应作为以下 MQTT 主题的输出数据发布。 您必须在传统订阅路由器组件的配置subject中将此主题指定为。有关如何在自定义组件中订阅有关此主题的消息的更多信息,请参阅发布/订阅Amazon IoT CoreMQTT 消息

默认主题 (Amazon IoT CoreMQTT):sns/message/status

例 输出示例:成功

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

例 输出示例:失败

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

Logle

此组件使用以下日志文件。

/greengrass/v2/logs/aws.greengrass.SNS.log

查看此组件的日志

  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将 /greengrass/v2 替换为Amazon IoT Greengrass根文件夹的路径。

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

许可证

此组件包括以下第三方软件/许可:

此组件根据 Greengrass 核心软件许可协议发布。

更改日志

Configuritions()。

Version

更改

2.1.3

Grestgrass 2.8.0

2.1.2

Greengrass 2.7.0

2.1.1

Grestgrass 2.6.0

2.1.0

新功能

2.0.8

Grestgrass 2.5.0

2.0.7

Grestgrass 2.4.0

2.0.6

Grestgrass 2.3.0

2.0.5

Grestgrass 2.2.2.2.2.2.2.2.2.0

2.0.4

Grestgrass 2.1.0

2.0.3

初始版本。