Apigee Edge 문서입니다.
Apigee X 문서. 정보
Edge에는 다음과 같은 서비스를 제공하는 '관리 API'라는 강력한 유틸리티가 있습니다.
- API 프록시 배포 또는 배포 취소
- 가상 호스트, 키 저장소, 트러스트 저장소 등 구성
- KeyValueMaps, API 제품, 개발자 등의 항목 생성, 삭제 및/또는 업데이트 앱, 개발자, 고객 키 등
- 이러한 항목의 정보 검색
이러한 서비스는 Apigee Edge 플랫폼의 관리 서버라는 구성요소를 통해 액세스할 수 있습니다. 간단한 관리 API를 사용하여 이러한 서비스를 쉽게 호출할 수 있습니다. 있습니다.
경우에 따라 런타임 시 API 프록시에서 이러한 서비스 중 하나 이상을 사용해야 할 수도 있습니다. 이것은 왜냐하면 KeyValueMaps, OAuth 액세스 토큰, API 제품, 개발자 앱, 개발자, 고객 키 등에는 키-값 쌍, 맞춤 키-값 쌍, 속성 또는 프로필의 일부로 설정할 수 있습니다.
예를 들어 KeyValueMap에 다음 정보를 저장하여 런타임에 더욱 안전하게 사용하고 액세스할 수 있습니다.
- 백엔드 대상 URL
- 환경 속성
- 백엔드 또는 타사 시스템의 보안 사용자 인증 정보
마찬가지로 런타임에 API 제품 목록 또는 개발자의 이메일 주소를 가져오는 것이 좋습니다. 이 정보는 개발자 앱 프로필의 일부로 제공됩니다.
이 모든 정보는 런타임 시 효과적으로 사용하여 정책에서 동적인 동작을 수행할 수 있습니다. 커스텀 코드를 작성할 수 있습니다
안티패턴
관리 API는 관리 작업에 선호되고 유용하며 다음 용도로 사용해서는 안 됩니다. API 프록시 흐름에서 런타임 로직을 수행할 수 없습니다. 이유는 다음과 같습니다.
- 관리 API를 사용하여 KeyValueMaps, OAuth와 같은 항목에 대한 정보에 액세스 액세스 토큰 또는 API 프록시에서 기타 목적으로 사용되는 경우 관리에 의존하게 됩니다. 서버.
- 관리 서버는 Edge 런타임 구성요소의 일부가 아니므로 고가용성을 제공합니다
- 또한 관리 서버는 동일한 네트워크 또는 데이터 센터 내에 프로비저닝되지 않으므로 런타임에 네트워크 지연 시간이 발생할 수 있습니다.
- 관리 서버의 항목은 장기간 동안 캐시되므로 짧은 시간 동안 쓰기 및 읽기를 수행하면 API 프록시에서 최신 데이터가 바로 표시되지 않을 수 있습니다.
- 런타임에 네트워크 홉을 증가시킵니다.
아래의 코드 샘플에서는 맞춤 JavaScript 코드를 통해 관리 API를 호출하여 KeyValueMap에서 정보를 검색할 수 있습니다.
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
관리 서버를 사용할 수 없으면 관리 API 호출을 호출하는 JavaScript 코드가 실패합니다. 그러면 이후에 API 요청이 실패합니다.
영향
- 런타임 시 관리 서버에 대한 추가 종속성이 도입됩니다. 관리 서버에 오류가 발생하면 API 호출도 영향을 받습니다.
- 관리 API의 사용자 인증 정보를 로컬 또는 일부 보안 저장소에 저장해야 합니다. 암호화 KVM 등입니다
- 네트워크를 통한 관리 서비스 호출이 성능에 영향을 줍니다.
- 관리의 캐시 만료 시간이 길어져 업데이트된 값이 즉시 표시되지 않을 수 있습니다. 있습니다
권장사항
KeyValueMaps, API와 같은 항목에서 정보를 검색하는 더 효과적인 방법이 있습니다. 런타임에 제품, DeveloperApps, 개발자, 고객 키 등 예를 들면 다음과 같습니다.
- KeyValueMapOperations 정책을 사용하여 KeyValueMaps의 정보에 액세스합니다. 샘플 코드
도 있습니다.
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- API 프록시에서 API 제품, 개발자 앱, 개발자, 고객 키 등에 관한 정보에 액세스하려면 다음 중 하나를 수행하면 됩니다.
- API 프록시 흐름에 VerifyAPIKey 정책이 있으면 이 정책의 일부로 채워진 흐름 변수를 사용하여 정보에 액세스할 수 있습니다. 여기 표시된 샘플 코드는
JavaScript를 사용하여 개발자 앱의 이름 및 created_by 정보를 검색하는 방법:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- API 프록시 흐름에 VerifyAPIKey 정책이 없으면 Access Entity 및 Extract Variables 정책을 사용하여 API 제품, 개발자 앱 등의 프로필에 액세스할 수 있습니다.
- AccessEntity 정책을 사용하여 DeveloperApp의 프로필을 검색합니다.
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- ExtractVariables 정책을 사용하여 DeveloperApp에서
appId
를 추출합니다.<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- AccessEntity 정책을 사용하여 DeveloperApp의 프로필을 검색합니다.
- API 프록시 흐름에 VerifyAPIKey 정책이 있으면 이 정책의 일부로 채워진 흐름 변수를 사용하여 정보에 액세스할 수 있습니다. 여기 표시된 샘플 코드는
JavaScript를 사용하여 개발자 앱의 이름 및 created_by 정보를 검색하는 방법: