AWS IoT ルールアクション - AWS IoT

AWS IoT ルールアクション

AWS IoT ルールアクションは、ルールがトリガーされたときに行う動作を指定するために使用されます。DynamoDB データベースや Kinesis ストリームにデータを書き込むアクションや、Lambda 関数を呼び出すアクションなどを定義できます。AWS は、サービスが利用できるリージョンでのアクションをサポートします。以下のアクションがサポートされています。

  • cloudwatchAlarm アラームを変更する CloudWatch。

  • cloudwatchLogs では、データを CloudWatch Logs に送信します。

  • cloudwatchMetric メトリクスをキャプチャする CloudWatch。

  • dynamoDB では、データを DynamoDB データベースに書き込みます。

  • dynamoDBv2 では、データを DynamoDB データベースに書き込みます。

  • elasticsearch では、データを Amazon Elasticsearch Service ドメインに書き込みます。

  • firehose では、データを Amazon Kinesis Data Firehose ストリームに書き込みます。

  • http では、HTTPS エンドポイントにデータを送信します。

  • iotAnalytics では、AWS IoT Analytics チャネルにデータを送信します。

  • iotEvents では、AWS IoT イベント 入力にメッセージデータを送信します。

  • iotSiteWise では、AWS IoT SiteWise のアセットプロパティにデータを送信します。

  • kinesis では、データを Kinesis ストリームに書き込みます。

  • lambda では、Lambda 関数を呼び出します。

  • republish では、メッセージを別の MQTT トピックに再発行します。

  • s3 では、データを Amazon S3 バケットに書き込みます。

  • salesforce では、メッセージを Salesforce IoT 入力ストリームに書き込みます。

  • sns では、データをプッシュ通知として書き込みます。

  • sqs では、データを SQS キューに書き込みます。

  • Step Functions ステートマシンの実行を開始するには stepFunctions

注記

AWS IoT ルールエンジンは、断続的なエラーが発生した場合、アクションの実行を複数回試みることがあります。すべての試行が失敗すると、メッセージは破棄され、CloudWatch ログにエラーが表示されます。障害が発生した後に呼び出される各ルールに対して、エラーアクションを指定できます。詳細については、「エラー処理 (エラーアクション)」を参照してください。

一部のルールアクションは、AWS Key Management Service (AWS KMS) と統合されたサービスでアクションをトリガーして、保管時のデータ暗号化をサポートします。カスタマー管理の AWS KMS カスタマーマスターキー (CMK) を使用して保管中のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。カスタマー管理の CMK の権限を管理する方法については、該当するサービスガイドのデータ暗号化トピックを参照してください。CMK とカスタマー管理の CMK の詳細については、『AWS Key Management Service Developer Guide』の「AWS Key Management Service の概念」を参照してください。

各アクションについて詳しく説明します。

CloudWatch アラームアクション

CloudWatch alarm action

CloudWatch アラームアクションを使用すると、CloudWatch アラームの状態を変更できます。状態変更の理由と、この呼び出しでの値を指定できます。

More information (1)

AWS IoT アラームアクションを伴う CloudWatch ルールを生成する場合は、次の情報を指定する必要があります。

roleArn

IAM アラームへのアクセスを許可する CloudWatch ロール。

alarmName

CloudWatch アラーム名。

stateReason

アラーム変更の理由。

stateValue

アラーム状態の値。許容値は、OKALARMINSUFFICIENT_DATA です。

注記

ルールに関連付けられているロールには、cloudwatch:SetAlarmState アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、CloudWatch ルール内で AWS IoT アラームアクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "cloudwatchAlarm": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_cw", "alarmName": "IotAlarm", "stateReason": "Temperature stabilized.", "stateValue": "OK" } }] } }

詳細については、「CloudWatch アラーム」を参照してください。

Substitution Templates

CloudWatch アラームアクションは、CLI およびコンソールの alarmNamestateValue、および stateReason パラメータ内の置換テンプレートをサポートします。ただし、alarmName パラメータは CLI でのみ置換可能です。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の CloudWatch アラームアクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "CWAlarmSubsitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/CWAlarmSubsitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'cwalarmsubstopic'", "ruleDisabled": false, "actions": [ { "cloudwatchAlarm": { "stateReason": "${topic()}", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "alarmName": "$($newuuid())", "stateValue": "$($newuuid())" } } ], "ruleName": "CWAlarmSubsitutionExample" } }

CloudWatch Logs アクション

CloudWatch Logs action

CloudWatch ログアクションを使用すると、CloudWatch Logs にデータを送信できます。アクションがデータを送信する CloudWatch ロググループを指定できます。

More information (2)

CloudWatch ログアクションを使用して AWS IoT ルールを作成する場合は、次の情報を指定する必要があります。

roleArn

CloudWatch ログへのアクセスを許可する IAM ロール。

logGroupName

アクションがデータを送信する CloudWatch ロググループ。

次の JSON の例は、AWS IoT ルール内で CloudWatch ログを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "cloudwatchLogs": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_cw", "logGroupName": "IotLogs" } }] } }

詳細については、「CloudWatch Logs の使用開始」を参照してください。カスタマー管理の AWS KMS CMK を使用して CloudWatch Logs のログデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon CloudWatch Logs』の「AWS KMS を使用した CloudWatch Logs でのログデータの暗号化」を参照してください。

CloudWatch メトリクスアクション

CloudWatch metric action

CloudWatch メトリクスアクションを使用すると、CloudWatch メトリクスを取得できます。メトリクスの名前空間、名前、値、単位、タイムスタンプを指定できます。

More information (3)

AWS IoT メトリクスアクションを伴う CloudWatch ルールを生成する場合は、次の情報を指定する必要があります。

roleArn

IAM メトリクスへのアクセスを許可する CloudWatch ロール。

metricNamespace

CloudWatch メトリクスの名前空間名。

metricName

CloudWatch メトリクスの名前。

metricValue

CloudWatch メトリクスの値。

metricUnit

CloudWatch でサポートされるメトリクスの単位。

metricTimestamp

オプションの Unix タイムスタンプ。

注記

ルールに関連付けられているロールには、cloudwatch:PutMetricData アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、CloudWatch ルール内で AWS IoT メトリクスアクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "cloudwatchMetric": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_cw", "metricNamespace": "IotNamespace", "metricName": "IotMetric", "metricValue": "1", "metricUnit": "Count", "metricTimestamp": "1456821314" } }] } }

詳細については、「CloudWatch メトリクス」を参照してください。

Substitution Templates

CloudWatch メトリクスアクションは、CLI とコンソールの両方で metricUnitmetricTimestampmetricNamespacemetricValue、および metricName パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の CloudWatch メトリクスアクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "CWMetricSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/CWMetricSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'cwmetricsubstemplate'", "ruleDisabled": false, "actions": [ { "cloudwatchMetric": { "metricUnit": "${topic()}", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "metricTimestamp": "${newuuid()}", "metricNamespace": "${topic()}", "metricValue": "${newuuid()}", "metricName": "${topic()}" } } ], "ruleName": "CWMetricSubstitutionExample" } }

DynamoDB アクション

DynamoDB action

dynamoDB アクションを使用すると、MQTT メッセージの全体または一部を DynamoDB テーブルに書き込むことができます。

More information (4)

DynamoDB ルールを作成するときは、次の情報を指定する必要があります。

hashKeyType

省略可能。ハッシュキー (パーティションキーとも呼ばれます) のデータ型。有効な値は、"STRING" または "NUMBER" です。

hashKeyField

ハッシュキー (パーティションキーとも呼ばれます) の名前。

hashKeyValue

ハッシュキーの値。

rangeKeyType

オプション。範囲キー (ソートキーとも呼ばれます) のデータ型。有効な値は、"STRING" または "NUMBER" です。

rangeKeyField

オプション。範囲キー (ソートキーとも呼ばれます) の名前。

rangeKeyValue

オプション。範囲キーの値。

オペレーション

オプション。実行する操作の種類。これには置換テンプレートが適用されるため、${operation} を指定できますが、置換結果が INSERTUPDATE、または DELETE になる必要があります。

payloadField

オプション。ペイロードが書き込まれるフィールドの名前。この値を省略した場合、ペイロードは payload フィールドに書き込まれます。

table

DynamoDB テーブルの名前。

roleARN

DynamoDB テーブルへのアクセスを許可する IAM ロール。このロールでは、最小限でも IAM アクション dynamoDB:PutItem を許可する必要があります。

DynamoDB テーブルに書き込まれるデータは、ルールの SQL ステートメントの結果です。hashKeyValue フィールドと rangeKeyValue フィールドは通常、式 (例: 「${topic()}」または「${timestamp()}」) で構成されます。

注記

非 JSON データは、バイナリデータとして DynamoDB に書き込まれます。DynamoDB コンソールでは、Base64 でエンコードされたテキストとしてデータが表示されます。

ルールに関連付けられているロールには、dynamodb:PutItem アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、dynamoDB ルール内で AWS IoT アクションを定義する方法を示しています。

{ "topicRulePayload": { "ruleDisabled": false, "sql": "SELECT * AS message FROM 'some/topic'", "description": "A test Dynamo DB rule", "awsIotSqlVersion": "2016-03-23", "actions": [{ "dynamoDB": { "hashKeyField": "key", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB", "tableName": "my_ddb_table", "hashKeyValue": "${topic()}", "rangeKeyValue": "${timestamp()}", "rangeKeyField": "timestamp" } }] } }

詳細については、「Amazon DynamoDB 入門ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して DynamoDB の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon DynamoDB 入門ガイド』の「カスタマー管理の CMK」を参照してください。

Substitution Templates

dynamoDB アクションは、CLI とコンソールの両方で tableNamehasKeyFieldhashKeyValuepayloadFieldhashKeyTyperangeKeyFieldrangeKeyValue および rangeKeyType パラメータ内の置換テンプレートをサポートします。ただし、tableNamehasKeyFieldhashKeyTyperangeKeyType パラメータは CLI でのみ置換可能です。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の dynamoDB アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "DynamoV1SubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/DynamoV1SubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'ddbv1substopic'", "ruleDisabled": false, "actions": [ { "dynamoDB": { "rangeKeyType": "${topic()}", "payloadField": "${topic()}", "hashKeyType": "${topic()}", "hashKeyField": "hashKeyField", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "tableName": ""${topic()}"", "hashKeyValue": "${topic()}", "rangeKeyValue": "${topic()}", "rangeKeyField": "${topic()}" } } ], "ruleName": "DynamoV1SubstitutionExample" } }

DynamoDBv2 アクション

DynamoDBv2 action

dynamoDBv2 アクションを使用すると、MQTT メッセージの全体または一部を DynamoDB テーブルに書き込むことができます。ペイロードの各属性は、DynamoDB データベースの個別の列に書き込まれます。

More information (5)

DynamoDB ルールを作成するときは、次の情報を指定する必要があります。

roleARN

DynamoDB テーブルへのアクセスを許可する IAM ロール。このロールでは、最小限でも IAM アクション dynamoDB:PutItem を許可する必要があります。

tableName

DynamoDB テーブルの名前。

注記

MQTT メッセージのペイロードは、定義されている場合、テーブルのプライマリパーティションキーおよびテーブルのプライマリソートキーに一致するルートレベルキーが含まれる必要があります。

DynamoDB テーブルに書き込まれるデータは、ルールの SQL ステートメントの結果です。

注記

ルールに関連付けられているロールには、dynamodb:PutItem アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、dynamoDB ルール内で AWS IoT アクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "description": "A test DynamoDBv2 rule", "awsIotSqlVersion": "2016-03-23", "actions": [{ "dynamoDBv2": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDBv2", "putItem": { "tableName": "my_ddb_table" } } }] } }

詳細については、「Amazon DynamoDB 入門ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して DynamoDB の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon DynamoDB 入門ガイド』の「カスタマー管理の CMK」を参照してください。

Substitution Templates

dynamoDBv2 アクションは、CLI の tableName パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の dynamoDBv2 アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "DDBV2SubsExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/DDBV2SubsExample", "rule": { "awsIotSqlVersion": "2015-10-08", "sql": "SELECT topic() AS topic FROM 'ddbvssubstopic'", "ruleDisabled": false, "actions": [ { "dynamoDBv2": { "putItem": { "tableName": "${topic()}" }, "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest" } } ], "ruleName": "DDBV2SubsExample" } }

Elasticsearch アクション

Elasticsearch action

elasticsearch アクションを使用すると、MQTT メッセージから Amazon Elasticsearch Service ドメインにデータを書き込むことができます。これにより、Kibana などのツールを使用して Elasticsearch にあるデータを問い合わせ、視覚化することができます。

More information (6)

AWS IoT アクションを伴う elasticsearch ルールを作成する場合は、次の情報を指定する必要があります。

endpoint

Amazon Elasticsearch Service ドメインのエンドポイント。

index

データの格納先とする Elasticsearch インデックス。

type

保存するドキュメントのタイプ。

id

各ドキュメントの一意の識別子。

注記

ルールに関連付けられているロールには、es:ESHttpPut アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、elasticsearch ルール内で AWS IoT アクションを定義する方法を示しています。

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

詳細については、「Amazon Elasticsearch Service 開発者ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して Elasticsearch の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon Elasticsearch Service 開発者ガイド』の「Amazon Elasticsearch Service の保存時のデータの暗号化」を参照してください。

Substitution Templates

elasticsearch アクションは、CLI の endpoint パラメータ内の置換テンプレート、および CLI とコンソールの type および index パラメータをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の elasticsearch アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "ESWithAllSubs" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/ElasticSearchSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'subsestopic'", "ruleDisabled": false, "actions": [ { "elasticsearch": { "index": "${topic()}", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "endpoint": "https:~/~/search-arunavtestdoman-vaina2nrodxolq5ojs3c2psj4q.us-east-1.es.amazonaws.com", "type": "${topic()}", "id": "SomeID" } } ], "ruleName": "ElasticSearchSubstitutionExample" } }

Firehose アクション

Firehose action

firehose アクションは、ルールをトリガーした MQTT メッセージから Kinesis Data Firehose ストリームにデータを送信します。

More information (7)

firehose アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

deliveryStreamName

メッセージデータの書き込み先として指定する Kinesis Data Firehose ストリーム。

roleArn

IAM へのアクセスを許可する Kinesis Data Firehose ロール。

separator

Kinesis Data Firehose ストリームに書き込まれるレコードを分割するために使用される文字区切り記号。有効値は、'\n' (改行)、'\t' (タブ)、'\r\n' (Windows 改行)、',' (コンマ) です。

注記

ルールに関連付けられているロールには、firehose:PutRecord アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、AWS IoT アクションを伴う firehose ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "firehose": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_firehose", "deliveryStreamName": "my_firehose_stream" } }] } }

詳細については、「Amazon Kinesis Data Firehose 開発者ガイド」を参照してください。Kinesis Data Firehose を使用して Amazon S3 バケットにデータを送信し、カスタマー管理の AWS KMS CMK を使用して Amazon S3 の保管中のデータを暗号化する場合、Kinesis Data Firehose は、バケットにアクセスでき、発信者に代わって CMK を使用する権限を持っている必要があります。詳細については、『Amazon Kinesis Data Firehose 開発者ガイド』の「Amazon S3 の送信先へのアクセス権を Kinesis Data Firehose に付与する」を参照してください。

Substitution Templates

firehose アクションは、CLI の deliveryStreamName パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の firehose アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "FirehoseSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/FirehoseSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() as topic FROM 'firehosesubstopic'", "ruleDisabled": false, "actions": [ { "firehose": { "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "deliveryStreamName": "${topic()}" } } ], "ruleName": "FirehoseSubstitutionExample" } }

HTTP アクション

HTTP action

http アクションは、ルールをトリガーした MQTT メッセージからウェブアプリケーションまたはサービスにデータを送信し、さらに処理します。コードを記述する必要はありません。データを送信するエンドポイントは、ルールエンジンがデータを使用する前に検証する必要があります。

More information (8)

http アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

url

HTTP POST によってメッセージが送信される HTTPS URL。URL で置換テンプレートを使用できます。

confirmationUrl

省略可能。指定した場合、AWS IoT は確認 URL を使用して、一致するトピックルールの送信先を作成します。トピックルールの送信先は、http アクションで使用する前に有効にする必要があります。詳細については、「 トピックルールの送信先の操作」を参照してください。置換テンプレートを使用する場合、http アクションを使用する前に手動でトピックルールの送信先を作成する必要があります。confirmationUrlurl のプレフィックスである必要があります。

url との関係および confirmationUrl は、次のように記述されます。

  • url がハードコード化され、confirmationUrl が指定されていない場合、url フィールドは暗黙的に confirmationUrl として扱われます。AWS IoT は、url のトピックルールの送信先を作成します。

  • urlconfirmationUrl がハードコード化されている場合は、urlconfirmationUrl で始まる必要があります。AWS IoT は confirmationUrl のトピックルールの送信先を作成します。

  • url に置換テンプレートが含まれている場合は、confirmationUrl を指定し、urlconfirmationUrl で始まる必要があります。confirmationUrl に置換テンプレートが含まれている場合、http アクションを使用する前に手動でトピックルールの送信先を作成する必要があります。confirmationUrl に置換テンプレートが含まれていない場合、AWS IoT は confirmationUrl のトピックルールの送信先を作成します。

ヘッダー

省略可能。HTTP リクエストに含める任意のヘッダー。

key

ヘッダーのキー。置換テンプレートはサポートされていません。

value

ヘッダーの値置換テンプレートがサポートされています。

auth

省略可能。url 引数で指定されたエンドポイント URL に接続するためにルールエンジンが使用する認証。現在、サポートされている認証タイプは署名バージョン 4 のみです。詳細については、「HTTP 認証」を参照してください。

次の JSON 例は、http アクションを伴う AWS IoT ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "select * from 'a/b'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [{ "http": { "url": "https://www.example.com/subpath", "confirmationUrl": "https://www.example.com", "headers": [{ "key": "static_header_key", "value": "static_header_value" }, { "key": "substitutable_header_key", "value": "${value_from_payload}" }] } }] } }

ペイロードが JSON 形式の場合、デフォルトのコンテンツタイプは application/json です。それ以外の場合は、application/octet-stream です。キー content-type(大文字と小文字を区別しない)でヘッダー内の正確なコンテンツタイプを指定することで、上書きできます。

HTTP action retry logic

AWS IoT ルールエンジンは、次のルールに従って http アクションを再試行します。

  • ルールエンジンは、1 回以上メッセージの送信を試みます。

  • ルールエンジンは、最大で 2 回再試行します。最大試行回数は 3 回です。

  • 次の場合、ルールエンジンは再試行を試行しません。

    • 前回の試行で 16384 バイトを超える応答が提供された場合。

    • ダウンストリームウェブサービスまたはアプリケーションが試行後に TCP 接続を閉じた場合。

    • リタイアを含むリクエストを完了するための合計時間が、リクエストタイムアウト制限を超えた場合。

    • リクエストが 429、500~599 以外の HTTP ステータスコードを返した場合。

注記

再試行には、標準データ転送コストが適用されます。

IoT Analytics アクション

IoT Analytics action

iotAnalytics アクションは、ルールをトリガーした MQTT メッセージから AWS IoT Analytics チャネルにデータを送信します。

More information (9)

iotAnalytics アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

channelName

データの書き込み先となる AWS IoT Analytics チャネルの名前。

roleArn

チャネルへのアクセスを許可するIAM AWS IoT Analytics ロール。

指定したロールにアタッチされるポリシーは次のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotanalytics:BatchPutMessage", "Resource": [ "arn:aws:iotanalytics:us-west-2:account-id:channel/mychannel" ] } ] }

また、信頼関係は次のようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", } ] }

次の JSON 例は、iotAnalytics アクションを伴う AWS IoT ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "iotAnalytics": { "channelName": "mychannel", "roleArn": "arn:aws:iam::123456789012:role/analyticsRole", } }] } }

詳細については、「AWS IoT Analytics ユーザーガイド」を参照してください。

また、AWS IoT Analytics コンソールには、チャネル、データストア、パイプラインをワンクリックで作成できる [クイックスタート] 機能もあります。AWS IoT Analytics コンソールを開いたら、このページを探します。

IoT Events アクション

IoT Events action

iotEvents アクションは、ルールをトリガーした MQTT メッセージから AWS IoT イベント 入力にデータを送信します。

More information (10)

iotEvents アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

inputName

AWS IoT イベント 入力の名前。

messageId

オプション。この値を指定すると、指定した messageId を持つ 1 つの入力 (メッセージ) だけが AWS IoT イベント ディテクターによって処理されます。

roleArn

AWS IoT イベント に通知を送信する AWS IoT アクセス許可を付与するロールの ARN。 ("Action":"iotevents:BatchPutMessage")。

以下に示しているのは、ロールにアタッチする必要がある信頼ポリシーの例です。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iotevents:BatchPutMessage", "Resource": [ * ] } }

次の JSON 例は、iotEvents アクションを伴う AWS IoT ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "expression", "ruleDisabled": false, "description": "An AWS IoT Events test rule", "awsIotSqlVersion": "2016-03-23", "actions": [{ "iotEvents": { "inputName": "MyIoTEventsInput", "messageId": "1234567890", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_events" }, }] } }

詳細については、『AWS IoT Events 開発者ガイド』を参照してください。

IoT SiteWise アクション

IoT SiteWise action

iotSiteWise アクションは、ルールをトリガーした MQTT メッセージから AWS IoT SiteWise のアセットプロパティにデータを送信します。

注記

このアクションで AWS IoT SiteWise にデータを送信する場合、データは BatchPutAssetPropertyValue アクションの要件を満たしている必要があります。詳細については、AWS IoT SiteWise API リファレンスの「BatchPutAssetPropertyValue」を参照してください。

AWS IoT のモノからデータを取り込む方法を示すチュートリアルに従うことができます。詳細については、AWS IoT SiteWise ユーザーガイドの「Ingesting Data to AWS IoT SiteWise from AWS IoT Things」を参照してください。

このルールのトラブルシューティングの詳細については、AWS IoT SiteWiseユーザーガイドの「Troubleshooting an AWS IoT SiteWise Rule Action」を参照してください。

More information (11)

iotSiteWise アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

putAssetPropertyValueEntries

アセットプロパティ値エントリのリストで、それぞれに次の情報が含まれています。

entryId

省略可能。このエントリの一意な識別子。entryId を定義して、障害発生時にエラーの原因となったメッセージをより正確に追跡できます。置換テンプレートを受け入れます。デフォルトは新しい UUID です。

propertyAlias

アセットプロパティに関連付けられたプロパティエイリアス。propertyAlias または assetIdpropertyId の両方のいずれかを指定する必要があります。置換テンプレートを受け入れます。プロパティのエイリアスの詳細については、AWS IoT SiteWise ユーザーガイドの「アセットプロパティへの産業データストリームのマッピング」を参照してください。

assetId

AWS IoT SiteWise アセットの ID。propertyAlias または assetIdpropertyId の両方のいずれかを指定する必要があります。置換テンプレートを受け入れます。

propertyId

アセットのプロパティの ID。propertyAlias または assetIdpropertyId の両方のいずれかを指定する必要があります。置換テンプレートを受け入れます。

propertyValues

次の形式でタイムスタンプ、品質、値 (TQV) を含み、挿入するプロパティ値のリスト。

timestamp

次の情報を含むタイムスタンプ構造体。

timeInSeconds

時間を秒単位で含む文字列 (Unix エポック時間)。置換テンプレートを受け入れます。メッセージペイロードにタイムスタンプがない場合は、Timestamp() を使用して、現在の時間をミリ秒単位で返すことができます。この時間を秒に変換するには、次の置換テンプレートを使用できます: ${floor(timestamp() / 1E3)}

offsetInNanos

省略可能。秒単位の時間からのナノ秒の時間オフセットを含む文字列。置換テンプレートを受け入れます。メッセージペイロードにタイムスタンプがない場合は、Timestamp() を使用して、現在の時間をミリ秒単位で返すことができます。その時点からのナノ秒のオフセットを計算するには、次の置換テンプレートを使用できます: ${(timestamp() % 1E3) * 1E6}

Unix エポック時間に関して、AWS IoT SiteWise は、過去は最大 15 分、将来は最大 5 分までのタイムスタンプを持つエントリのみを受け入れます。

quality

省略可能。値の品質を表す文字列。置換テンプレートを受け入れます。GOODBAD、または UNCERTAIN を指定する必要があります。

value

アセットプロパティのデータ型に応じて、次のいずれかの値フィールドを含む値構造体。

booleanValue

省略可能。値エントリのブール値を含む文字列。置換テンプレートを受け入れます。

doubleValue

省略可能。値エントリの double 値を含む文字列。置換テンプレートを受け入れます。

integerValue

省略可能。値エントリの整数値を含む文字列。置換テンプレートを受け入れます。

stringValue

省略可能。値エントリの文字列値。置換テンプレートを受け入れます。

roleArn

AWS IoT SiteWise にアセットプロパティ値を送信する AWS IoT アクセス許可を付与するロールの ARN ("Action": "iotsitewise:BatchPutAssetPropertyValue")。

以下に示しているのは、ロールにアタッチする必要がある信頼ポリシーの例です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*" } ] }

セキュリティを向上させるために、 Condition プロパティで AWS IoT SiteWise 資産階層パスを指定できます。次の例は、アセット階層パスを指定する信頼ポリシーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*", "Condition": { "StringLike": { "iotsitewise:assetHierarchyPath": [ "/root node asset ID", "/root node asset ID/*" ] } } } ] }

次の JSON 例は、基本的な iotSiteWise アクションを伴う AWS IoT ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "iotSiteWise": { "putAssetPropertyValueEntries": [ { "propertyAlias": "/some/property/alias", "propertyValues": [ { "timestamp": { "timeInSeconds": "${my.payload.timeInSeconds}" }, "value": { "integerValue": "${my.payload.value}" } } ] } ], "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise" }, }] } }

次の JSON 例は、iotSiteWise アクションを伴う AWS IoT ルールを作成する方法を示しています。この例では、トピックをプロパティエイリアスおよび timestamp() 関数として使用します。たとえば、/company/windfarm/3/turbine/7/rpm にデータをパブリッシュする場合、このアクションは、指定したトピックと同じプロパティエイリアスを持つアセットプロパティにデータを送信します。

{ "topicRulePayload": { "sql": "SELECT * FROM '/company/windfarm/+/turbine/+/+'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "iotSiteWise": { "putAssetPropertyValueEntries": [ { "propertyAlias": "${topic()}", "propertyValues": [ { "timestamp": { "timeInSeconds": "${floor(timestamp() / 1E3)}", "offsetInNanos": "${(timestamp() % 1E3) * 1E6}" }, "value": { "doubleValue": "${my.payload.value}" } } ] } ], "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise" }, }] } }

詳細については、『AWS IoT SiteWise ユーザーガイド』を参照してください。

Kinesis アクション

Kinesis action

kinesis アクションを使用すると、MQTT メッセージから Kinesis ストリームにデータを書き込むことができます。

More information (12)

AWS IoT アクションを伴う kinesis ルールを作成する場合は、次の情報を指定する必要があります。

stream

データの書き込み先として指定する Kinesis ストリーム。

partitionKey

どのシャードにデータを書き込むかを決定するために使用されるパーティションキー。パーティションキーは通常、式 (例: 「${topic()}」または「${timestamp()}」) で構成されます。

注記

ルールに関連付けるポリシーには、kinesis:PutRecord アクセス権限が必要です。

次の JSON 例は、kinesis ルール内で AWS IoT アクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "kinesis": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_kinesis", "streamName": "my_kinesis_stream", "partitionKey": "${topic()}" } }], } }

詳細については、「Amazon Kinesis Data Streams 開発者ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して Kinesis Data Streams の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon Kinesis Data Streams 開発者ガイド』の「ユーザー生成 KMS マスターキーを使用するためのアクセス許可」を参照してください。

Substitution Templates

kinesis アクションは、CLI の 2streamName パラメータ内の置換テンプレート、および CLI とコンソールの partitionKey パラメータをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の kinesis アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "KinesisSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/KinesisSubstitutionExample", "rule": { "description": "", "ruleName": "KinesisSubstitutionExample", "actions": [ { "kinesis": { "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest", "streamName": "${topic()}" "partitionKey": "${newuuid()}" } } ], "sql": "SELECT topic() as topic FROM 'kinesissubstopic'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false } }

Lambda アクション

Lambda action

lambda アクションは Lambda 関数を呼び出し、ルールをトリガーした MQTT メッセージを渡します。Lambda 関数は非同期的に実行されます。

More information (13)

Lambda 関数は非同期的に実行されます。

AWS IoT から Lambda 関数を呼び出すには、lambda:InvokeFunction アクセス権限を AWS IoT に付与するポリシーを設定する必要があります。Lambda ポリシーが存在するのと同じリージョンで定義された Lambda 関数のみを呼び出すことができます。Lambda 関数はリソースベースのポリシーを使用するため、Lambda 関数自体にポリシーをアタッチする必要があります。lambda:InvokeFunction アクセス権限を付与するポリシーをアタッチするには、次の CLI コマンドを使用します。

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-2:account-id:rule/rule_name --source-account "account-id" --statement-id "unique_id" --action "lambda:InvokeFunction"

以下は、add-permission コマンドの引数です。

--function-name

新しいアクセス権限を追加することでリソースポリシーを更新する Lambda 関数の名前。

--region

アカウントの AWS リージョン。

--principal

アクセス権限を取得するプリンシパル。iot.amazonaws.com 関数を呼び出すアクセス権限を AWS IoT に付与する場合は、Lambda を指定する必要があります。

--source-arn

ルールの ARN。ルールの ARN を取得するには、get-topic-rule という CLI コマンドを使用できます。

--source-account

ルールを定義している AWS アカウント。

--statement-id

一意のステートメント ID。

--action

このステートメントで許可する Lambda アクション。AWS IoT が Lambda 関数を呼び出せるようにするには、lambda:InvokeFunction を指定します。

注記

ソース ARN を指定せずに AWS IoT プリンシパルにアクセス許可を追加した場合、Lambda アクションを使用してルールを作成するすべての AWS アカウントはルールをトリガーして、AWS IoT から Lambda 関数を呼び出せます。

詳細については、「Lambda のアクセス権限モデル」を参照してください。

lambda アクションを伴うルールを作成する場合は、ルールがトリガーされたときに呼び出す Lambda 関数を指定する必要があります。

次の JSON 例は、Lambda 関数を呼び出すルールを示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "lambda": { "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction" } }] } }

Lambda 関数のバージョンまたはエイリアスを指定しない場合、関数の最新バージョンが実行されます。Lambda 関数の特定のバージョンを実行する場合は、バージョンまたはエイリアスを指定できます。バージョンまたはエイリアスを指定するには、Lambda 関数の ARN にバージョンまたはエイリアスを追加します。次に例を示します。

"arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias"

バージョニングとエイリアスの詳細については、「AWS Lambda バージョニングとエイリアス」を参照してください。AWS Lambda の詳細については、「AWS Lambda Developer Guide」を参照してください。

カスタマー管理の AWS KMS CMK を使用して AWS Lambda の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『AWS Lambda 開発者ガイド』の「保管時の暗号化」を参照してください。

Substitution Templates

lambda アクションは、CLI の functionArn パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の lambda アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "LambdaSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/LambdaSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'lamdbasubsexample'", "ruleDisabled": false, "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-east-1:418092313572:${topic()}" } } ], "ruleName": "LambdaSubstitutionExample" } }

Republish アクション

Republish action

republish アクションを使用すると、ルールをトリガーしたメッセージを別の MQTT トピックに再発行できます。

More information (14)

republish アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

topic

メッセージの再発行先として指定する MQTT トピック。予約トピックに再発行する場合、$ で始まるトピックでは代わりに $$ を使用します。たとえば、$$aws/things/MyThing/shadow/update のような Device Shadow トピックに再発行する場合は、トピックを $$aws/things/MyThing/shadow/update として指定します。

roleArn

MQTT トピックへの発行を許可する IAM ロール。

qos

省略可能。メッセージを再発行するときに使用する Quality of Service (QoS) レベル。有効な値は 0 または 1 です。デフォルト値は 0 です。

注記

ルールに関連付けられているロールには、iot:Publish アクセス権限を許可するポリシーが指定されていることを確認してください。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "republish": { "topic": "another/topic", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "qos": 1 } }] } }
Substitution Templates

republish アクションは、コンソールと CLI の両方で、topic パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の republish アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "RepublishSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/RepublishSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT *, topic() AS topic FROM 'my/iot/topic'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest" } } ], "ruleName": "RepublishSubstitutionExample" } }

S3 アクション

S3 action

s3 アクションでは、ルールをトリガーした MQTT メッセージから Amazon S3 バケットにデータが書き込まれます。

More information (15)

AWS IoT アクションを伴う s3 ルールを作成する場合は、次の情報を指定する必要があります (オプションの cannedacl を除く)。

bucket

データの書き込み先として指定する Amazon S3 バケット。

cannedacl

オプション。オブジェクトキーによって識別されるオブジェクトへのアクセスをコントロールする Amazon S3 既定 ACL。使用できる値などの詳細については、「S3 既定 ACL」を参照してください (許可値の一覧が記載されています)。

key

データの書き込み先として指定するファイルのパス。たとえば、この引数の値が「${topic()}/${timestamp()}」の場合、メッセージが送信されたトピックは「this/is/my/topic」です。現在のタイムスタンプが 1460685389 の場合、データは Amazon S3 の「this/is/my/topic」フォルダ内の「1460685389」というファイルに書き込まれます。

注記

静的キーを使用すると、ルールの呼び出しごとに、Amazon S3 にある 1 つのファイルが上書きされます。より一般的なユースケースでは、メッセージのタイムスタンプなど、一意のメッセージ識別子を使用します。これにより、メッセージを受け取るたびに新しいファイルが Amazon S3 に保存されます。

roleArn

IAM バケットへのアクセスを許可する Amazon S3 ロール。

注記

ルールに関連付けられているロールには、s3:PutObject アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、s3 ルール内で AWS IoT アクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "s3": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName": "my-bucket", "key": "${topic()}/${timestamp()}" "cannedacl": "public-read" } }] } }

詳細については、「Amazon Simple Storage Service 開発者ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して Amazon S3 の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「AWS 管理の CMK とカスタマー管理の CMK」を参照してください。

Substitution Templates

s3 アクションは、CLI の bucketName パラメータ内の置換テンプレート、およびコンソール内の key パラメータをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の S3 アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "S3WithAllSubs" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/S3SubstitutionTemplateExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() as topic FROM 's3substopic'", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::418092313572:role/service-role/S3TestRole", "bucketName": "s3substopic", "key": "${newuuid()}" } } ], "ruleName": "S3SubstitutionTemplateExample" } }

Salesforce アクション

Salesforce action

salesforce アクションは、ルールをトリガーした MQTT メッセージから Salesforce IoT 入力ストリームにデータを送信します。

More information (16)

salesforce アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

url

Salesforce IoT 入力ストリームによって公開される URL。この URL は、入力ストリームの作成時に Salesforce IoT プラットフォームから入手できます。詳細については、Salesforce IoT ドキュメントを参照してください。

トークン

指定した Salesforce IoT 入力ストリームへのアクセスを認証するために使用されるトークン。このトークンは、入力ストリームの作成時に Salesforce IoT プラットフォームから入手できます。詳細については、Salesforce IoT ドキュメントを参照してください。

注記

これらのパラメータは置換をサポートしていません。

次の JSON 例は、AWS IoT アクションを伴う salesforce ルールを作成する方法を示しています。

{ "topicRulePayload": { "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" } }] } }

詳細については、Salesforce IoT ドキュメントを参照してください。

SNS アクション

SNS action

sns アクションは、ルールをトリガーした MQTT メッセージからデータを SNS プッシュ通知として送信します。

More information (17)

sns アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

messageFormat

メッセージ形式。許容値は「JSON」と「RAW」です。 この属性のデフォルト値は「RAW」です。 SNS ではこの設定を使用して、ペイロードを解析して関連するプラットフォーム固有の部分をペイロードから抽出するかどうかを判断します。

roleArn

SNS へのアクセスを許可する IAM ロール。

targetArn

プッシュ通知の送信先として指定する SNS トピックまたは個々のデバイス。

注記

ルールに関連付けるポリシーには、sns:Publish アクセス権限が必要です。

次の JSON 例は、sns ルール内で AWS IoT アクションを定義する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "sns": { "targetArn": "arn:aws:sns:us-east-2:123456789012:my_sns_topic", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sns" } }] } }

詳細については、「Amazon Simple Notification Service 開発者ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して Amazon SNS の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon Simple Notification Service 開発者ガイド』の「キー管理」を参照してください。

Substitution Templates

sns アクションは、CLI の targetArn パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の sns アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "SNSSubstitutionExample" { "ruleArn":"arn:aws:iot:us-east-1:418092313572:rule/SNSSubstitutionExample", "rule":{ "awsIotSqlVersion":"2016-03-23", "sql":"SELECT topic() as topic FROM 'snssubstopic'", "ruleDisabled":false, "actions":[ { "sns":{ "targetArn":"arn:aws:sns:us-east-1:418092313572:${topic()}", "roleArn":"arn:aws:iam::418092313572:role/service-role/SNSTestRole", "messageFormat":"RAW" } } ], "ruleName":"SNSSubstitutionExample" } }

SQS アクション

SQS action

sqs アクションは、ルールをトリガーした MQTT メッセージから SQS キューにデータを送信します。

More information (18)

sqs アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

queueUrl

データの書き込み先として指定する SQS キューの URL。

useBase64

SQS キューへの書き込み前に MQTT メッセージデータを Base64 でエンコードするには、true に設定します。それ以外の場合は、false に設定します。

roleArn

SQS キューへのアクセスを許可する IAM ロール。

注記

ルールに関連付けられているロールには、sqs:SendMessage アクセス権限を許可するポリシーが指定されていることを確認してください。

次の JSON 例は、sqs アクションを伴う AWS IoT ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [{ "sqs": { "queueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/my_sqs_queue", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sqs", "useBase64": false } }] } }

SQS アクションは SQS FIFO キューをサポートしていません。ルールエンジンは完全に分散されたサービスであるため、SQS アクションがトリガーされたときのメッセージ順序の保証はありません。

詳細については、「Amazon Simple Queue Service 開発者ガイド」を参照してください。カスタマー管理の AWS KMS CMK を使用して Amazon SQS の保管時のデータを暗号化する場合、サービスには発信者の代わりに CMK を使用する権限が必要です。詳細については、『Amazon Simple Queue Service 開発者ガイド』の「キー管理」を参照してください。

Substitution Templates

sqs アクションは、CLI の queueUrl パラメータ内の置換テンプレートをサポートします。置換テンプレートの詳細については、「置換テンプレート」を参照してください。

次に、CLI の sqs アクションの置換テンプレートの例を示します。

aws iot get-topic-rule --rule-name "SQSSubstitutionExample" { "ruleArn": "arn:aws:iot:us-east-1:418092313572:rule/SQSSubstitutionExample", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT topic() AS topic FROM 'sqssubstopic'", "ruleDisabled": false, "actions": [ { "sqs": { "queueUrl": "https:~/~/sqs.us-east-1.amazonaws.com/418092313572/${topic()}", "roleArn": "arn:aws:iam::418092313572:role/service-role/ArunavTest" } } ], "ruleName": "SQSSubstitutionExample" } }

Step Functions アクション

Step Functions action

stepFunctions アクションは Step Functions ステートマシンの実行を開始します。

More information (19)

stepFunctions アクションを伴うルールを作成する場合は、次の情報を指定する必要があります。

executionNamePrefix

オプション。ステートマシンの実行に与えられる名前は、この接頭辞とそれに続く UUID で構成されています。Step Functions が指定されていない場合は、ステートマシンの実行ごとに一意の名前が作成されます。

stateMachineName

実行が開始される Step Functions ステートマシンの名前。

roleArn

ステートマシンの実行を開始するアクセス許可を AWS IoT に付与するロールの ARN ("Action":"states:StartExecution")。

以下に示しているのは、ロールにアタッチする必要がある信頼ポリシーの例です。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "states:StartExecution", "Resource": [ * ] } }

次の JSON 例は、AWS IoT アクションを伴う stepFunctions ルールを作成する方法を示しています。

{ "topicRulePayload": { "sql": "expression", "ruleDisabled": false, "description": "A step functions test rule", "awsIotSqlVersion": "2016-03-23", "actions": [{ "stepFunctions": { "executionNamePrefix": "myExecution", "stateMachineName": "myStateMachine", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_step_functions" } }] } }

詳細については、「AWS Step Functions 開発者ガイド」を参照してください。