기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
오류 처리(오류 작업)
디바이스로부터 메시지를 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
-
오류를 참조하는 고유 ID가 로그인합니다. CloudWatch
- clientId
-
메시지 게시자의 클라이언트 ID입니다.
- 베이스64 OriginalPayload
-
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()}" } } }
오류 액션의 SQL 문에는 외부 함수 aws_lambda(),, get_dynamodb()
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 측정치 및 측정기준.