

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SNS コネクタ
<a name="sns-connector"></a>

SNS [コネクタ](connectors.md)は、Amazon SNS トピックにメッセージを発行します。これにより、ウェブサーバー、E メールアドレス、および他のメッセージサブスクライバーは Greengrass グループのイベントに応答できます。

このコネクタは、MQTT トピックに関する SNS メッセージ情報を受信し、指定された SNS トピックに送信します。オプションでカスタム Lambda 関数を使用して、メッセージをこのコネクタに発行する前にフィルタリング処理および書式設定するロジックを実装できます。

このコネクタには、次のバージョンがあります。


| バージョン | ARN | 
| --- | --- | 
| 4 | `arn:aws:greengrass:{{region}}::/connectors/SNS/versions/4` | 
| 3 | `arn:aws:greengrass:{{region}}::/connectors/SNS/versions/3` | 
| 2 | `arn:aws:greengrass:{{region}}::/connectors/SNS/versions/2` | 
| 1 | `arn:aws:greengrass:{{region}}::/connectors/SNS/versions/1` | 

バージョンの変更については、「[Changelog](#sns-connector-changelog)」を参照してください。

## 要件
<a name="sns-connector-req"></a>

このコネクタには以下の要件があります。

------
#### [ Version 3 - 4 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) バージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
**注記**  <a name="use-runtime-py3.8"></a>
Python 3.8 を使用するには、次のコマンドを実行して、Python 3.7 のデフォルトのインストールフォルダからインストール済みの Python 3.8 バイナリへのシンボリックリンクを作成します。  

  ```
  sudo ln -s {{path-to-python-3.8}}/python3.8 /usr/bin/python3.7
  ```
これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。
+ <a name="conn-sns-req-sns-config"></a>設定済みの SNS トピック。詳細については、[Amazon Simple 通知サービス デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html)の「*Amazon SNS トピックの作成*」を参照してください。
+ <a name="conn-sns-req-iam-policy"></a>以下の IAM ポリシーの例に示すように、ターゲットの Amazon SNS トピックでの `sns:Publish` アクションを許可するように設定された [Greengrass グループロール](group-role.md)。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:{{us-east-1}}:{{123456789012}}:{{topic-name}}"
              ]
          }
      ]
  }
  ```

------

  このコネクタでは、入力メッセージペイロードのデフォルトトピックを動的に上書きできます。実装でこの機能を使用している場合、IAM ポリシーはすべてのターゲットトピックに対する `sns:Publish` アクセス許可を付与する必要があります。リソースにきめ細かいアクセス権限または条件付きアクセス権限を付与できます (例えば、ワイルドカード \* 命名スキームを使用)。

  <a name="set-up-group-role"></a>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Core ソフトウェア v1.7 以降。
+ [Python](https://www.python.org/) バージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
+ <a name="conn-sns-req-sns-config"></a>設定済みの SNS トピック。詳細については、[Amazon Simple 通知サービス デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html)の「*Amazon SNS トピックの作成*」を参照してください。
+ <a name="conn-sns-req-iam-policy"></a>以下の IAM ポリシーの例に示すように、ターゲットの Amazon SNS トピックでの `sns:Publish` アクションを許可するように設定された [Greengrass グループロール](group-role.md)。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Stmt1528133056761",
              "Action": [
                  "sns:Publish"
              ],
              "Effect": "Allow",
              "Resource": [
              "arn:aws:sns:{{us-east-1}}:{{123456789012}}:{{topic-name}}"
              ]
          }
      ]
  }
  ```

------

  このコネクタでは、入力メッセージペイロードのデフォルトトピックを動的に上書きできます。実装でこの機能を使用している場合、IAM ポリシーはすべてのターゲットトピックに対する `sns:Publish` アクセス許可を付与する必要があります。リソースにきめ細かいアクセス権限または条件付きアクセス権限を付与できます (例えば、ワイルドカード \* 命名スキームを使用)。

  <a name="set-up-group-role"></a>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。

------

## コネクタパラメータ
<a name="sns-connector-param"></a>

このコネクタには、以下のパラメータが用意されています。

------
#### [ Version 4 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
メッセージを発行するデフォルト SNS トピックの ARN。ターゲットトピックは入力メッセージペイロードの `sns_topic_arn` プロパティによって上書きできます。  
グループロールは、すべてのターゲットトピックに対する `sns:Publish` アクセス許可を付与する必要があります。詳細については、「[要件](#sns-connector-req)」を参照してください。
 AWS IoT コンソールの表示名: **デフォルトの SNS トピック ARN**  
必須: `true`  
型: `string`  
有効なパターン: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

`IsolationMode`  <a name="IsolationMode"></a>
このコネクタの[コンテナ化](connectors.md#connector-containerization)モード。デフォルトは です。つまり`GreengrassContainer`、コネクタは AWS IoT Greengrass コンテナ内の分離されたランタイム環境で実行されます。  
グループの既定のコンテナ化設定は、コネクタには適用されません。
 AWS IoT コンソールの表示名: **コンテナ分離モード**  
必須: `false`  
型: `string`  
有効な値: `GreengrassContainer` または `NoContainer`  
有効なパターン: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 1 - 3 ]

`DefaultSNSArn`  <a name="sns-DefaultSNSArn"></a>
メッセージを発行するデフォルト SNS トピックの ARN。ターゲットトピックは入力メッセージペイロードの `sns_topic_arn` プロパティによって上書きできます。  
グループロールは、すべてのターゲットトピックに対する `sns:Publish` アクセス許可を付与する必要があります。詳細については、「[要件](#sns-connector-req)」を参照してください。
 AWS IoT コンソールの表示名: **デフォルトの SNS トピック ARN**  
必須: `true`  
型: `string`  
有効なパターン: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`

------

### サンプルコネクタを作成する (AWS CLI)
<a name="sns-connector-create"></a>

以下の CLI コマンドは、SNS コネクタを含む初期バージョンで `ConnectorDefinition` を作成します。

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySNSConnector",
            "ConnectorArn": "arn:aws:greengrass:{{region}}::/connectors/SNS/versions/4",
            "Parameters": {
                "DefaultSNSArn": "arn:aws:sns:{{region}}:{{account-id}}:topic-name",
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

 AWS IoT Greengrass コンソールでは、グループのコネクタページから**コネクタ**を追加できます。詳細については、「[Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)」を参照してください。

## 入力データ
<a name="sns-connector-data-input"></a>

このコネクタは、MQTT トピックに関する SNS メッセージ情報を受け取り、その情報をそのままターゲット SNS トピックに発行します。入力メッセージは JSON 形式である必要があります。

<a name="topic-filter"></a>**サブスクリプションのトピックフィルター**  
`sns/message`

**メッセージのプロパティ**    
`request`  
SNS トピックに送信するメッセージに関する情報。  
必須: `true`  
型: 以下のプロパティを含む `object`。    
`message`  
文字列または JSON 形式でのメッセージの内容。例については、「[入力例](#sns-connector-data-input-example)」を参照してください。  
JSON を送信するには、`message_structure` プロパティを `json` に設定する必要があります。メッセージは、文字列エンコードされた JSON オブジェクト (`default` キーを含む) であることが必要です。  
必須: `true`  
型: `string`  
有効なパターン: `.*`  
`subject`  
メッセージの件名。  
必須: `false`  
: ASCII テキスト (最大 100 文字)。これは、文字、数字、または句読点で始まる必要があります。改行や制御文字は使用しないでください。  
有効なパターン: `.*`  
`sns_topic_arn`  
メッセージを発行する SNS トピックの ARN。指定した場合、コネクタは、デフォルトのトピックではなくこのトピックに発行します。  
グループロールは、すべてのターゲットトピックに対する `sns:Publish` アクセス許可を付与する必要があります。詳細については、「[要件](#sns-connector-req)」を参照してください。
必須: `false`  
型: `string`  
有効なパターン: `arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$`  
`message_structure`  
メッセージの構造。  
必須: `false`。これは、JSON メッセージを送信するために指定する必要があります。  
型: `string`  
有効な値: `json`  
`id`  
リクエストの任意の ID。このプロパティは、入力リクエストを出力レスポンスにマッピングするために使用します。指定すると、レスポンスオブジェクトの `id` プロパティがこの値に設定されます。この機能を使用しない場合は、このプロパティを省略するか空の文字列を指定できます。  
必須: `false`  
型: `string`  
有効なパターン: `.*`

**制限**  
メッセージサイズは、256 KB の最大 SNS メッセージサイズによって制限されます。

**入力例: 文字列メッセージ**  <a name="sns-connector-data-input-example"></a>
この例では、文字列メッセージを送信します。オプションの `sns_topic_arn` プロパティを指定します。このプロパティは、デフォルトの送信先トピックよりも優先されます。  

```
{
    "request": {
        "subject": "Message subject",
        "message": "Message data",
        "sns_topic_arn": "arn:aws:sns:{{region}}:{{account-id}}:topic2-name"
    },
    "id": "request123"
}
```

**入力例: JSON メッセージ**  
この例では、メッセージを文字列エンコードされた JSON オブジェクト (`default` キーを含む) として送信します。  

```
{
    "request": {
        "subject": "Message subject",
        "message": "{ \"default\": \"Message data\" }",
        "message_structure": "json"
    },
    "id": "request123"
}
```

## 出力データ
<a name="sns-connector-data-output"></a>

このコネクタは、MQTT トピックの出力データとしてステータス情報を発行します。

<a name="topic-filter"></a>**サブスクリプションのトピックフィルター**  
`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"
}
```

## 使用例
<a name="sns-connector-usage"></a>

<a name="connectors-setup-intro"></a>コネクタの試用に利用できる Python 3.7 Lambda 関数の例を設定するには、次のステップ (概要) を使用します。

**注記**  <a name="connectors-setup-get-started-topics"></a>
他の Python ランタイムを使用する場合は、Python 3.x から Python 3.7 へのシンボリックリンクを作成します。
「[コネクタの使用を開始する (コンソール)](connectors-console.md)」および「[コネクタの使用を開始する (CLI)](connectors-cli.md)」トピックには、Twilio 通知コネクタの例を設定およびデプロイする方法を示す詳細なステップが含まれています。

1. コネクタの[要件](#sns-connector-req)を満たしていることを確認します。

   <a name="set-up-group-role"></a>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。

1. <a name="connectors-setup-function"></a>入力データをコネクタに送信する Lambda 関数を作成して発行します。

   [サンプルコード](#sns-connector-usage-example)を PY ファイルとして保存します。<a name="connectors-setup-function-sdk"></a>[AWS IoT Greengrass Core SDK for Python](lambda-functions.md#lambda-sdks-core) をダウンロードして解凍します。次に、PY ファイルとルートレベルの `greengrasssdk` フォルダを含む zip パッケージを作成します。この zip パッケージは、 AWS Lambdaにアップロードするデプロイパッケージです。

   <a name="connectors-setup-function-publish"></a>Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。

1. Greengrass グループを設定します。

   1. <a name="connectors-setup-gg-function"></a>エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または CLI で `"Pinned": true` に) 設定します。

   1. コネクタを追加し、その[パラメータ](#sns-connector-param)を設定します。

   1. コネクタが[入力データ](#sns-connector-data-input)を受信し、サポートされているトピックフィルターで[出力データ](#sns-connector-data-output)を送信できるようにするサブスクリプションを追加します。
      + <a name="connectors-setup-subscription-input-data"></a>Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。
      + <a name="connectors-setup-subscription-output-data"></a>コネクタをソースとして、 AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、 AWS IoT コンソールでステータスメッセージを表示します。

1. <a name="connectors-setup-deploy-group"></a>グループをデプロイします。

1. <a name="connectors-setup-test-sub"></a> AWS IoT コンソールの**テスト**ページで、出力データトピックをサブスクライブして、コネクタからのステータスメッセージを表示します。この例の Lambda 関数は長期間有効であり、グループがデプロイされた直後にメッセージの送信を開始します。

   テストが終了したら、Lambda ライフサイクルをオンデマンドに (または CLI で `"Pinned": false` に) 設定して、グループをデプロイできます。これにより、関数がメッセージの送信を停止します。

### 例
<a name="sns-connector-usage-example"></a>

次の例では、Lambda 関数で入力メッセージをコネクタに送信します。

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'sns/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "message": "Message from SNS Connector Test"
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

def lambda_handler(event, context):
    return
```

## ライセンス
<a name="sns-connector-license"></a>

SNS コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。<a name="boto-3-licenses"></a>
+ [AWS SDK for Python (Boto3)](https://pypi.org/project/boto3/)/Apache License 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF ライセンス
+ [docutils](https://pypi.org/project/docutils/)/BSD ライセンス、GNU 一般パブリックライセンス (GPL)、Python Software Foundation ライセンス、パブリックドメイン
+ [jmespath](https://pypi.org/project/jmespath/)/MIT ライセンス
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT ライセンス

このコネクタは、[Greengrass Core ソフトウェアライセンス契約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)に従ってリリースされます。

## 変更ログ
<a name="sns-connector-changelog"></a>

次の表に、コネクタの各バージョンにおける変更点を示します。


| バージョン | 変更 | 
| --- | --- | 
| 4 | <a name="isolation-mode-changelog"></a>コネクタのコンテナ化モードを設定するための `IsolationMode` パラメータが追加されました。 | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Lambda ランタイムを Python 3.7 にアップグレードしたことで、ランタイム要件が変更。 | 
| 2 | 過剰なログ記録を減らすための修正。 | 
| 1 | 初回リリース。 | 

<a name="one-conn-version"></a>Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「[コネクタのバージョンのアップグレード](connectors.md#upgrade-connector-versions)」を参照してください。

## 関連情報
<a name="sns-connector-see-also"></a>
+ [Greengrass コネクタを使用したサービスおよびプロトコルとの統合](connectors.md)
+ [Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)
+ [Greengrass コネクタの開始方法 (CLI)](connectors-cli.md)
+ Boto 3 ドキュメントの「[発行アクション](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish)」
+ *Amazon Simple Notification Service デベロッパーガイド*の [Amazon Simple Notification Service とは](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)