本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS
亚马逊组SNS件 (aws.greengrass.SNS
) 向亚马逊简单通知服务 (AmazonSNS) 主题发布消息。您可以使用此组件将事件从 Greengrass 核心设备发送到 Web 服务器、电子邮件地址和其它消息订阅用户。有关更多信息,请参阅什么是亚马逊SNS? 在《Amazon 简单通知服务开发者指南》中。
要使用此组件发布到 Amazon SNS 主题,请向该组件订阅的主题发布一条消息。默认情况下,此组件订阅 sns/message
local publish/subscribe 主题。部署此组件时,您可以指定其他 AWS IoT Core MQTT主题,包括主题。
在自定义组件中,您可能需要实施筛选或格式化逻辑,以处理来自其它来源的消息,然后再将其发布到此组件。这使您能够将消息处理逻辑集中于单个组件。
注意
此组件提供的功能与 AWS IoT Greengrass V1 中的 Amazon SNS 连接器类似。有关更多信息,请参阅 AWS IoT Greengrass V1 开发者指南中的 Amazon SNS 连接器。
版本
此组件具有以下版本:
-
2.1.x
-
2.0.x
Type
此组件是一个 Lambda 组件 (aws.greengrass.lambda
)。Greengrass Nucleus 使用 Lambda 启动程序组件运行此组件的 Lambda 函数。
有关更多信息,请参阅 组件类型。
操作系统
此组件只能安装在 Linux 核心设备上。
要求
此组件具有以下要求:
-
您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数,则设备必须满足相关要求。有关更多信息,请参阅 Lambda 函数要求。
-
Python
版本 3.7 安装在核心设备上并已添加到PATH环境变量中。 -
亚马逊的SNS话题。有关更多信息,请参阅《亚马逊简单通知服务开发者指南》中的创建亚马逊SNS主题。
-
Greengrass 设备角色必须允许
sns:Publish
该操作,如以下示例策略所示。IAM{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": [ "arn:aws:sns:
region
:account-id
:topic-name
" ] } ] }您可以动态覆盖该组件输入消息负载中的默认主题。如果您的应用程序使用此功能,则IAM策略必须包含所有目标主题作为资源。您可以授予对资源的具体或条件访问权限(例如,通过使用通配符
*
命名方案)。 -
要接收此组件的输出数据,在部署此组件时,必须合并旧版订阅路由器组件 (
aws.greengrass.LegacySubscriptionRouter
) 的以下配置更新。此配置指定此组件发布响应的主题。有关更多信息,请参阅 创建部署。
-
支持在 a 中运行 Amazon SNS 组件VPC。要在中部署此组件VPC,需要满足以下条件。
-
Amazon SNS 组件必须连接到
sns.region.amazonaws.com
VPC终端节点为com.amazonaws.us-east-1.sns
。
-
端点和端口
除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint | 端口 | Required | 描述 |
---|---|---|---|
|
443 | Yes |
向 Amazon 发布消息SNS。 |
依赖项
部署组件时, AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
注意
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数,以便在您的设备上配置此组件。
lambdaParams
-
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息:
EnvironmentVariables
-
包含 Lambda 函数的参数的对象。该对象包含以下信息:
DEFAULT_SNS_ARN
-
此组件发布消息ARN的默认 Amazon SNS 主题中的。您可以用输入消息有效载荷中的
sns_topic_arn
属性覆盖目标主题。
containerMode
-
(可选)此组件的容器化模式。从以下选项中进行选择:
-
NoContainer
– 该组件不在隔离的运行时环境中运行。 -
GreengrassContainer
— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值:
GreengrassContainer
-
containerParams
-
(可选)包含此组件的容器参数的对象。如果您为
containerMode
指定GreengrassContainer
,则该组件使用这些参数。该对象包含以下信息:
memorySize
-
(可选)要分配给组件的内存量(以千字节为单位)。
默认为 512 MB(525,312 KB)。
pubsubTopics
-
(可选)包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是订阅的主题 AWS IoT Core 还是本地发布/订阅MQTT主题。
该对象包含以下信息:
0
– 这是字符串形式的数组索引。-
包含以下信息的对象:
type
-
(可选)此组件用来订阅消息的发布/订阅消息收发的类型。从以下选项中进行选择:
-
PUB_SUB
– 订阅本地发布/订阅消息。如果选择此选项,则主题不能包含MQTT通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅本地消息。 -
IOT_CORE
— 订阅 AWS IoT Core MQTT消息。如果选择此选项,则主题可以包含MQTT通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅消息 AWS IoT Core MQTT。
默认值:
PUB_SUB
-
topic
-
(可选)组件订阅以接收消息的主题。如果您
IotCore
为指定type
,则可以在本主题中使用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对象,请将其序列化为字符串,然后
json
为该message_structure
属性指定。类型:
string
subject
-
(可选)消息主题。
类型:
string
主题可以是ASCII文本,最多 100 个字符。必须以字母、数字或标点符号开头。不得包含换行符或控制字符。
sns_topic_arn
-
(可选)此组件发布消息的 Amazon SNS 主题。ARN指定此属性可覆盖默认的 Amazon SNS 主题。
类型:
string
message_structure
-
(可选)消息结构。指定
json
在content
属性中将您序列化为字符串的JSON消息发送。类型:
string
有效值:
json
id
-
请求的任意 ID。使用此属性将输入请求映射到输出响应。指定此属性时,组件会将响应对象中的
id
属性设置为该值。类型:
string
注意
消息大小最大可以为 256KB。
例 示例输入:字符串消息
{ "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
。有关如何在自定义组件中订阅此主题消息的更多信息,请参阅 发布/订阅消息 AWS IoT Core MQTT。
默认主题 (AWS IoT Core MQTT):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" }
本地日志文件
此组件使用以下日志文件。
/logs/aws.greengrass.SNS.log
/greengrass/v2
查看此组件的日志
-
在核心设备上运行以下命令以实时查看此组件的日志文件。
替换为 AWS IoT Greengrass 根文件夹的路径。/greengrass/v2
sudo tail -f
/logs/aws.greengrass.SNS.log/greengrass/v2
许可证
此组件包含以下第三方软件/许可:
-
AWS SDK for Python (Boto3)
/Apache 许可证 2.0 -
botocore
/Apache 许可证 2.0 -
dateutil
/许可证 PSF -
d@@ ocutils
/BSD许可证、GNU通用公共许可证 (GPL)、Python 软件基础许可证、公共领域 -
jmespath /许可证
MIT -
s3transfer
/Apache 许可证 2.0 -
urllib3 /许可证
MIT
此组件在 Greengrass Core 软件许可协议
更改日志
下表介绍每个组件版本的更改。
版本 |
更改 |
---|---|
2.1.9 |
Greengrass nucleus 版本 2.14.0 版本的版本已更新。 |
2.1.8 |
对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 |
2.1.7 |
版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 |
2.1.6 |
版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 |
2.1.5 |
版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 |
2.1.4 |
对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 |
2.1.3 |
版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 |
2.1.2 |
版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。 |
2.1.1 |
版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。 |
2.1.0 |
|
2.0.8 |
版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。 |
2.0.7 |
版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。 |
2.0.6 |
版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。 |
2.0.5 |
对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。 |
2.0.4 |
对 Greengrass Nucleus 版本 2.1.0 发行版进行了版本更新。 |
2.0.3 |
初始版本。 |