选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon SNS

聚焦模式
Amazon SNS - AWS IoT Greengrass

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

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

Amazon SNS 组件 (aws.greengrass.SNS) 将消息发布到 Amazon Simple Notification Service(Amazon SNS)主题。您可以使用此组件将事件从 Greengrass 核心设备发送到 Web 服务器、电子邮件地址和其它消息订阅用户。有关更多信息,请参阅《Amazon Simple Notification Service 开发者指南》中的什么是 Amazon SNS?

要使用此组件发布到 Amazon SNS 主题,请向该组件订阅的主题发布一条消息。默认情况下,此组件订阅 sns/messagelocal 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) 的以下配置更新。此配置指定此组件发布响应的主题。

    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" } } }
    • region替换为您使用 AWS 区域 的。

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

    重要

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

    { "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.snssns.region.amazonaws.com

端点和端口

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

Endpoint 端口 必需 描述

sns.region.amazonaws.com

443

向 Amazon SNS 发布消息。

依赖项

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

2.1.9

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.15.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.8

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.14.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.7

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.13.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.6

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.12.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.5

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.11.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.4

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.10.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.9.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.2

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.8.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.1.1

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.7.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 Nucleus >=2.0.0 <2.6.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.0.7

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.5.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.0.6

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.4.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.0.5

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.3.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.0.4

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.2.0 硬性
Lambda 启动程序 ^2.0.0 硬性
Lambda 运行时 ^2.0.0 软性
令牌交换服务 ^2.0.0 硬性
2.0.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.3 <2.1.0 硬性
Lambda 启动程序 >=1.0.0 硬性
Lambda 运行时 >=1.0.0 软性
令牌交换服务 >=1.0.0 硬性

下表列出了此组件的版本 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" }

本地日志文件

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

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

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

许可证

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

此组件在 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

初始版本。

下一主题:

流管理器

上一主题:

影子管理器
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。