Soracom

Users

ドキュメント
Home ドキュメント SORACOM Flux (Public beta) Getting Started

Webhook アクションの AWS Signature V4 認証を利用して AWS IoT にデータを Publish する

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 ポリシーを作成します。

具体的には以下のように設定します。

  • [Service] (サービス): 「IoT」を選択します。

  • [アクション]: [Publish] にチェックを入れます。

  • [リソース]: [topic][ARN を追加] をクリックして、「ARN を指定」画面で以下のように設定します。

    • [次のリソース]: 「このアカウント」を選択します。
    • [リソースのリージョン]: お客様の AWS IoT Core のリージョンを入力するか、[任意のリージョン] にチェックを入れます。
    • [Resource topic name] にトピック名 (例: myTopic/*) を入力するか、[任意の topic name] にチェックを入れます。
  • [ポリシー名]: IAM ポリシーの名前を入力します。これ以降、${iam_policy_name} と表記します。例: flux-test-aws-iot-policy

IAM ロール

このページで説明する機能を体験するために、「SORACOM の AWS アカウント」を信頼できるエンティティとして指定した IAM ロールを作成します。

具体的には以下のように設定します。

  • [信頼されたエンティティを選択]: IAM ロールの利用を許可する AWS アカウントとして、「SORACOM の AWS アカウント」を設定します。カバレッジタイプによって異なります。
  • [外部 ID]: IAM ロールを利用する際に外部 ID (任意の文字列) を要求し、セキュリティを強化します。IAM ロールごとに異なる文字列を指定してください。これ以降、${external_id} と表記します。例: External-ID-sK5wm2ZyV8iaLXwG
  • [許可ポリシー] (アタッチする IAM ポリシー): ${iam_policy_name} にチェックを入れます。例: flux-test-aws-iot-policy
  • [ロール名]: IAM ロールの名前 (例: flux-test-aws-iot-role) を入力します。

なお、ここで作成した IAM ロールの ARN を、これ以降、${iam_role_arn} と表記します。例: arn:aws:iam::XXXXXXXXXXXX:role/flux-test-aws-iot-role

ステップ 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 ユーザーコンソールに登録します。

具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。

項目説明
[認証情報 ID]認証情報を識別するために任意の名前を入力します。例: AWS-IAM-role-credentials-flux-webhook
[種別]「AWS IAM ロール認証情報」を選択します。
[ロール ARN]${iam_role_arn} を入力します。例: arn:aws:iam::XXXXXXXXXXXX:role/flux-test-aws-iot-role
[外部 ID]${external_id} を入力します。例: External-ID-sK5wm2ZyV8iaLXwG

ステップ 4: Flux アプリを作成する

Webhook アクションを実行するための Flux アプリを作成します。

  1. ユーザーコンソールにログイン し、Flux アプリを作成するカバレッジタイプを選択します。

    詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][SORACOM Flux][Flux アプリ] の順にクリックします。

  3. [+新しい Flux アプリを作成する] をクリックします。

  4. 以下の項目を設定します。

    項目説明
    [名前]Flux アプリの名前を入力します。
    [概要]Flux アプリの概要を入力します。

  5. [作成] をクリックします。

    Flux アプリが作成され、SORACOM Flux Studio の [Studio] タブが表示されます。

ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する

  1. SORACOM Flux Studio の [Studio] タブで、[+チャネルを作成する] をクリックします。

    「新しいチャネルを作成」画面が表示されます。

  2. [API/マニュアル実行][次へ] の順にクリックします。

  3. [チャネルを作成する] をクリックします。

    イベントソースに連結したチャネルが作成され、チャネルの詳細画面が表示されます。

  4. [アクション][+アクションを追加] の順にクリックします。

    「新しいアクションを作成」画面が表示されます。

  5. [Webhook][OK] の順にクリックします。

    「新しいアクションを作成: Webhook」画面が表示されます。

  6. 以下の項目を設定します。

    項目説明
    [名前]Webhook アクションの名前を入力します。
    [概要]Webhook アクションの概要を入力します。
    [有効]Webhook アクションを有効化する場合は「有効」にします。
    [CONDITION]Webhook アクションの実行条件を設定します。ここでは、すべての条件で実行するため、空欄のままにします。

  7. 続けて、以下の項目を設定します。

    項目説明
    [HTTP メソッド]Webhook の HTTP メソッドを選択します。ここでは「POST」を選択します。
    [URL]

    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 のデフォルトのデータエンドポイントを確認する で確認した AWS IoT のリージョンを選択します。例: ap-northeast-1
    [認証情報]ステップ 3: 認証情報ストアに AWS IAM ロール認証情報を登録する で登録した認証情報を選択します。例: AWS-IAM-role-credentials-flux-webhook

  8. 続けて、以下の項目を設定します。

    項目説明
    [HTTP ヘッダー][HTTP ボディ] で「application/json」を選択すると、content-typeapplication/json が自動的に入力されます。
    [HTTP ボディ]Webhook の HTTP リクエストの HTTP ボディを設定します。ここでは、API/マニュアル実行イベントソース のインプットデータをそのまま送信するように、「application/json」を選択して、入力欄に ${payload} を入力します。
    [OUTPUT]

    Webhook アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。

    ここでは、[アクションのアウトプットを別のチャネルに送信する] を「無効」にします。

  9. [作成する] をクリックします。

    Webhook アクションが作成され、チャネルの詳細画面の [アクション] タブに戻ります。

動作確認

AWS IoT の MQTT テストクライアントを準備する

  1. AWS IoT コンソール にアクセスし、AWS IoT のリージョンを選択して、[テスト][MQTT テストクライアント] の順にクリックして、[トピックをサブスクライブする] タブで以下の項目を設定します。

    項目説明
    [トピックのフィルター]ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する[URL] に設定した Topic 名に /# を追加した文字列を入力します。例: test-topic/#

  2. [サブスクライブ] をクリックします。

    指定したトピックがサブスクライブされます。

API/マニュアル実行でメッセージを送信する

  1. ステップ 5: Flux アプリにイベントソースと Webhook アクションを追加する で作成した API/マニュアル実行イベントソースをクリックします。

  2. [テスト実行] をクリックし、[Body] に AWS IoT Core に送信するデータを入力します。

    ここでは {"message":"Hello from Flux!"} を入力します。

  3. [実行] をクリックします。

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

Flux アプリの実行履歴を確認する

SORACOM Flux Studio の [実行履歴] タブでも、実行履歴を確認できます。

  1. ユーザーコンソールにログイン し、Flux アプリを作成したカバレッジタイプを選択します。

    たとえば、日本カバレッジに Flux アプリを作成した場合は、日本カバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  2. [メニュー][SORACOM Flux][Flux アプリ] の順にクリックします。

  3. 作成した Flux アプリをクリックします。

  4. [実行履歴] をクリックします。

    チャネルごとに、[MESSAGE][CONTEXT]、そのチャネルから実行されたアクションの [入力][出力] が表示されます。詳しくは、実行履歴 (ログ) を参照してください。