Apigee Edge에서 Apigee X로의 마이그레이션 방지 패턴

Apigee Edge 문서입니다.
Apigee X 문서로 이동
정보

현재 Apigee Edge 고객은 새로운 기능을 활용하거나 지역별로 다른 가용성을 이용하기 위해 설치를 Apigee X로 이전할 수 있습니다.

이 페이지에서는 Apigee X로 이전하기 전에 해결해야 하는 구성의 안티패턴과 이전하기 전에 알아야 하는 다른 동작 변경사항을 설명합니다.

Apigee Edge 역패턴의 더 광범위한 목록에는 어떤 경우에도 피해야 하는 사용 관행이 설명되어 있습니다. 이 페이지에서는 마이그레이션을 차단하는 권장되지 않는 특정 사용 관행을 설명합니다. Apigee X로 이전할 때 문제가 발생하지 않도록 지금 문제를 해결하세요.

API 제품이 없는 앱

요약 클라이언트 측 변경이 필요한가요? 해결 방법

API 제품이 없는 앱이 있습니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
API 제품에 연결되지 않은 앱과 사용자 인증 정보를 구성할 수 있습니다. 이 앱은 모든 API 제품에 액세스할 수 있습니다. 각 앱은 하나 이상의 API 제품에 액세스하도록 구성되어야 합니다. 모든 API 제품에 대한 액세스 권한을 암시적으로 제공할 방법은 없습니다. 모든 API 제품에 액세스할 수 있도록 앱을 구성할 수 있지만 명시적으로 해야 합니다.
아니요.

해결 방법: API 제품이 없는 앱

모든 앱 사용자 인증 정보를 하나 이상의 API 제품과 연결합니다. 이 방법에 관한 자세한 내용은 앱 등록 및 API 키 관리를 참고하세요.

가장 쉬운 방법은 각 앱에 모든 API 제품에 대한 액세스 권한을 할당하는 것입니다. 이는 Apigee Edge에서 가능한 것과 동일합니다. '최소 권한' 접근 방식을 사용하려면 각 앱 사용자 인증 정보에 액세스해야 하는 최소 API 제품 목록을 결정해야 합니다. 클라이언트 ID를 기반으로 Apigee Edge 애널리틱스 보고서를 사용하여 이를 분석할 수 있습니다.

만료 시간이 없는 캐시

요약 클라이언트 측 변경이 필요한가요? 해결 방법

캐시에는 만료 시간이 없습니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
캐시 리소스 설명자의 생성, 업데이트, 삭제를 지원합니다. 캐시 리소스 설명자의 생성, 업데이트, 삭제를 지원하지 않습니다.
아니요

해결 방법: 만료 시간이 없는 캐시

모든 캐시의 만료 시간을 설정합니다.

정해지지 않은 경로의 JSONPath 필터 표현식

요약 클라이언트 측 변경이 필요한가요? 해결 방법

확정되지 않은 경로의 경우 필터 표현식의 결과를 쿼리하는 것은 JSONPath 사양의 일부가 아닙니다. https://goessner.net/articles/JsonPath/를 참고하세요.

Apigee Edge와 Apigee X의 차이점:

이 예시 구조를 탐색할 때

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

$..books[?(@.name == 'A')][0] 표현식을 사용하면

Apigee Edge Apigee X
‘{"name": "A"}’을 출력합니다. []을 출력합니다.

$..books[?(@.name == 'A')][0].name 표현식을 사용하면

Apigee Edge Apigee X
"A"을 출력합니다. []을 출력합니다.

해결 방법: 정해지지 않은 경로의 JSONPath 필터 표현식

영향을 받는 쿼리를 찾아 바꿉니다.

없는 색인의 JSONPath 표현식

요약 클라이언트 측 변경이 필요한가요? 해결 방법

인덱스가 없는 JSONPath 표현식은 Apigee X와 Apigee Edge에서 다르게 동작합니다. 경로를 찾을 수 없는 경우 Apigee X는 PathNotFoundException 오류를 반환합니다.

Apigee Edge와 Apigee X의 차이점:

이 예시 구조를 탐색할 때

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

$.books[3] 표현식을 사용하면

Apigee Edge Apigee X
null을 출력합니다. PathNotFoundException 오류를 출력합니다.

해결 방법: 없는 색인의 JSONPath 표현식

영향을 받는 쿼리를 찾아 바꿉니다.

배열 색인이 배열 객체를 반환하지 않는 JSONPath 표현식

요약 클라이언트 측 변경이 필요한가요? 해결 방법

배열 색인 또는 슬라이스가 있는 JSONPath 표현식은 Apigee X에서 배열 객체를 반환합니다.

Apigee Edge와 Apigee X의 차이점:

이 예시 구조를 탐색할 때

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

$.books 표현식을 사용하면

Apigee Edge Apigee X
{“name”:”A”, “name”: “B”}을 출력합니다. [{“name”:”A”, “name”: “B”}]을 출력합니다.

$.books[-1] 표현식을 사용하면

Apigee Edge Apigee X
{“name”: “B”}을 출력합니다. [{“name”: “B”}]을 출력합니다.

$.books[-2:] 표현식을 사용하면

Apigee Edge Apigee X
{“name”:”A”, “name”: “B”}을 출력합니다. [{“name”:”A”, “name”: “B”}]을 출력합니다.

해결 방법: 배열 색인이 있는 JSONPath 표현식이 배열 객체를 반환하지 않음

업그레이드 후 다른 결과를 반환할 수 있는 표현식을 찾아서 바꿉니다.

키 저장소 이름 제한사항

요약 클라이언트 측 변경이 필요한가요? 해결 방법

Apigee X 키 저장소 이름에는 문자, 숫자, 하이픈만 포함할 수 있습니다. Edge 키 저장소 이름에는 이러한 제한사항이 적용되지 않습니다.

아니요

해결 방법: 키 저장소 이름 제한사항

키 저장소 이름을 확인하고 필요한 경우 지원되지 않는 문자를 삭제하도록 이름을 업데이트합니다.

API 프록시에 배포된 여러 기본 경로

요약 클라이언트 측 변경이 필요한가요? 해결 방법

API 프록시의 여러 버전이 환경에 배포되며 각 버전의 기본 경로는 다릅니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
각 버전의 기본 경로가 다를 수 있는 API 프록시의 여러 버전 배포를 지원합니다. 프록시의 기본 경로가 다르더라도 API 프록시의 여러 버전 배포를 지원하지 않습니다.
아니요

해결 방법: API 프록시에 여러 기본 경로가 배포됨

기본 경로와 관계없이 번들의 버전 하나만 환경에 배포되도록 모든 번들을 업데이트합니다.

규정을 준수하지 않는 HTTP 메시지

요약 클라이언트 측 변경이 필요한가요? 해결 방법

클라이언트 또는 API 프록시가 HTTP 표준을 준수하지 않는 메시지 (요청 또는 응답)를 전송합니다. 예를 들어 잘못된 헤더 이름, 일부 제한된 헤더의 중복 등이 있습니다.

API 실행에 다음 오류 중 하나 이상이 있는 경우 Apigee X로 이전할 수 없습니다.

오류 세부정보
INVALID_CHARACTERS_IN_HEADER 지정된 헤더에 하나 이상의 잘못된 문자가 있습니다. 올바른 헤더 이름은 영문자, 숫자, 하이픈으로 구성됩니다.
MISSING_COLON 헤더 이름과 헤더 값 쌍에 : (콜론)이 누락되었습니다.
MULTIPLE_CONTENT_LENGTH Content-Length 헤더에 여러 개의 값이 제공되었습니다.
CONTENT_LENGTH_NOT_INTEGER Content-Length 헤더 값이 정수가 아닙니다.
INVALID_UPGRADE Upgrade 헤더는 WebSocket 연결을 사용 설정하는 데만 사용해야 하지만 사용되지 않습니다.
URL_HEADER_SIZE_TOO_LONG 요청 URL과 헤더의 총 크기가 허용되는 최대 크기인 15KB를 초과합니다.
BODY_NOT_ALLOWED 'GET', 'DELETE', 'TRACE', 'OPTIONS', 'HEAD' 메서드에서는 메시지 본문이 허용되지 않습니다.
UNSUPPORTED_HTTP_VERSION 요청에 1.1이 아닌 HTTP 버전이 사용되고 있으며 지원되지 않습니다.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT 'POST' 또는 'PUT' 메서드에 Content-Length 헤더 필드 값 0 ('0')이 설정되었습니다.
UNSUPPORTED_RESPONSE_PREFIX 지원되지 않는 'X-Apigee-' 헤더 접두사가 응답 헤더에 있습니다.
예, 가능합니다.

해결 방법: 규정을 준수하지 않는 HTTP 메시지

Apigee X로 이전하기 전에 HTTP 프로토콜의 오류를 수정해야 합니다. 클라이언트 애플리케이션에서 오류가 발생한 경우 클라이언트 앱 개발자에게 문제를 수정해 달라고 요청해야 합니다.

OAuth 2.0 토큰 만료 시간이 잘못됨

요약 클라이언트 측 변경이 필요한가요? 해결 방법

OAuth 2.0 토큰 만료 제한이 지정된 범위를 벗어납니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
현재 OAuth 2.0 토큰 만료 시간에 대한 제약조건은 적용되지 않지만 향후 적용될 예정입니다. 한도의 OAuth 섹션 페이지에 있는 가이드라인을 참고하세요. OAuth 2.0의 액세스 토큰 및 갱신 토큰 만료 시간을 설정해야 합니다. 지원되는 범위는 다음과 같습니다.
  • 180초 <= OAuth 2.0 액세스 토큰 만료 시간 <= 30일
  • 1일 <= OAuth 2.0 갱신 토큰 만료 시간 <= 2년
아니요

해결 방법: OAuth 2.0 토큰 만료 시간이 잘못됨

OAuthV2 정책을 사용하고 <ExpiresIn><RefreshTokenExpiresIn>에서 만료 시간을 지정합니다.

제품 한도 초과

요약 클라이언트 측 변경이 필요한가요? 해결 방법

Apigee Edge 구성이 정의된 제품 한도를 준수하지 않습니다. 문서화되었지만 Apigee Edge에서는 적용되지 않는 일부 제품 한도는 Apigee X에서는 적용됩니다.

아니요

해결 방법: 제품 한도 초과

Apigee X로 이전하기 전에 제품 한도를 초과하는 사용량을 수정합니다.

엔드포인트 및 경로 대상 연결 지정자가 모두 있는 ServiceCallout 정책

요약 클라이언트 측 변경이 필요한가요? 해결 방법

ServiceCallout 정책에서 <LocalTargetConnection> 요소는 <APIProxy><ProxyEndpoint> 요소 또는 <Path> 요소 중 하나를 포함해야 하며 둘 다 포함해서는 안 됩니다. 자세한 내용은 <LocalTargetConnection> 요소를 참고하세요.

Apigee Edge는 이 요구사항을 문서화하지만 적용하지는 않습니다. Apigee X는 두 구성이 모두 포함된 <LocalTargetConnection>를 발견하면 처리를 중지합니다.

아니요

해결 방법: 엔드포인트 및 경로 대상 연결 지정자가 모두 있는 ServiceCallout 정책

ServiceCallout 정책 구성을 확인하고 정책을 준수하지 않는 <LocalTargetConnection> 구성을 모두 삭제합니다.

대상 서버 이름 제한사항

요약 클라이언트 측 변경이 필요한가요? 해결 방법

Apigee X 타겟 서버 이름에는 문자, 숫자, 하이픈, 마침표만 포함할 수 있습니다. 에지 대상 서버 이름에는 이러한 제한사항이 적용되지 않습니다.

아니요

해결 방법: 대상 서버 이름 제한

대상 서버 이름을 확인하고 필요한 경우 지원되지 않는 문자를 삭제하도록 이름을 업데이트합니다.

가상 호스트의 체험판 인증서

요약 클라이언트 측 변경이 필요한가요? 해결 방법

하나 이상의 가상 호스트가 Apigee에서 제공한 '무료 체험판' 인증서를 사용합니다. 이렇게 하면 가상 호스트가 ORG-ENV.apigee.net와 같은 도메인의 요청에 응답합니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
ORG-ENV.apigee.net 형식의 도메인 이름을 지원하도록 '기본' vhost를 자동으로 구성합니다. 이러한 도메인에서 TLS를 허용하는 '무료 체험판 인증서'라는 와일드 카드 인증서가 있습니다. ORG-ENV.apigee.net 형식의 기존 Apigee 도메인은 Apigee X에서 사용할 수 없습니다. 자체 도메인 이름을 구성하고 인증서를 적절하게 프로비저닝해야 합니다.

해결 방법: 가상 호스트의 체험판 인증서

자체 도메인을 구성하고 인증서를 적절하게 프로비저닝해야 합니다.

ORG-ENV.apigee.net 형식의 기존 도메인 이름에 종속되는 모든 클라이언트 애플리케이션은 새 도메인을 호출하도록 수정해야 합니다.

해결되지 않은 DNS

요약 클라이언트 측 변경이 필요한가요? 해결 방법

대상 엔드포인트에 확인되지 않은 도메인 이름이 있습니다.

Apigee Edge와 Apigee X의 차이점:

Apigee Edge Apigee X
DNS 확인에 실패하면 Apigee는 .apigee.com를 도메인 이름에 추가하고 DNS가 4xx 응답 코드로 성공적으로 확인됩니다. DNS 확인에 실패하면 Apigee는 요청을 실행하지 않고 5xx 응답 코드를 반환합니다.
아니요

해결 방법: DNS가 확인되지 않음

유효한 도메인 이름으로 대상 엔드포인트를 업데이트합니다.