翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ルールの作成
接続されたモノからデータをルーティングして他の AWS サービスとやり取りする AWS IoT ルールを作成できます。 AWS IoT ルールは、次のコンポーネントで構成されます。
ルールのコンポーネント | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
コンポーネント | 説明 | 必須またはオプション | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ルール名 |
ルールの名前。ルール名に個人を特定できる情報を使用することはお勧めしません。 |
必須。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ルールの説明 |
ルールに関してテキストで示された説明。ルールの説明では、個人を特定できる情報を使用することはお勧めしません。 |
オプション。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SQL ステートメント |
MQTT トピックで受け取ったメッセージをフィルター処理し、別の場所にデータを送るための単純な SQL 構文。詳細については、「AWS IoT SQL リファレンス」を参照してください。 |
必須。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SQL のバージョン |
ルールを評価する際に使用する SQL ルールエンジンのバージョン。このプロパティはオプションですが、SQL バージョンを指定することを強くお勧めします。 AWS IoT Core コンソールは、このプロパティを |
必須。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
-
AWS IoT コンソール
を開きます。 -
左側のナビゲーションで、管理セクションからメッセージルーティングを選択します。次に、ルール を選択します。
-
[Rules] (ルール) ページで、[Create rule] (ルールの作成) を選択します。
-
ルールプロパティの指定 ページで、ルールの名前を入力します。ルールの説明とタグはオプションです。[次へ] をクリックします。
-
SQL ステートメントの設定ページで、SQL バージョンを選択し、SQL ステートメントを入力します。SQL ステートメントの例は です
SELECT temperature FROM 'iot/topic' WHERE temperature > 50
。詳細については、「SQL バージョン」およびAWS IoT 「SQL リファレンス」を参照してください。 -
「ルールアクションのアタッチ」ページで、他の AWS のサービスにデータをルーティングするルールアクションを追加します。
-
ルールアクション で、ドロップダウンリストからルールアクションを選択します。例えば、Kinesis Stream を選択できます。ルールアクションの詳細については、AWS IoT 「 ルールアクション」を参照してください。
-
選択したルールアクションに応じて、関連する設定の詳細を入力します。例えば、Kinesis Stream を選択した場合、データストリームリソースを選択または作成し、オプションでパーティションキー などの設定の詳細を入力する必要があります。これは、ストリーム内のシャードごとにデータをグループ化するために使用されます。
-
IAM ロール で、エンドポイント AWS IoT へのアクセスを許可するロールを選択または作成します。 AWS IoT は、選択した IAM ロール
aws-iot-rule
の下にプレフィックス が付いたポリシーを自動的に作成します。表示 を選択すると、IAM コンソールから IAM ロールとポリシーを表示できます。エラーアクションはオプションです。詳細については、「エラー処理 (エラーアクション)」を参照してください。ルールの IAM ロールの作成の詳細については、「必要なアクセスをルールに付与する」を参照してください。[次へ] をクリックします。
-
-
確認と作成ページで、すべての設定を確認し、必要に応じて編集を行います。[作成] を選択します。
ルールが正常に作成されると、ルールページにルールが表示されます。ルールを選択すると、詳細ページが開き、ルールの表示、ルールの編集、ルールの無効化、ルールの削除を行うことができます。
ルールを作成する (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" } } ] }