Application Integration에 지원되는 커넥터를 참조하세요.
오류 처리 소개
Application Integration에서 통합을 테스트 및 게시할 때 또는 통합 실행 중에 오류가 발생할 수 있습니다. 이러한 오류는 다양한 클라이언트 측 및 서버 측 문제로 인해 발생할 수 있으며 일반적으로 다음과 같이 분류됩니다.
- 영구적인 오류: 인증 실패, 데이터 유효성 검사 오류와 같은 모든 클라이언트 측 오류는 영구적인 오류로 간주됩니다. 영구적인 오류가 발생하면 태스크가 영구적으로 실패합니다.
- 일시적인 오류: HTTP 503(서비스를 사용할 수 없음), HTTP 400(잘못된 요청)과 같은 모든 서버 측 오류가 일시적인 오류로 간주됩니다. 일시적인 오류가 발생하면 태스크가 일시적으로 실패합니다.
오류 메시지는 다음 위치에 표시됩니다.
- 실행 로그 페이지: 통합 실행 중 발생한 오류를 표시합니다. 통합을 실행할 때마다 개별 로그 항목이 지정됩니다. 실행 로그 페이지에 대한 자세한 내용은 실행 로그를 참조하세요.
- 통합 편집기 페이지: 통합을 게시할 때 발생한 오류를 표시합니다. 오류는 통합 편집기 페이지 하단에 표시됩니다. 통합 편집기 페이지에 대한 자세한 내용은 통합 편집기를 참조하세요.
발생할 수 있는 오류 코드 목록은 오류 코드를 참조하세요.
오류 처리 방법
Application Integration은 통합에서 발생한 오류를 발생, 포착, 재시도, 맞춤설정하기 위해 다음 오류 처리 방법을 지원합니다.
- 오류 처리 전략: 태스크의 오류 처리 전략은 일시적인 오류로 인해 태스크가 실패할 경우 수행할 작업을 지정합니다. 동기 실행 모드와 비동기 실행 모드 모두에 서로 다른 오류 처리 전략을 지정할 수 있습니다.
- 오류 포착자: 오류 포착자는 통합에서 식별된 트리거, 태스크 또는 에지 조건의 실패를 처리하는 맞춤설정된 방법을 정의합니다. 단일 통합에서 하나 이상의 오류 포착자를 정의하여 태스크 오류 또는 실행 실패를 처리할 수 있습니다. 각 오류 포착자는 오류 포착자 트리거라는 트리거를 사용하여 호출되어 오류를 처리하도록 맞춤설정으로 구성된 통합 태스크 집합을 실행할 수 있습니다.
통합 실행의 동기 모드와 비동기 모드 모두에 오류 처리 방법을 사용할 수 있습니다.
-
동기 실행: 동기 모드에서는 통합 실행 직후에 통합 실행 결과를 사용할 수 있습니다. 동기 모드는 통합 실행 직후 실행 결과를 원하는 상황에 유용합니다. 동기 모드에서 통합을 실행하는 트리거에는 다음이 포함됩니다.
- 통합 테스트 또는 게시
projects.locations.integrations.execute
API 호출- 동기 모드의 하위 통합에서 통합 호출
-
비동기 실행: 비동기 실행은 파이어 앤 포겟(fire and forget) 모델을 사용합니다. 비동기 모드는 통합이 실행하는 데 오랜 시간이 걸릴 수 있거나 통합 실행 직후 실행 결과가 필요하지 않은 상황에 유용합니다. 비동기 모드에서 통합을 실행하는 트리거에는 다음이 포함됩니다.
- 동기식이 아닌 모든 실행은 비동기 모드로 실행됩니다. 일반적인 비동기 모드 중 일부에는 다음이 포함되지만 이에 국한되지 않습니다.
- 정지 또는 승인 태스크에서 다시 시작된 실행은 초기 실행이 동기 모드였더라도 동기 모드로 실행됩니다.
권장사항
통합에서 오류 처리 전략과 오류 포착자를 모두 사용합니다. 통합은 오류가 발생할 때마다 오류 처리 섹션에 정의된 전략을 따릅니다. 구성된 오류 처리 전략을 모두 사용한 후 오류 포착자 로직이 트리거됩니다. 시스템 변수를 사용하여 오류 코드 및 오류 메시지의 값을 캡처하여 오류 포착기 흐름으로 전송합니다.
예시
주문을 생성하는 통합 흐름이 있다고 가정해 보겠습니다. MySQL용 Cloud SQL에서 새 주문이 생성됩니다. 이 흐름은 커넥터 태스크 (이 예에서는 주문 생성)를 사용하여 MySQL용 Cloud SQL에 연결합니다. 데이터베이스 서비스 중단 시 커넥터 작업이 데이터베이스에 새 주문을 삽입하는 동안 오류를 발생시킵니다. 통합에서는 오류 처리 전략과 오류 포착자를 모두 사용하는 것이 좋습니다.
오류 처리 전략을 추가하려면 통합 디자이너에서 커넥터 태스크를 클릭하여 태스크 구성 창을 엽니다. 다음 다이어그램은 주문 생성 커넥터 태스크에 구성된 오류 처리 전략을 보여줍니다.
오류 처리 전략을 추가하려면 통합 디자이너에서 REST 엔드포인트 호출 태스크를 클릭하여 태스크 구성 창을 엽니다. 다음 다이어그램은 REST 엔드포인트 호출 태스크에 구성된 오류 처리 전략을 보여줍니다.
오류 포착자를 추가하려면 통합 디자이너에서 REST 엔드포인트 호출 태스크를 클릭하여 태스크 구성 창을 엽니다. 오류 포착자 섹션에서 오류 포착자 세부정보를 추가합니다. 다음 다이어그램은 REST 엔드포인트 호출 태스크에 구성된 오류 포착자를 보여줍니다.
오류 코드
다음 표에서는 발생 가능한 오류 및 그러한 오류의 해당 원인을 설명합니다. Application Integration은 google.rpc.Code
에 정의된 표준 오류 코드를 사용합니다.
Application Integration 오류 및 여러 다른 오류 처리 전략에 대한 자세한 내용은 오류 및 오류 처리를 참조하세요.
표준 예외 유형 | 표준 코드 | HTTP 코드 | 설명 |
---|---|---|---|
FailedPreconditionException | FAILED_PRECONDITION |
400 | 현재 시스템 상태에서는 요청을 실행할 수 없습니다. |
BadRequestException | INVALID_ARGUMENT |
400 | 클라이언트가 잘못된 인수를 지정했습니다. 자세한 내용은 오류 메시지와 오류 세부정보에서 확인하세요. |
UnauthenticatedException | UNAUTHENTICATED |
401 | OAuth 토큰이 누락되었거나, 잘못되었거나, 만료되어 요청을 인증할 수 없습니다. |
ForbiddenException | PERMISSION_DENIED |
403 | 클라이언트에게 충분한 권한이 없습니다. 이 오류는 OAuth 토큰의 범위가 잘못되었거나, 클라이언트에게 필요한 권한이 없거나, API가 사용 설정되지 않은 경우에 발생할 수 있습니다. |
NotFoundException | NOT_FOUND |
404 | 지정된 리소스를 찾을 수 없습니다. |
AlreadyExistsException | ALREADY_EXISTS |
409 | 클라이언트가 만들려고 했던 리소스가 이미 존재합니다. |
InternalError | INTERNAL |
500 | 내부 서버 오류가 발생하였습니다. 전형적인 서버 버그입니다. 태스크 또는 트리거가 잘못 구성된 경우 발생할 수 있습니다. |
UnimplementedException | UNIMPLEMENTED |
501 | 서버에서 API 메서드를 구현하지 않았습니다. |
ServiceUnavailableException | UNAVAILABLE |
503 | 서비스를 사용할 수 없습니다. 전형적인 서버 다운입니다. |
AbortedException | ABORTED |
409 | 응답 크기가 너무 큽니다. |