기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
오류 처리(오류 작업)
가 디바이스에서 메시지를 AWS IoT 수신하면 규칙 엔진은 메시지가 규칙과 일치하는지 확인합니다. 일치할 경우에는 규칙의 쿼리 문을 평가하고, 규칙의 작업을 활성화한 다음 쿼리 문의 결과를 전달합니다.
작업 활성화 시 문제가 발생하면 해당 규칙에 지정되어 있는 경우에 한해 규칙 엔진이 오류 작업을 활성화합니다. 다음과 같은 경우가 이에 해당합니다.
-
Amazon S3 버킷에 액세스할 수 있는 권한이 규칙에 없는 경우.
-
사용자 실수로 DynamoDB 프로비저닝 처리량을 초과하는 경우.
참고
이 주제에서 다루는 오류 처리는 규칙 작업을 위한 것입니다. 외부 함수를 포함한 SQL 문제를 디버깅하려면 AWS IoT 로깅을 설정할 수 있습니다. 자세한 내용은 AWS IoT 로깅 구성 단원을 참조하십시오.
오류 작업 메시지 형식
규칙마다 생성되는 메시지는 1개입니다. 예를 들어 동일한 규칙에서 2개의 규칙 작업이 오류로 중단되더라도 오류 작업은 오류 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.
- clientId
-
메시지 게시자의 클라이언트 ID입니다.
- 기본64OriginalPayload
-
Base64로 인코딩된 최초의 메시지 페이로드입니다.
- failures
-
- 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()
, get_thing_shadow()
get_secret()
machinelearning_predict()
를 포함하여 오류 작업의 SQL 문에서 함수 또는 대체 템플릿을 사용할 수 있습니다decode()
. 오류 작업에서 외부 함수를 호출해야 하는 경우 오류 작업을 호출하면 외부 함수에 대한 추가 요금이 부과될 수 있습니다.
다음 외부 함수는 규칙 작업과 동등한 요금이 청구됩니다. aws_lambda
, get_dynamodb()
및 get_thing_shadow()
. 또한 Protobuf 메시지를 로 디코딩할 JSON때만 decode()
함수에 대한 요금이 청구됩니다. 자세한 내용은 AWS IoT Core 요금 페이지를
규칙 및 오류 작업을 지정하는 방법에 대한 자세한 내용은 AWS IoT 규칙 생성을 참조하세요.
CloudWatch 를 사용하여 규칙의 성공 또는 실패를 모니터링하는 방법에 대한 자세한 내용은 섹션을 참조하세요AWS IoT 지표 및 차원.