Webhook アクション は、API リクエストに対する AWS Signature Version 4 に対応しています。AWS Signature V4 を利用すると、Flux アプリから AWS のサービスを呼び出せます。
ここでは、イベントソースを API/マニュアル実行イベントソース として、Flux アプリのチャネルを表すエンドポイントにリクエストを送信したときに Flux アプリを起動して、AWS IoT にデータを Publish するように設定します。
ステップ 1: IAM ポリシーと IAM ロールを作成する
Flux の Webhook アクションが、お客様の AWS アカウントの AWS IoT Core にデータを Publish するために、お客様の AWS アカウントに以下の設定の IAM ポリシーと IAM ロールを作成します。操作手順について詳しくは、IAM ポリシーと IAM ロールを作成する を参照してください。
| 項目 | 説明 |
|---|---|
| IAM ポリシー | このページで説明する機能を体験するために、お客様の AWS アカウントの AWS IoT の任意のトピックに対して、Publish する権限を追加した IAM ポリシーを作成します。 具体的には以下のように設定します。
|
| IAM ロール | このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。 具体的には以下のように設定します。
なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn} と表記します。例:
|
ステップ 2: AWS IoT Core のデフォルトのデータエンドポイントを確認する
AWS IoT Core へデータを送信するためのデフォルトのデータエンドポイントを確認します。詳しくは、AWS IoT Core のデフォルトのデータエンドポイントを確認する を参照してください。
このエンドポイントをこれ以降、${default_endpoint} と表記します。例: xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com
ステップ 3: 認証情報ストアに AWS IAM ロール認証情報を登録する
Flux から AWS IoT Core にデータを Publish するために、IAM ロールに関する認証情報を、SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
| 項目 | 説明 |
|---|---|
認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-flux-webhook | |
| 「AWS IAM ロール認証情報」を選択します。 | |
${iam_role_arn} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/flux-test-aws-iot-role | |
${external_id} を入力します。例: External-ID-sK5wm2ZyV8iaLXwG |

ステップ 4: Flux アプリを作成する
Webhook アクションを実行するための Flux アプリを作成します。
ユーザーコンソールにログイン し、Flux アプリを作成するカバレッジタイプを選択します。
詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。

をクリックします。

以下の項目を設定します。
項目 説明 Flux アプリの名前を入力します。 Flux アプリの概要を入力します。

をクリックします。
Flux アプリが作成され、SORACOM Flux Studio の タブが表示されます。

ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する
Flux アプリのチャネルを表すエンドポイントにリクエストを送信したときに、AWS IoT にデータを Publish するように設定します。具体的には、Webhook アクションを作成します。
Webhook アクションについて詳しくは、アクションリファレンスの Webhook アクション を参照してください。
SORACOM Flux Studio の タブで、 をクリックします。

「新しいチャネルを作成」画面が表示されます。
→ の順にクリックします。
をクリックします。
イベントソースに連結したチャネルが作成され、チャネルの詳細画面が表示されます。
→ の順にクリックします。

「新しいアクションを作成」画面が表示されます。
→ の順にクリックします。
「新しいアクションを作成: Webhook」画面が表示されます。
以下の項目を設定します。
項目 説明 Webhook アクションの名前を入力します。 Webhook アクションの概要を入力します。 「有効」にします。

続けて、 の以下の項目を設定します。
項目 説明 Webhook の HTTP メソッドを選択します。ここでは「POST」を選択します。 Webhook の HTTP URLを設定します。ここでは、${default_endpoint} を含めた「https://${default_endpoint}/topics/{任意の Topic 名}/」を入力します。
ここでは「https://xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com/topics/test-topic/」を入力します。
「AWS Signature V4」を選択します。 - : 「iotdata」(AWS IoT Data Plane のサービスコード) を選択します。
- : ステップ 2: AWS IoT Core のデフォルトのデータエンドポイントを確認する で確認した AWS IoT のリージョンを選択します。例: ap-northeast-1
- : ステップ 3: 認証情報ストアに AWS IAM ロール認証情報を登録する で登録した認証情報を選択します。例: AWS-IAM-role-credentials-flux-webhook
で「application/json」を選択すると、 content-typeとapplication/jsonが自動的に入力されます。Webhook の HTTP リクエストの HTTP ボディを設定します。ここでは、API/マニュアル実行イベントソース のインプットデータをそのまま送信するように、「application/json」を選択して、入力欄に ${payload}を入力します。

をクリックします。
Webhook アクションが作成され、チャネルの詳細画面の タブに戻ります。
動作確認
AWS IoT の MQTT テストクライアントを準備する
AWS IoT コンソール にアクセスし、AWS IoT のリージョンを選択して、 → の順にクリックして、 タブで以下の項目を設定します。
項目 説明 ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する で に設定した Topic 名に /#を追加した文字列を入力します。例:test-topic/#

をクリックします。
指定したトピックがサブスクライブされます。
API/マニュアル実行でメッセージを送信する
ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する で作成した API/マニュアル実行イベントソースをクリックします。

をクリックし、 に AWS IoT Core に送信するデータを入力します。
ここでは
{"message":"Hello from Flux!"}を入力します。

をクリックします。
AWS IoT の MQTT テストクライアントを準備する で準備した AWS IoT の MQTT テストクライアントに、手順 2 で入力したデータが表示されていることを確認します。

Flux アプリの実行履歴を確認する
SORACOM Flux Studio の タブでも、実行履歴を確認できます。
ユーザーコンソールにログイン し、Flux アプリを作成したカバレッジタイプを選択します。
たとえば、日本カバレッジに Flux アプリを作成した場合は、日本カバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
作成した Flux アプリをクリックします。
をクリックします。
チャネルごとに、、、そのチャネルで実行されたアクションの 、 が表示されます。詳しくは、実行履歴 (ログ) を参照してください。

