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

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

AWS IoT がデバイスからメッセージを受信すると、ルールエンジンはそのメッセージがルールと一致するかどうかを確認します。一致する場合は、そのルールのクエリステートメントが評価され、ルールのアクションがトリガーされ、クエリステートメントの結果が渡されます。

アクションをトリガーするときに問題が発生した場合、ルールエンジンはエラーアクションをトリガーします (そのルールにエラーアクションが指定されている場合)。次の場合に、この問題が発生することがあります。

  • ルールに Amazon S3 バケットにアクセスする権限がない。

  • ユーザーエラーにより、DynamoDB のプロビジョニングされたスループットを超える。

エラーアクションメッセージ形式

ルールとメッセージごとに 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

CloudWatch でエラーログを参照する一意の ID。

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()}" } } }

外部関数を除き、エラーアクションの SQL ステートメントで任意の関数または置換を使用できます (例: get_thing_shadowaws_lambdamachinelearning_predict など)。

ルールとエラーアクションを指定する方法の詳細については、「AWS IoT ルールの作成」を参照してください。

CloudWatch を使用してルールの成功または失敗を監視する方法の詳細については、AWS IoT のメトリクスとディメンション を参照してください。