翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
エラー処理 (エラーアクション)
がデバイスからメッセージ AWS IoT を受信すると、ルールエンジンは、メッセージがルールと一致するかどうかを確認します。一致する場合は、そのルールのクエリステートメントが評価され、ルールのアクションがアクティブ化され、クエリステートメントの結果が渡されます。
アクションをアクティブ化するときに問題が発生した場合、ルールエンジンはエラーアクションを呼び出します (ルールに指定されている場合)。次の場合に、この問題が発生することがあります。
-
ルールに Amazon S3 バケットにアクセスする権限がない。
-
ユーザーエラーにより、DynamoDB のプロビジョニングされたスループットを超える。
注記
このトピックで説明するエラー処理は、ルールアクションに関するものです。外部関数などのSQL問題をデバッグするには、 AWS IoT ログ記録を設定できます。詳細については、「AWS IoT ログ記録の設定」を参照してください。
エラーアクションメッセージ形式
ルールとメッセージごとに 1 つのメッセージが生成されます。たとえば、同じルール内の 2 つのルールアクションが失敗した場合、エラーアクションは両方のエラーを含む 1 つのメッセージを受け取ります。
エラーアクションメッセージは次の例のようになります。
{ "ruleName": "TestAction", "topic": "testme/action", "cloudwatchTraceId": "7e146a2c-95b5-6caf-98b9-50e3969734c7", "clientId": "iotconsole-1511213971966-0", "base64OriginalPayload": "ewogICJtZXNzYWdlIjogIkhlbGxvIHZyb20gQVdTIElvVCBjb25zb2xlIgp9", "failures": [ { "failedAction": "S3Action", "failedResource": "us-east-1-s3-verify-user", "errorMessage": "Failed to put S3 object. The error received was The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: 9DF5416B9B47B9AF; S3 Extended Request ID: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=). Message arrived on: error/action, Action: s3, Bucket: us-east-1-s3-verify-user, Key: \"aaa\". Value of x-amz-id-2: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=" } ] }
- ruleName
-
エラーアクションをトリガーしたルールの名前。
- トピック
-
元のメッセージが受信されたトピック。
- cloudwatchTraceId
-
のエラーログを参照する一意の ID CloudWatch。
- clientId
-
メッセージの発行元のクライアント ID。
- base64OriginalPayload
-
Base64 でエンコードされた元のメッセージペイロード。
- エラー
-
- failedAction
-
完了に失敗したアクションの名前 (たとえば「S3Action」)。
- failedResource
-
リソースの名前 (たとえば S3 バケットの名前)。
- errorMessage
-
エラーの記述と説明。
エラーアクションの例
次に、エラーアクションが追加されたルールの例を示します。次のルールには、メッセージデータを DynamoDB テーブルに書き込むアクションと、Amazon S3 バケットにデータを書き込むエラーアクションがあります。
{ "sql" : "SELECT * FROM ..." "actions" : [{ "dynamoDB" : { "table" : "PoorlyConfiguredTable", "hashKeyField" : "AConstantString", "hashKeyValue" : "AHashKey"}} ], "errorAction" : { "s3" : { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName" : "message-processing-errors", "key" : "${replace(topic(), '/', '-') + '-' + timestamp() + '-' + newuuid()}" } } }
、aws_lambda()
、、get_dynamodb()
、、 などの外部関数を含むエラーアクションのSQLステートメントでget_thing_shadow()
get_secret()
machinelearning_predict()
、任意の関数または置換テンプレートを使用できますdecode()
。エラーアクションで外部関数を呼び出す必要がある場合、エラーアクションを呼び出すと、外部関数に追加の請求が発生する可能性があります。
次の外部関数はaws_lambda
、ルールアクションの 、get_dynamodb()
、および と同等の料金が請求されますget_thing_shadow()
。また、Protobuf メッセージを にデコードJSONしている場合にのみ、decode()
関数に対して課金されます。詳細については、 AWS IoT Core の料金ページ
ルールとエラーアクションの指定方法の詳細については、AWS IoT 「ルールの作成」を参照してください。
CloudWatch を使用してルールの成功または失敗をモニタリングする方法の詳細については、「」を参照してくださいAWS IoT メトリクスとディメンション。