Amazon SNS
Amazon SNS コンポーネント (aws.greengrass.SNS
) は、Amazon Simple Notification Service (Amazon SNS) トピックにメッセージを公開します。このコンポーネントを使用して、Greengrass コアデバイスから Web サーバー、E メールアドレス、その他のメッセージサブスクライバーにイベントを送信できます。詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「Amazon SNS とは」を参照してください。
このコンポーネントを使用して Amazon SNS トピックに公開するには、このコンポーネントがサブスクライブしているトピックにメッセージを公開します。デフォルトでは、このコンポーネントは sns/message
ローカルパブリッシュ/サブスクライブトピックにサブスクライブします。このコンポーネントをデプロイするときに、AWS IoT Core MQTT トピックなどの他のトピックを指定することができます。
カスタムコンポーネントでは、このコンポーネントに公開する前に、他のソースからのメッセージを処理するために、フィルタリングまたは書式設定ロジックを実装することができます。これにより、メッセージ処理ロジックを 1 つのコンポーネントに一元化できます。
注記
このコンポーネントは、AWS IoT Greengrass V1 の Amazon SNS コネクタと同様の機能を提供します。詳細については、「AWS IoT Greengrass デベロッパーガイド」の「[Amazon SNS connector] (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 通知サービス デベロッパーガイドの「Amazon SNS トピックの作成」を参照してください。
-
次の IAM ポリシーの例で示されているように、Greengrass デバイスのロールは
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
) のためにマージする必要があります。この設定は、このコンポーネントがレスポンスを公開するトピックを指定します。詳細については、「デプロイの作成」を参照してください。
-
Amazon SNS コンポーネントは、VPC での実行がサポートされています。このコンポーネントを VPC にデプロイするには、以下が必要です。
-
Amazon SNS コンポーネントには、VPC エンドポイントが
com.amazonaws.us-east-1.sns
であるsns.region.amazonaws.com
への接続が必要です。
-
エンドポイントおよびポート
このコンポーネントは、基本的な操作に必要なエンドポイントとポートに加えて、次のエンドポイントとポートに対し、アウトバウンドリクエストを実行できる必要があります。詳細については、「プロキシまたはファイアウォールを介したデバイストラフィックを許可する」を参照してください。
エンドポイント | ポート | 必要 | 説明 |
---|---|---|---|
|
443 | 可能 |
Amazon SNS にメッセージを公開します。 |
依存関係
コンポーネントをデプロイするとき、AWS IoT Greengrass はそれと互換性のあるバージョンの依存関係もデプロイします。つまり、コンポーネントを正常にデプロイするには、コンポーネントとその依存関係のすべての要件を満たす必要があります。このセクションでは、このコンポーネントのリリースされたバージョンの依存関係と、各依存関係に対するコンポーネントのバージョンを定義するセマンティックバージョン制約をリスト表示しています。コンポーネントの各バージョンの依存関係は、AWS IoT Greengrass コンソール
コンポーネントの依存関係の詳細については、「コンポーネント recipe のリファレンス」を参照してください。
構成
このコンポーネントには、コンポーネントのデプロイ時にカスタマイズできる次の設定パラメータが用意されています。
注記
このコンポーネントのデフォルト設定には、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
-
(オプション) コンポーネントに割り当てるメモリ量 (KB 単位)。
デフォルトは 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
-
(オプション) コンポーネントがメッセージを受信するためにサブスクライブするトピック。
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 オブジェクトを送信するには、JSON オブジェクトを文字列としてシリアル化し、
message_structure
プロパティにjson
を指定します。タイプ:
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 トピックに出力データとしてレスポンスを公開します。このトピックは、[legacy subscription router component] (レガシーサブスクリプションルーターコンポーネント) の設定で 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 ライセンス、GNU 一般パブリックライセンス (GPL)、Python Software Foundation ライセンス、パブリックドメイン -
jmespath
/MIT ライセンス -
s3transfer
/Apache License 2.0 -
urllib3
/MIT ライセンス
このコンポーネントは、Greengrass Core ソフトウェアライセンス契約
変更ログ
次の表は、コンポーネントの各バージョンにおける変更を示します。
バージョン |
変更 |
---|---|
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 |
当初のバージョン |