本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS 组件 (aws.greengrass.SNS
) 将消息发布到 Amazon Simple Notification Service(Amazon SNS)主题。您可以使用此组件将事件从 Greengrass 核心设备发送到 Web 服务器、电子邮件地址和其它消息订阅用户。有关更多信息,请参阅《Amazon Simple Notification Service 开发者指南》中的什么是 Amazon SNS?。
要使用此组件发布到 Amazon SNS 主题,请向该组件订阅的主题发布一条消息。默认情况下,此组件订阅 sns/message
local publish/subscribe 主题。部署此组件时,您可以指定其他主题,包括 AWS IoT Core MQTT 主题。
在自定义组件中,您可能需要实施筛选或格式化逻辑,以处理来自其它来源的消息,然后再将其发布到此组件。这使您能够将消息处理逻辑集中于单个组件。
注意
此组件提供的功能与 V1 中的 Amazon SNS 连接器类似。 AWS IoT Greengrass 有关更多信息,请参阅《AWS IoT Greengrass V1 开发人员指南》中的 Amazon SNS 连接器。
版本
此组件具有以下版本:
-
2.1.x
-
2.0.x
类型
此组件是一个 Lambda 组件 (aws.greengrass.lambda
)。Greengrass Nucleus 使用 Lambda 启动程序组件运行此组件的 Lambda 函数。
有关更多信息,请参阅 组件类型。
操作系统
此组件只能安装在 Linux 核心设备上。
要求
此组件具有以下要求:
-
您的核心设备必须满足运行 Lambda 函数的要求。如果您希望核心设备运行容器化 Lambda 函数,则设备必须满足相关要求。有关更多信息,请参阅 Lambda 函数要求。
-
Python
版本 3.7 已安装在核心设备上,并已添加到 PATH 环境变量中。 -
Amazon SNS 主题。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的创建 Amazon 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
) 的以下配置更新。此配置指定此组件发布响应的主题。{ "subscriptions": { "aws-greengrass-sns": { "id": "aws-greengrass-sns", "source": "component:aws.greengrass.SNS", "subject": "sns/message/status", "target": "cloud" } } }
有关更多信息,请参阅 创建部署。
-
支持在 VPC 中运行 Amazon SNS 组件。要在 VPC 中部署此组件,需要满足以下条件。
-
Amazon SNS 组件必须连接至 VPC 端点为
com.amazonaws.us-east-1.sns
的sns.region.amazonaws.com
。
-
端点和端口
除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint | 端口 | 必需 | 描述 |
---|---|---|---|
|
443 | 是 |
向 Amazon SNS 发布消息。 |
依赖项
部署组件时, AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台
下表列出了此组件的版本 2.1.9 的依赖关系。
依赖关系 | 兼容版本 | 依赖关系类型 |
---|---|---|
Greengrass Nucleus | >=2.0.0 <2.15.0 | 硬性 |
Lambda 启动程序 | ^2.0.0 | 硬性 |
Lambda 运行时 | ^2.0.0 | 软性 |
令牌交换服务 | ^2.0.0 | 硬性 |
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
注意
此组件的默认配置包括 Lambda 函数参数。我们建议您只编辑以下参数,以便在您的设备上配置此组件。
lambdaParams
-
包含此组件的 Lambda 函数参数的对象。该对象包含以下信息:
EnvironmentVariables
-
包含 Lambda 函数的参数的对象。该对象包含以下信息:
DEFAULT_SNS_ARN
-
此组件发布消息的默认 Amazon SNS 主题的 ARN。您可以用输入消息有效载荷中的
sns_topic_arn
属性覆盖目标主题。
containerMode
-
(可选)此组件的容器化模式。从以下选项中进行选择:
-
NoContainer
– 该组件不在隔离的运行时环境中运行。 -
GreengrassContainer
— 该组件在 AWS IoT Greengrass 容器内的隔离运行时环境中运行。
默认值:
GreengrassContainer
-
containerParams
-
(可选)包含此组件的容器参数的对象。如果您为
containerMode
指定GreengrassContainer
,则该组件使用这些参数。该对象包含以下信息:
memorySize
-
(可选)要分配给组件的内存量(以千字节为单位)。
默认为 512 MB(525,312 KB)。
pubsubTopics
-
(可选)包含组件订阅以接收消息的主题的对象。您可以指定每个主题以及该组件是订阅来自的 MQTT 主题 AWS IoT Core 还是本地发布/订阅主题。
该对象包含以下信息:
0
– 这是字符串形式的数组索引。-
包含以下信息的对象:
type
-
(可选)此组件用来订阅消息的发布/订阅消息收发的类型。从以下选项中进行选择:
-
PUB_SUB
– 订阅本地发布/订阅消息。如果选择此选项,主题不能包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅本地消息。 -
IOT_CORE
— 订阅 AWS IoT Core MQTT 消息。如果选择此选项,主题可以包含 MQTT 通配符。有关在指定此选项时如何从自定义组件发送消息的更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
默认值:
PUB_SUB
-
topic
-
(可选)组件订阅以接收消息的主题。如果您为
type
指定IotCore
,则可以在本主题中使用 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 对象,请将其序列化为字符串,然后为
message_structure
属性指定json
。类型:
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 许可证 -
docutils
/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 |
初始版本。 |