Amazon SNS - AWS IoT Greengrass

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) のためにマージする必要があります。この設定は、このコンポーネントがレスポンスを公開するトピックを指定します。

    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" } } }
    • リージョンを使用する AWS リージョン に置き換えます。

    • バージョンを、このコンポーネントが実行する Lambda 関数のバージョンに置き換えます。Lambda 関数のバージョンを確認するには、デプロイするこのコンポーネントのバージョンの recipe を確認する必要があります。AWS IoT Greengrass コンソールで、このコンポーネントの詳細ページを開き、[Lambda function] (Lambda 関数) の key-value ペアを見つけます。このキー値のペアには、Lambda 関数の名前とバージョンが含まれます。

    重要

    このコンポーネントをデプロイするたびに、レガシーサブスクリプションルーターの Lambda 関数のバージョンを更新する必要があります。これにより、デプロイするコンポーネントバージョンに正しい Lambda 関数のバージョンが使用されることが保証されます。

    詳細については、「デプロイの作成」を参照してください。

  • Amazon SNS コンポーネントは、VPC での実行がサポートされています。このコンポーネントを VPC にデプロイするには、以下が必要です。

    • Amazon SNS コンポーネントには、VPC エンドポイントが com.amazonaws.us-east-1.sns である sns.region.amazonaws.com への接続が必要です。

エンドポイントおよびポート

このコンポーネントは、基本的な操作に必要なエンドポイントとポートに加えて、次のエンドポイントとポートに対し、アウトバウンドリクエストを実行できる必要があります。詳細については、「プロキシまたはファイアウォールを介したデバイストラフィックを許可する」を参照してください。

エンドポイント ポート 必要 説明

sns.region.amazonaws.com

443 可能

Amazon SNS にメッセージを公開します。

依存関係

コンポーネントをデプロイするとき、AWS IoT Greengrass はそれと互換性のあるバージョンの依存関係もデプロイします。つまり、コンポーネントを正常にデプロイするには、コンポーネントとその依存関係のすべての要件を満たす必要があります。このセクションでは、このコンポーネントのリリースされたバージョンの依存関係と、各依存関係に対するコンポーネントのバージョンを定義するセマンティックバージョン制約をリスト表示しています。コンポーネントの各バージョンの依存関係は、AWS IoT Greengrass コンソールでも確認できます。コンポーネントの詳細ページで [Dependencies] (依存関係) リストを確認します。

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 ハード

コンポーネントの依存関係の詳細については、「コンポーネント recipe のリファレンス」を参照してください。

構成

このコンポーネントには、コンポーネントのデプロイ時にカスタマイズできる次の設定パラメータが用意されています。

注記

このコンポーネントのデフォルト設定には、Lambda 関数のパラメータが含まれます。デバイスにこのコンポーネントを設定するには、次のパラメータのみを編集することをお勧めします。

lambdaParams

このコンポーネントの Lambda 関数のパラメータを含むオブジェクト。このオブジェクトには、次の情報が含まれます。

EnvironmentVariables

Lambda 関数のパラメータを含むオブジェクト。このオブジェクトには、次の情報が含まれます。

DEFAULT_SNS_ARN

このコンポーネントがメッセージを公開するデフォルトの Amazon SNS トピックの ARN。入力メッセージペイロードの sns_topic_arn プロパティを使用して、宛先トピックをオーバーライドできます。

containerMode

(オプション) このコンポーネントのコンテナ化モード。次のオプションから選択します。

  • NoContainer - コンポーネントは、分離されたランタイム環境では実行されません。

  • GreengrassContainer – コンポーネントは、AWS IoT Greengrass コンテナ内の分離されたランタイム環境で実行されます。

デフォルト: GreengrassContainer

containerParams

(オプション) このコンポーネントのコンテナパラメータを含むオブジェクト。containerModeGreengrassContainer を指定した場合、コンポーネントはこれらのパラメータを使用します。

このオブジェクトには、次の情報が含まれます。

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

(オプション) コンポーネントがメッセージを受信するためにサブスクライブするトピック。typeIotCore を指定した場合、このトピックで 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" }

ローカルログファイル

このコンポーネントは次のログファイルを使用します。

/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.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

当初のバージョン