本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SNS
Amazon SNS元件 (aws.greengrass.SNS
) 會將訊息發佈至 Amazon Simple Notification Service (Amazon SNS) 主題。您可以使用此元件,將事件從 Greengrass 核心裝置傳送至 Web 伺服器、電子郵件地址和其他訊息訂閱者。如需詳細資訊,請參閱《Amazon Simple Notification Service 開發人員指南》中的什麼是 AmazonSNS?。
若要使用此元件發佈至 Amazon SNS主題,請將訊息發佈至此元件訂閱的主題。根據預設,此元件會訂閱sns/message
本機發佈/訂閱主題。您可以在部署此元件時指定其他主題,包括 AWS IoT Core MQTT主題。
在自訂元件中,您可能想要實作篩選或格式化邏輯,以便在發佈訊息到此元件之前處理來自其他來源的訊息。這可讓您將訊息處理邏輯集中在單一元件上。
注意
此元件提供與 Amazon SNS 連接器 in AWS IoT Greengrass V1 類似的功能。如需詳細資訊,請參閱 AWS IoT Greengrass V1 開發人員指南中的 Amazon SNS 連接器。
版本
此元件具有下列版本:
-
2.1.x
-
2.0.x
Type
此元件是 Lambda 元件 (aws.greengrass.lambda
)。Greengrass 核會使用 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
) 的下列組態更新。此組態會指定此元件發佈回應的主題。如需詳細資訊,請參閱建立部署。
-
Amazon SNS元件支援在 中執行VPC。若要在 中部署此元件VPC,需要下列項目。
-
Amazon SNS元件必須具有與
sns.region.amazonaws.com
VPC端點為 的連線com.amazonaws.us-east-1.sns
。
-
端點和連接埠
除了基本操作所需的端點和連接埠之外,此元件還必須能夠對下列端點和連接埠執行傳出請求。如需詳細資訊,請參閱允許裝置流量透過 Proxy 或防火牆。
端點 | 連線埠 | 必要 | 描述 |
---|---|---|---|
|
443 | 是 |
發佈訊息至 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
-
(選用) 包含此元件容器參數的物件。如果您
GreengrassContainer
為 指定 ,元件會使用這些參數containerMode
。此物件包含下列資訊:
memorySize
-
(選用) 要配置給元件的記憶體量 (以 KB 為單位)。
預設為 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
-
(選用) 元件訂閱接收訊息的主題。如果您
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
-
(選用) 此元件發佈訊息ARN的 Amazon SNS主題的 。指定此屬性以覆寫預設 Amazon SNS主題。
類型:
string
message_structure
-
(選用) 訊息的結構。指定
json
傳送您在content
屬性中序列化為字串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
中的 。如需如何在自訂元件中訂閱此主題訊息的詳細資訊,請參閱 發佈/訂閱 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 License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF 授權 -
docutils
/BSD License、GNU一般公有授權 (GPL)、Python Software Foundation License、公有網域 -
jmespath
/MIT 授權 -
s3transfer
/Apache License 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 |
初始版本。 |