ルールの作成 - AWS IoT Core

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

ルールの作成

接続されたモノからデータをルーティングして他の AWS サービスとやり取りする AWS IoT ルールを作成できます。 AWS IoT ルールは、次のコンポーネントで構成されます。

ルールのコンポーネント
コンポーネント 説明 必須またはオプション
ルール名

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

必須。
ルールの説明

ルールに関してテキストで示された説明。ルールの説明では、個人を特定できる情報を使用することはお勧めしません。

オプション。
SQL ステートメント

MQTT トピックで受け取ったメッセージをフィルター処理し、別の場所にデータを送るための単純な SQL 構文。詳細については、「AWS IoT SQL リファレンス」を参照してください。

必須。
SQL のバージョン

ルールを評価する際に使用する SQL ルールエンジンのバージョン。このプロパティはオプションですが、SQL バージョンを指定することを強くお勧めします。 AWS IoT Core コンソールは、このプロパティを2016-03-23デフォルトで に設定します。 AWS CLI コマンドや AWS CloudFormation テンプレートなど、このプロパティが設定されていない場合2015-10-08は、 が使用されます。詳細については、「SQL バージョン」を参照してください。

必須。
1 つ以上のアクション アクションは、ルールの有効化時に AWS IoT を実行します。例えば、データを DynamoDB テーブルに挿入する、データを Amazon S3 バケットに書き込む、Amazon SNS トピックに発行する、Lambda 関数を呼び出すなどのアクションを指定できます。 必須。
エラーアクション アクションは AWS IoT 、ルールのアクションを実行できない場合に実行されます。 オプション。

AWS IoT ルールを作成する前に、必要な AWS リソースへのアクセスを許可するポリシーを持つ IAM ロールを作成する必要があります。 は、ルールを実装するときにこのロールを AWS IoT 引き受けます。詳細については、「必要なアクセスを AWS IoT ルールに付与する」および「ロールのアクセス許可を渡す」を参照してください。

ルールを作成する際には、トピックに対して公開されるデータの量に注意してください。ワイルドカードのトピックパターンが含まれるルールを作成すると、一致するメッセージの割合が大きくなる可能性があります。この場合、場合によってはターゲットアクションに使用する  AWS  リソースの容量を増やす必要があります。また、ワイルドカードのトピックパターンが含まれる再発行ルールを作成すると、循環ルールが作成され、無限ループが発生する可能性があります。

注記

ルールの作成と更新は、管理者レベルの操作です。ルールを作成または更新するアクセス権限のあるユーザーは、そのルールで処理されたデータにもアクセスできます。

ルールを作成する (コンソール)

ルール (AWS Management Console) を作成するには

AWS Management Console コマンドを使用してルールを作成します。

  1. AWS IoT コンソールを開きます。

  2. 左側のナビゲーションで、管理セクションからメッセージルーティングを選択します。次に、ルール を選択します。

  3. [Rules] (ルール) ページで、[Create rule] (ルールの作成) を選択します。

  4. ルールプロパティの指定 ページで、ルールの名前を入力します。ルールの説明タグはオプションです。[次へ] をクリックします。

  5. SQL ステートメントの設定ページで、SQL バージョンを選択し、SQL ステートメントを入力します。SQL ステートメントの例は ですSELECT temperature FROM 'iot/topic' WHERE temperature > 50。詳細については、「SQL バージョン」およびAWS IoT 「SQL リファレンス」を参照してください。

  6. 「ルールアクションのアタッチ」ページで、他の AWS のサービスにデータをルーティングするルールアクションを追加します。

    1. ルールアクション で、ドロップダウンリストからルールアクションを選択します。例えば、Kinesis Stream を選択できます。ルールアクションの詳細については、AWS IoT 「 ルールアクション」を参照してください。

    2. 選択したルールアクションに応じて、関連する設定の詳細を入力します。例えば、Kinesis Stream を選択した場合、データストリームリソースを選択または作成し、オプションでパーティションキー などの設定の詳細を入力する必要があります。これは、ストリーム内のシャードごとにデータをグループ化するために使用されます。

    3. IAM ロール で、エンドポイント AWS IoT へのアクセスを許可するロールを選択または作成します。 AWS IoT は、選択した IAM ロールaws-iot-ruleの下にプレフィックス が付いたポリシーを自動的に作成します。表示 を選択すると、IAM コンソールから IAM ロールとポリシーを表示できます。エラーアクションはオプションです。詳細については、「エラー処理 (エラーアクション)」を参照してください。ルールの IAM ロールの作成の詳細については、「必要なアクセスをルールに付与する」を参照してください。[次へ] をクリックします。

  7. 確認と作成ページで、すべての設定を確認し、必要に応じて編集を行います。[作成] を選択します。

ルールが正常に作成されると、ルールページにルールが表示されます。ルールを選択すると、詳細ページが開き、ルールの表示、ルールの編集、ルールの無効化、ルールの削除を行うことができます。

ルールを作成する (CLI)

ルール (AWS CLI) を作成するには

create-topic-rule コマンドを使用してルールを作成します。

aws iot create-topic-rule --rule-name myrule --topic-rule-payload file://myrule.json

以下のペイロードファイル例では、iot/test トピックに送信されたすべてのメッセージを指定の DynamoDB テーブルに挿入するルールが指定されています。SQL ステートメントはメッセージをフィルタリングし、ロール ARN は DynamoDB テーブルに書き込む AWS IoT アクセス許可を付与します。

{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my-dynamodb-table", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "hashKeyField": "topic", "hashKeyValue": "${topic(2)}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}" } } ] }

以下のペイロードファイル例では、iot/test トピックに送信されたすべてのメッセージを指定の S3 バケットに挿入するルールが指定されています。SQL ステートメントはメッセージをフィルタリングし、ロール ARN は Amazon S3 バケットに書き込む AWS IoT アクセス許可を付与します。

{ "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName": "my-bucket", "key": "myS3Key" } } ] }

以下は、Amazon OpenSearch Service にデータをプッシュするルールを含むペイロードファイルの例です。

{ "sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "OpenSearch": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_es", "endpoint": "https://my-endpoint", "index": "my-index", "type": "my-type", "id": "${newuuid()}" } } ] }

以下のペイロードファイル例では、Lambda 関数を呼び出すルールが指定されています。

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function" } } ] }

以下のペイロードファイル例では、Amazon SNS トピックに発行するルールが指定されています。

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }

以下のペイロードファイル例では、別の MQTT トピックに再発行するルールが指定されています。

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "my-mqtt-topic", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }

以下は、Amazon Data Firehose ストリームにデータをプッシュするルールを含むペイロードファイルの例です。

{ "sql": "SELECT * FROM 'my-topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "firehose": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "deliveryStreamName": "my-stream-name" } } ] }

以下は、MQTT ペイロード内のデータが 1 に分類される場合に、Amazon SageMaker machinelearning_predict関数を使用してトピックに再発行するルールを含むペイロードファイルの例です。

{ "sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "topic": "my-mqtt-topic" } } ] }

以下は、Salesforce IoT クラウド入力ストリームにメッセージを発行するルールを持つペイロードファイルの例です。

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "salesforce": { "token": "ABCDEFGHI123456789abcdefghi123456789", "url": "https://ingestion-cluster-id.my-env.sfdcnow.com/streams/stream-id/connection-id/my-event" } } ] }

以下のペイロードファイル例では、Step Functions ステートマシンの実行を開始するルールが指定されています。

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "stepFunctions": { "stateMachineName": "myCoolStateMachine", "executionNamePrefix": "coolRunning", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }