19.03.01 - 퍼블릭 클라우드용 Apigee Edge 출시 노트

Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요.
info

2019년 12월 3일 화요일에 퍼블릭 클라우드용 Apigee Edge의 이 버전 업데이트가 출시되었습니다. (원래 출시일은 2019년 4월 18일 목요일이었습니다.)

새로운 기능 및 업데이트

다음은 이번 출시의 새로운 기능과 업데이트입니다.

문제 ID 구성요소 이름 설명
Apigee는 2019년 10월 1일부터 다음 업데이트를 출시하기 시작했습니다.
110995050 API 런타임

부하 분산 - 실패한 서버를 삭제하는 기능이 강화됨

API 프록시의 부하 분산기를 구성할 때 부하 분산 순환에서 서버가 삭제되기 전에 발생하는 응답 실패 횟수를 결정할 수 있습니다. 응답이 실패하면 Apigee가 대상 서버에서 응답을 수신하지 않습니다. 이러한 경우 실패 카운터가 1회씩 증가합니다. Apigee에서 대상의 응답을 수신하면 응답이 HTTP 오류 (예: 500)이더라도 대상 서버의 응답으로 집계되고 실패 카운터는 재설정됩니다. 잘못된 HTTP 응답 (예: 500)이 발생하는 경우 장애 카운터를 증분하여 가능한 한 빨리 비정상 서버가 부하 분산 로테이션에서 제외될 수 있도록 부하 분산기 구성에 <ResponseCode> 하위 요소와 함께 새로운 <ServerUnhealthyResponse> 요소를 추가할 수 있습니다. 또한 Edge는 이러한 코드가 포함된 응답을 실패로 카운트합니다.

<HTTPTargetConnection>
  <LoadBalancer>
    <Algorithm>RoundRobin</Algorithm>
    <Server name="target1" />
    <Server name="target2" />
    <ServerUnhealthyResponse>
        <ResponseCode>500</ResponseCode>
        <ResponseCode>502</ResponseCode>
        <ResponseCode>503</ResponseCode>
    </ServerUnhealthyResponse>
    <MaxFailures>5</MaxFailures>
  </LoadBalancer>
</HTTPTargetConnection>
  
  
130416715 보안

AccessControl 정책 개선사항

AccessControl 정책은 API 프록시를 호출할 수 있는 IP 주소를 결정합니다. 이 정책의 새로운 요소를 통해 API 개발자는 평가할 IP 주소를 더 효과적으로 식별할 수 있습니다.

<IgnoreTrueClientIPHeader>: 선택사항 (기본값은 false). 이 요소를 true로 설정하면 정책이 True-Client-IP 헤더를 무시하고 X-Forwarded-For 헤더에서 IP 주소를 평가하고, 사용자가 구성한 X-Forwarded-For 평가 동작을 따릅니다.

<AccessControl async="false" continueOnError="false"
    enabled="true" name="Access-Control-1">
    <DisplayName>Access Control-1</DisplayName>
    <IgnoreTrueClientIPHeader>true</IgnoreTrueClientIPHeader>
    ...
</AccessControl>
Apigee는 2019년 4월 18일에 다음과 같은 업데이트를 출시했습니다.
117558815,
119856499,
110548137,
79526748,
72989449,
70712859,
69049041
API 런타임 JWS 및 JWT
JWS 지원을 위한 새로운 정책이 추가되었으며 기존 JWT 정책이 개선되었습니다.

자세한 내용은 이 커뮤니티 게시물을 참고하세요.

122610025 API 런타임 RaiseFault가 AssignMessage와 같이 오류 이유와 임의의 변수도 설정하도록 허용

FaultRules 처리를 더 깔끔하고 강력하게 할 수 있도록 RaiseFault 정책에 두 가지 새로운 요소가 제공됩니다.

  • ShortFaultReason는 불리언으로, true로 설정하면 정책 이름이 fault.reason 변수에 배치됩니다.
  • FaultResponse에서 사용할 수 있는 AssignVariable를 사용하면 API 프록시 흐름의 다른 정책에서 사용할 변수에 오류 응답을 할당할 수 있습니다.
121149811 호스팅된 대상 호스팅된 대상에 적용되는 제한사항

이제 호스팅된 대상에 한도가 적용됩니다. 한도에 관한 자세한 내용은 한도를 참고하세요.

117659213 API 런타임 AccessControl 정책에서 IP 범위 매개변수화

이제 메시지 템플릿 변수를 사용하여 AccessControl 정책에서 IP 주소와 CIDR 마스크를 설정할 수 있습니다. 예를 들어 키 값 맵 (KVM)에 IP 주소와 마스크를 저장하려면 API 프록시 흐름에서 설정한 변수에서 해당 값을 검색하면 됩니다. 이렇게 하면 정책 구성을 변경하지 않고도 런타임에 IP 값을 더 쉽게 변경할 수 있습니다.

예를 들어 다음을 사용하지 않습니다.

<MatchRule action="DENY">
    <SourceAddress mask="24">198.51.100.1</SourceAddress>
</MatchRule>
     

값이 KVM에 저장되어 있고 KeyValueMapOperations 정책을 사용하여 값을 검색하고 여기에 표시된 변수에 할당한다고 가정하면 다음과 같이 정책을 구성할 수 있습니다.

<MatchRule action="DENY">
    <SourceAddress mask="{kvm.mask.ref}">{kvm.ip.ref}</SourceAddress>
</MatchRule>
     
113599885 API 모니터링 API 모니터링 역할

API 모니터링은 API 모니터링 액세스에 설명된 API 모니터링 관리자와 API 모니터링 사용자라는 두 가지 역할을 제공합니다. 이러한 기능은 2018년 12월에 제공되었습니다.

132256772 API 런타임 요청에 X-Apigee.Message-Timeout 헤더가 추가됨

이제 Edge는 각 요청에 X-Apigee.Message-Timeout 헤더를 추가합니다. 이 헤더는 Edge에서 내부적으로 사용됩니다. API 프록시에서 X-Apigee.* 헤더의 값을 사용하지 않습니다. 이러한 헤더는 고객용이 아니며 Apigee에서 언제든지 삭제 또는 변경될 수 있습니다.

78575018 프라이빗 클라우드 / OPDK 게이트웨이 포드가 여러 개 있는 경우 관리 서버를 건너뛰어 게이트웨이 데이터 스토어 등록 건너뛰기

수정된 버그

다음은 이번 출시 버전에서 수정된 버그입니다. 이 목록은 주로 지원 티켓이 수정되었는지 확인하는 사용자를 위한 것입니다. 모든 사용자에게 자세한 정보를 제공하기 위한 목적은 아닙니다.

문제 ID 구성요소 이름 설명
Apigee는 2019년 12월 3일부터 다음 수정사항을 출시하기 시작했습니다.
보안 수정사항
Apigee는 2019년 10월 29일부터 다음 수정사항을 출시하기 시작했습니다.
139381794 관리 서버

API 호출이 실패하지 않도록 키 저장소 삭제 오류 처리

Apigee는 2019년 10월 1일부터 다음과 같은 수정사항을 출시하기 시작했습니다.
140761319 API 런타임

x-apigee.edge.execution.sense.action이 항상 null로 설정됨

139091614 API 런타임

ResponseCache 정책에서 NIOThread가 스레드 풀에서 거부되지 않고 실행됨

131331305 핵심 서비스

Apigee 라우터의 여러 로그 내보내기로 인해 CPU 사용량이 높음

136690640 API 런타임

특정 조직에서 간헐적으로 404 발생

140948100 API 런타임

배포된 공유 흐름이 일부 메시지 프로세서에서 실행되지 않음

Apigee는 2019년 9월 13일에 다음 수정사항을 출시했습니다.
132654321 관리 서버 감사 로그에 데이터가 표시되지 않음
131246911 관리 서버 포털의 개발자 이메일의 경우 *.games, *.asia와 같은 최신 도메인 지원 사용 설정
Apigee는 2019년 4월 18일에 다음 수정사항을 출시했습니다.
123844598 관리 서버 삭제된 앱 키는 24시간이 지나면 다시 가져올 수 없음
123588156 API 런타임 응답에서 Content-Length 헤더를 삭제하면 304 오류가 발생함
122732400 API 런타임 api.timeout을 설정하면 io.timeout.millis가 재정의됨
122545281 API 런타임 JSON의 DebugSession 데이터 마스크는 jsonPayload가 배열인 경우를 고려해야 함
122355807 관리 서버 역할이 여러 개인 사용자의 권한 동작이 올바르지 않음
121393556 API 런타임 x_apigee_fault_code가 'org/codehaus/jackson/map/ObjectMapper'로 설정됨
120998548 Edge UI 오류 메시지의 오타: 인증서가 유효하지 않거나 신뢰할 수 없음
120990929 API 런타임 Nginx/Apigee-Router의 HTTP-413 응답에 서버 유형이 표시됨
120799489 API 런타임 비동기 JavaScript 콜백 httpComplete()와 함께 httpClient를 사용하면 debugsession (추적) 출력이 음소거됨
120794339 API 런타임 조직의 드리프트된 MP
120277011 관리 서버 입력 유효성 검사 필요: 대상 서버 호스트 이름에 **
119976417 API 모니터링 API 모니터링에 높은 프록시 응답 시간이 표시되지만 분석에는 높은 타겟 응답 시간이 표시됨
119947481 API 런타임 예외 시나리오에서 마스크 처리할 페이로드가 일반 텍스트로 로깅됨
119877164 프라이빗 클라우드 / OPDK 라우터에서 오류가 발생하고 TLS가 사용 설정된 메시지 프로세서가 오프라인 상태가 됨

이 수정사항은 다음 Edge for Private Cloud 버전에 포함될 예정입니다.

119816218 API 런타임 0 또는 음수로 해석되는 경우 응답 캐시가 만료 헤더를 무시함
119770242 API 런타임 라우터와 MP 간 통신이 실패하여 완전한 다운타임이 발생함: PostClientFlow의 오류로 인해 무한 루프가 발생함
119443145 관리 서버 ProxyEndpoint의 이름을 바꾸고 재배포하면 API 프록시가 404를 반환함
119260281 API 런타임 '문자열3000.0으로 파싱할 수 없음' 로그 오류
118743407 관리 서버 Apigee 프록시 배포 기간
118447966 API 런타임 MP 버전 180608_07의 JavaScript 콜아웃 오류
117549719 API 런타임 요청 URI와 프록시 기본 경로 간 불일치
117219520 API 런타임 MessageLogging: Syslog 로거가 잘못된 날짜 형식을 기본값으로 사용하고 밀리초를 잘못 표시함
117116435 API 런타임 JavaScript 파일에서 간헐적으로 오류 발생
117091520 API 런타임 메시지 프로세서 버전 18.06.08 이후 JavaCallout이 실패함
116165318 API 런타임 동일한 번들을 동시에 배포하면 RepositoryException이 발생함
116055025 Configstore 서비스 부팅 후 메시지 프로세서에 가상 호스트 및 애플리케이션이 누락됨
115614498 API 런타임 OPDK에서 ILB 지원 필요

이 수정사항은 다음 Edge for Private Cloud 버전에 포함될 예정입니다.

113972537 API 런타임 여러 P1 - Trireme 프록시의 Node.js 코드에서 NullPointerException 발생 - 500 내부 서버 오류
113904969 Apigee 지원 데모 조직에서 API 프록시 삭제 문제
113554802 API 런타임 NullPointerException으로 인해 SAML 어설션 유효성 검사에 실패함
113315737 관리 서버 Zookeeper에 배포 기록이 누락되어 프록시 배포가 실패함
112767195 API 런타임 KVM 정책에 액세스하는 동안 간헐적인 DataStore 오류
112162179 API 런타임 문자열화하지 않고 JavaScript 객체를 캐싱하면 교착 상태가 발생할 수 있음
111860576 API 런타임 할당량 정책에 오류가 누락됨
111671525 호스팅된 대상 호스팅된 타겟의 비성공 응답 코드가 프록시에서 오류 흐름을 트리거함
111523933 확장 프로그램(커넥터) ExtensionCallout 정책 캐싱 문제
111420263 API 런타임 MessageLogging의 ConcurrentModification 예외
110843526 관리 서버 흐름 후크를 생성/업데이트하는 관리 API는 공유 흐름을 검증해야 함
110805739 API 런타임 Reuserefreshtoken이 true이고 갱신 토큰 만료가 명시적으로 설정되지 않은 경우 CPS 흐름에서 TTL이 -1로 설정되지 않음
110429629 API 런타임 BasicAuthentication 정책이 DebugSession에 request.headers.Authorization 변수를 내보냄
110425503 API 런타임 Nginx 새로고침으로 인해 MP 가용성 문제가 발생함
110311540 API 런타임 MP 종료 시 NPE
110161455 API 런타임 AccessEntity는 CPS 조직의 모든 앱을 가져오는 대신 앱 이름으로 가져오기 메서드를 사용해야 함
90695522 API 런타임 context.proxyRequest.asForm generates java.lang.ArrayIndexOutOfBoundsException: 1
79734096 관리 서버 프록시의 감사 로그가 더 이상 프록시에서 필터링되지 않음
78105568 관리 서버 배포된 공유 흐름을 업데이트한 후 /org/{org}/sharedflows/{sharedflow}/deployments 관리 API 호출에 공유 흐름 배포가 표시되지 않음
77528868 Trireme Trireme 회귀: 스크립트 server.js가 상태 코드 -1로 종료됨: 속성 0을 찾을 수 없음
73766568 API 런타임 170213_02에서 171117_01로 업그레이드하면 Trireme/Node 타겟이 있는 프록시의 지연 시간이 크게 증가함
72710481 API 런타임 CacheServiceImpl/CacheMemoryLimiter NullPointerException
68861063 API 런타임 라우터 종료 중 NPE 처리
68833699 API 런타임 API 분류 트리에서 API 프록시가 삭제되지 않는 경우에 관한 정보
67377575 호스팅된 대상 Node.js 프록시에서 애널리틱스 기록과 고객에게 전송되는 항목 간 불일치
112481174 호스팅된 대상 Turbo 오류로 인해 프록시 배포 취소가 실패하지 않도록 함
117171470 호스팅된 대상 잘못된 app.yaml 오류 메시지 수정하기
67169139 API 런타임 MessageLogging 정책 syslog 타임스탬프 형식이 올바르지 않음
67165418 API 런타임 라이선스된 수보다 적게 사용해도 더 많은 메시지 프로세서가 사용된다는 라이선스 오류

이 수정사항은 다음 Edge for Private Cloud 버전에 포함될 예정입니다.

67165195 API 런타임 ValidateSAMLAssertion이 서명된 응답에 삽입된 어설션의 서명을 확인하지 않음
66214414 API 런타임 공유 흐름에서 참조할 때 currentstep.flowstate 변수는 항상 'SHARED_FLOW'를 반환합니다.
65731656 API 런타임 동일한 요청에 대해 위협 보호 API가 간헐적으로 실패함
133197060 API 런타임 MP에서 타겟으로 57 게이트웨이 시간 초과가 발생함
110535186 API 런타임 응답 요소가 없고 프록시를 가리키는 HTTPTargetConnection이 있는 ServiceCallout: 호출이 없는 경우가 있음
132443137 API 런타임 X-Apigee-*로 시작하는 헤더를 무시하도록 메시지 프로세서 동작 변경 따라서 X-Apigee-* 헤더를 사용하는 코드를 리팩터링하고 지원되는 헤더로 대체해야 합니다.
125709964 API 런타임 purgeChildEntries를 사용한 캐시 무효화가 예상대로 작동하지 않음