エラー処理 (エラーアクション) - AWS IoT Core

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

エラー処理 (エラーアクション)

がデバイスからメッセージ 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 メトリクスとディメンション