でルールを作成する AWS Lambda アクション - AWS IoT コア

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

でルールを作成する AWS Lambda アクション

_を呼び出すルールを定義できます。 Lambda 関数、ルールを開始したMQTTメッセージからのデータを渡します。これにより、受信メッセージからデータを抽出してから、別の AWS またはサードパーティーサービスを呼び出すことができます。このチュートリアルでは、 AWS IoT はじめに チュートリアル そして Amazon SNS ルールの作成 チュートリアルでは、 Amazon SNS トピック。では、 Lambda メッセージを Amazon SNS 作成したトピック Amazon SNS ルールの作成 チュートリアル。また、 Lambda 呼び出しるルール Lambda 機能。ルールを開始したMQTTメッセージから一部のデータを渡します。

このチュートリアルでは、 AWS IoT MQTTクライアントがルールを開始したメッセージを送信します。

Lambda 関数の作成

  1. AWS Lambda コンソールで、[関数の作成] を選択します。

  2. [Create function (関数の作成)] ページで、[Blueprints (設計図)] を選択します。[設計図] フィルタフィールドに「hello-world」と入力し、Enter キーを押します。[hello-world-python] 設計図を選択し、[設定] を選択します。

  3. [基本的な情報] で、関数に名前を入力します。

    注記

    ルールの名前や説明に個人を特定できる名前や情報を使用することはお勧めしません。

  4. [Execution Role (実行ロール)] ドロップダウンリストから、[Create new role from AWS policy templates (AWS ポリシーテンプレートから新しいロールを作成)] を選択します。ロールの名前を入力します。[ポリシーテンプレート] で、[Amazon SNS Publish policy (Amazon SNS 発行ポリシー)] を選択します。ドロップダウンメニューの外側をクリックして閉じます。

  5. [Create function (関数の作成)] を選択します。

  6. AWS Lambda コンソールで、Lambda 関数の名前を選択します。Lambda 関数に関する情報が表示されます。 [関数コード] セクションまで下にスクロールし、既存のコードを次の例に置き換えます。

    from __future__ import print_function import json import boto3 print('Loading function') def lambda_handler(event, context): # Parse the JSON message eventText = json.dumps(event) # Print the parsed JSON message to the console. You can view this text in the Monitoring tab in the AWS Lambda console or in the Amazon CloudWatch Logs console. print('Received event: ', eventText) # Create an SNS client sns = boto3.client('sns') # Publish a message to the specified topic response = sns.publish ( TopicArn = 'arn:aws:iam::123456789012:My_IoT_SNS_Topic', Message = eventText ) print(response)
  7. TopicArn の値を、「ルールの設定およびテスト」で作成した Amazon SNS トピックの ARN に置き換えます。

  8. [Save] を選択します。

    
              編集 Lambda 関数を使用して、SNS トピックを指定します。

Lambda 関数をテストする

  1. Lambda 関数の詳細ページの右上で、[Select a test event (テストイベントを選択)] から、[Configure test events (テストイベントの設定)] を選択します。

  2. [Configure test event (テストイベントの設定)] にテストイベントの名前を入力し、JSON メッセージを次のように置き換えます。

    { "message" : "Hello, world" }

    [作成] を選択します。

  3. Lambda 関数の詳細ページの右上で、[テスト] を選択し、テストイベントで指定したメッセージを使用して Lambda 関数をテストします。

  4. [Execution result (実行の結果)] タブの Lambda 関数コードの下に、 Lambda 関数からの出力が表示されます。

Lambda アクションを使用したルールの作成

このセクションでは、Lambda アクションとエラーアクションを使用してルールを作成するステップについて説明します。Lambda アクションは Lambda 関数を呼び出します。Lambda 関数の呼び出し中にエラーが発生した場合、エラーアクションはlambda/error MQTT トピックにメッセージを発行します。これは、ルールをテストする場合に役立ちます。

  1. AWS IoT コンソールを参照し、ナビゲーションペインから [Software (ソフトウェア)] を選択します。

  2. [作成] を選択して、AWS IoT ルールを作成します。

  3. [ルールの作成] ページで、ルールの名前を入力します。

  4. [ルールクエリステートメント] エディタで、以下のクエリを入力します。

    SELECT * FROM "my/lambda/topic"
  5. [Set one or more actions (1 つ以上のアクションを設定する)] で、[Add action (アクションの追加)] を選択します。

  6. [アクションを選択してください] セクションで、[Lambda 関数にメッセージを送信する]、[アクションの設定] の順に選択します。

  7. [Configure action (アクションの設定)] で、[選択] を選択します。

  8. Lambda 関数を選択します。

  9. [アクションの追加] を選択します。

  10. [Create a rule (ルールの作成)] ページの [Error action (エラーアクション)] で、[Add action (アクションの追加)] を選択します。

  11. [Set an action as error action (エラーアクションとしてアクションを設定)] で、[AWS IoT トピックにメッセージを再発行]、[アクションの設定] を選択します。

  12. [アクションの設定] で、[トピック] に lambda/error と入力します。

  13. [このアクションを実行するための AWS IoT アクセス権限を付与するロールを選択または作成します] で、[ロールの作成] を選択します。

  14. [新しいロールの作成] で、ロールの名前を入力し、[ロールの作成] を選択します。

  15. [アクションの設定] で、[アクションの追加] を選択します。

  16. [ルールの作成] で [ルールの作成] を選択します。

Lambda アクションを使用してルールをテストする

  1. Lambda アクションをテストするには、AWS IoT コンソールを開き、ナビゲーションペインで [テスト] を選択します。

  2. MQTT クライアントの [Subscription topic (トピックのサブスクリプション)] で「lambda/error」と入力し、[Subscribe to topic (トピックへのサブスクライブ)] を選択します。

  3. [発行] に「my/lambda/topic」と入力し、 [Publish to topic (トピックに発行)] を選択して、デフォルトの JSON メッセージを発行します。

このメッセージを発行すると、ルールが開始され、 Lambda 機能。Lambda 関数は、Amazon SNS トピックに登録された電話番号に Amazon SNS メッセージをプッシュします。テキストメッセージが表示されない場合は、MQTT クライアントで、lambda/error にメッセージが公開されていないか確認してください。

Lambda アクションによるルールのトラブルシューティング

あなたの Lambda という機能を呼び出しますが、テキストメッセージを受信しません。 Amazon SNS トピック。電話番号が登録されている場合は、Lambda 関数の CloudWatch ログを確認します。AWS Lambda は CloudWatch にログを書き込むため、Lambda 関数からの出力を確認することができます。

CloudWatch ログを表示するには

  1. Lambda コンソールのナビゲーションペインで、[関数] を選択します。

  2. Lambda 関数を選択します。

  3. Lambda 関数詳細ページで、[モニタリング] タブを選択します。

  4. 選択 ログインの表示 CloudWatch.

  5. 最新のストリームを選択します。

  6. ログストリームには、Lambda 関数によって書き込まれたログが表示されます。