현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동 정보
내용
Apigee Edge에서 사용 가능한 키-값 맵 (KVM) 저장소에 대한 정책 기반 액세스를 제공합니다. PUT, GET 또는 DELETE 작업을 지정하는 KeyValueMapOperations 정책을 구성하여 이름이 지정된 기존 맵에서 키/값 쌍을 저장, 검색, 삭제할 수 있습니다. 정책에서 최소한 한 개 이상의 작업을 수행해야 합니다.
동영상
KVM에 대해 자세히 알아보려면 다음 동영상을 시청하세요.
동영상 | 설명 |
---|---|
키-값 맵이 중요한 이유 | KVM이 필요한 이유와 작동 방식을 알아보세요. |
UI를 사용하여 KVM을 만들고 런타임 시 KVM 검색 | KVM을 만들고 KVM 정책을 사용하여 값을 검색하고 흐름 변수를 사용하여 값을 API 요청에 삽입합니다. |
API 런타임 시 KVM 만들기 및 업데이트 | KVM 정책을 사용하여 API 런타임 시 KVM을 만듭니다. |
KVM을 캐시하여 성능 향상 | 데이터를 캐시하여 KVM 정책의 성능을 향상시킵니다. |
암호화된 KVM 저장 | 민감한 정보를 KVM에 암호화된 형식으로 저장하고 KVM 정책 및 비공개 변수를 사용하여 런타임 시 값을 가져옵니다. |
KVM 범위를 사용하여 액세스 관리 | KVM 정책 범위 속성을 사용하여 KVM을 조직, 환경, API 프록시, 또는 API 프록시 버전으로 제한합니다. |
API 런타임 시 KVM 항목 삭제 | KVM 정책 DELETE 작업을 사용하여 API 런타임 시 KVM 항목을 삭제합니다. |
샘플
KVM에 리터럴 적용하기
다음 정책이 실행되면 FooKVM
이라는 암호화된 KVM을 만든 다음 리터럴 문자열 foo
및 bar
(변수에서 추출된 값으로 설정되지 않음)의 두 값이 설정된 FooKey_1
라는 키를 만듭니다. 다음 예시에서 키를 GET
할 때 원하는 값을 검색하기 위해 색인 번호를 지정합니다.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM"> <DisplayName>FooKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Put> <Key> <Parameter>FooKey_1</Parameter> </Key> <Value>foo</Value> <Value>bar</Value> </Put> </KeyValueMapOperations>
범위는 'environment'입니다. 즉, 관리 UI의 API > 환경 구성 > 키-값 맵에서 KVM을 확인할 수 있습니다. 이 페이지에 표시된 KVM은 모두 선택한 환경으로 범위가 지정됩니다.
리터럴에서 KVM 가져오기
이 정책은 이전 예시의 FooKVM
맵을 검토하고 FooKey_1
키에서 두 번째 값(색인='2')을 가져와 foo_variable
변수에 보관합니다.
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM"> <DisplayName>GetKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="foo_variable" index="2"> <Key> <Parameter>FooKey_1</Parameter> </Key> </Get> </KeyValueMapOperations>
KVM에 변수 적용하기
유용한 키 값 맵의 간단한 예시는 URL 단축 서비스입니다. 키 값 맵은 해당 전체 URL과 함께 단축 URL을 저장하도록 구성할 수 있습니다.
이 정책 샘플은 키 값 맵을 만듭니다. 정책은 2개의 연관된 값이 있는 키를 'urlMapper'라는 키/값 맵에 PUT합니다.
<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Put override="true"> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> <Value ref="urlencoding.longurl.encoded"/> <Value ref="request.queryparam.url"/> </Put> </KeyValueMapOperations>
이 예시에서 urlencoding.requesturl.hashed
키는 커스텀 변수의 예시입니다. 해싱된 요청 URL은 코드(예: 자바스크립트 또는 자바)에 의해 생성된 다음 이 변수에 저장됩니다. 여기서 KeyValueMapOperations 정책은 여기에 액세스할 수 있습니다.
requesturl.hashed
키마다 2개의 값이 저장됩니다.
- 이름이
urlencoding.longurl.encoded
인 맞춤 변수의 콘텐츠 - 사전 정의된 변수
request.queryparam.url
의 콘텐츠
예를 들어 런타임 시 정책이 실행되면 변수 값이 다음과 같을 수 있습니다.
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
request.queryparam.url: http://apigee.com
다음 키-값 맵과 항목이 Edge의 키/값 저장소에 생성되고 정책이 연결된 API 프록시로 범위가 지정됩니다.
{ "entry" :[ { "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be", "value" : "http://tinyurl.com/38lwmlr,http://apigee.com" } ], "name" : "urlMapper" }
항목은 삭제될 때까지 유지됩니다. 키-값 저장소 항목은 클라우드를 실행하는 Edge 인스턴스 전반에 분산됩니다.
변수에서 KVM 가져오기
유용한 키-값 맵의 간단한 예로는 URL '단축' 서비스가 있습니다. 키 값 맵은 해당 전체 URL과 함께 단축 URL을 저장하도록 구성할 수 있습니다.
키/값 맵 항목의 값을 검색하려면(예: KeyValueMapOperations PUT 탭에 설명된 값) 키 값 맵을 가져오도록 정책을 구성합니다.
<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper"> <Scope>apiproxy</Scope> <Get assignTo="urlencoding.shorturl" index='1'> <Key> <Parameter ref="urlencoding.requesturl.hashed"/> </Key> </Get> </KeyValueMapOperations>
이 정책이 실행될 때 urlencoding.requesturl.hashed
변수의 값이 ed24e12820f2f900ae383b7cc4f2b31c402db1be
이면 이름이 urlencoding.shorturl
인 맞춤 변수가 http://tinyurl.com/38lwmlr
값과 함께 설정됩니다.
이제 데이터를 검색했으므로 다른 정책과 코드에서 이러한 변수의 값을 추출하여 데이터에 액세스할 수 있습니다.
KVM에서 암호화된 값 가져오기
키-값 맵이 암호화된 경우 assignTo
속성 값에 'private.
' 프리픽스를 사용하여 값을 검색합니다. 이 예에서 private.encryptedVar
변수는 키 값 맵에 있는 foo
키의 복호화된 값을 보유합니다. 암호화된 키-값 맵을 만드는 방법에 대한 자세한 내용은 키/값 지도 관리 API의 '만들기' 주제를 참고하세요.
<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map"> <Scope>apiproxy</Scope> <Get assignTo="private.encryptedVar" index='1'> <Key> <Parameter>foo</Parameter> </Key> </Get> </KeyValueMapOperations>
이제 데이터를 검색했으므로 다른 정책과 코드에서 해당 변수의 값을 추출하여 데이터에 액세스할 수 있습니다.
요소 참조
요소 참조는 KeyValueMapOperations 정책의 요소 및 속성을 설명합니다.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="urlMapper" > <DisplayName>Key Value Map Operations 1</DisplayName> <Scope>environment</Scope> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>value_literal</Value> </Entry> <Entry> <Key> <Parameter>variable_name</Parameter> </Key> <Value>value_1_literal</Value> <Value>value_2_literal</Value> </Entry> </InitialEntries> <Put override="false"> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value ref="variable_name"/> </Put> <Get assignTo="myvar" index="1"> <Key> <Parameter ref="variable_name"/> </Key> </Get> <Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete> </KeyValueMapOperations>
<KeyValueMapOperations> 속성
다음 예시는 <KeyValueMapOperations>
태그의 속성을 보여줍니다.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">
다음 표에서는 <KeyValueMapOperations>
태그와 관련된 속성을 설명합니다.
속성 | 설명 | 기본 계정 | 상태 |
---|---|---|---|
mapIdentifier |
이 정책으로 또는 관리 UI에서 만든 지도에 액세스할 때 사용할 식별자를 지정합니다. KVM 이름은 퍼블릭 클라우드용 Apigee Edge에서 대소문자를 구분합니다.
예를 들어 이 속성을 제외하면 organization/environment/apiproxy 범위 내에서 |
N/A | 선택사항 |
다음 표는 모든 정책 상위 요소의 공통 속성에 대해 설명합니다.
속성 | 설명 | 기본 계정 | 현재 상태 |
---|---|---|---|
name |
정책의 내부 이름입니다. 원하는 경우 |
N/A | 필수 |
continueOnError |
정책이 실패할 경우 오류가 반환되도록 하려면 정책이 실패해도 흐름 실행이 계속되도록 하려면 |
false | 선택사항 |
enabled |
정책을 시행하려면 정책을 중지하려면 |
true | 선택사항 |
async |
이 속성은 지원이 중단되었습니다. |
false | 지원 중단됨 |
<DisplayName> 요소
name
속성 외에도 이 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름으로 라벨을 지정합니다.
<DisplayName>Policy Display Name</DisplayName>
기본 계정 |
N/A 이 요소를 생략하면 정책 |
---|---|
현재 상태 | 선택사항 |
유형 | 문자열 |
<Delete> 요소
지정된 키-값 쌍을 삭제합니다. <Get>
, <Put>
, <Delete>
중 하나 이상을 사용해야 합니다.
상위 요소의 mapIdentifier
속성을 사용하여 KVM의 이름을 지정해야 합니다. 예를 들면 다음과 같습니다.
<Delete> <Key> <Parameter>key_name_literal</Parameter> </Key> </Delete>
기본 계정 | N/A |
---|---|
현재 상태 | <Get> 또는 <Put> 이 없는 경우 필수입니다. |
유형 | N/A |
<Entry> 요소
초기화될 때 키 값 맵에 입력되는 키 값 맵의 시드 값입니다.
퍼블릭 클라우드용 Edge의 경우 키 크기가 2KB로 제한됩니다. 예를 들면 다음과 같습니다.
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
기본 계정 | N/A |
---|---|
현재 상태 | 선택사항 |
유형 | 해당 사항 없음 |
<ExclusiveCache> 요소
지원이 중단되었습니다. 대신 <Scope>
요소를 사용하세요.
<ExpiryTimeInSecs> 요소
Edge가 지정된 KVM에서 캐시된 값을 새로고침하는 데 걸리는 시간(초)을 지정합니다.
값이 0 또는 -1이거나 이 요소를 제외한다는 것은 기본값 300초가 사용된다는 의미입니다. 예를 들면 다음과 같습니다.
<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
기본 계정 | 300 (5분) |
---|---|
현재 상태 | 선택사항 |
유형 | 정수 |
KVM은 키와 값을 NoSQL 데이터베이스에 저장하는 장기 지속성 메커니즘입니다. 이 때문에 런타임 시 KVM에서 읽기를 수행하면 프록시 성능이 저하될 수 있습니다. 성능 향상을 위해 Edge에는 런타임 중에 메모리에서 KVM 키/값을 캐시하는 메커니즘이 내장되어 있습니다. 이 KVM 작업 정책은 항상 GET 작업을 위해 캐시에서 읽습니다.
<ExpiryTimeInSecs>
요소를 사용하면 정책에 사용되는 키/값이 KVM에서 다시 새로고침되기 전에 캐시에 저장되는 기간을 제어할 수 있습니다. 그러나 GET 작업과 PUT 작업이 캐시 만료에 영향을 미치는 방식에는 몇 가지 차이점이 있습니다.
GET - KVM GET 작업이 처음 실행되면 KVM에서 요청된 키/값(정책의 루트 mapIdentifier
속성에 이름이 지정됨)이 캐시에 로드됩니다. 여기서 다음 중 하나가 발생할 때까지 키/값이 후속 GET 작업에 사용됩니다.
<ExpiryTimeInSecs>
에 지정된 시간(초)이 만료됩니다.
또는- KVM 정책의 PUT 작업은 기존 값을 덮어씁니다(아래 설명 참조).
PUT - PUT 작업은 지정된 KVM에 키/값을 씁니다. PUT이 캐시에 이미 있는 키에 쓰는 경우 캐시가 즉시 새로고침되고 이제 정책의 <ExpiryTimeInSecs>
요소에 지정된 시간(초) 동안 새 값이 저장됩니다.
예시 - KVM 캐싱
- GET 작업은 'rating'의 값을 검색하여 캐시에 값 '10'을 추가합니다. 정책의
<ExpiryTimeInSecs>
은 60입니다. - 30초 후 GET 정책이 다시 실행되고 캐시에서 '10'이 검색됩니다.
- 5초 후 PUT 정책은 'rating' 값을 '8'로 업데이트하고 PUT 정책의
<ExpiryTimeInSecs>
은 20입니다. 캐시는 새 값으로 즉시 새로고침되며, 20초 동안 캐시에 보관되는 것으로 설정됩니다. PUT이 시작되지 않은 경우 첫 번째 GET에서 처음에 채워진 캐시는 처음 60초에서 남아서 30초 더 계속 존재합니다. - 15초 후 다른 GET이 실행되고 '8' 값이 검색됩니다.
<Get> 요소
지정된 키의 값을 검색합니다. <Get>
, <Put>
, <Delete>
중 하나 이상을 사용해야 합니다.
상위 요소에서 mapIdentifier
속성을 사용하여 KVM의 이름을 지정해야 합니다.
정책에 여러 Get
블록을 포함하여 KVM에서 여러 항목을 검색할 수 있습니다.
기본 계정 | N/A |
---|---|
현재 상태 | <Put> 또는 <Delete> 이 없는 경우 필수입니다. |
유형 | N/A |
KVM에서 단일 항목 가져오기
<Get assignTo="myvar" index="1"> <Key> <Parameter>key_name_literal</Parameter> </Key> </Get>
KVM에서 여러 항목 가져오기
다음 예시에서는 다음 키와 값이 있는 KVM을 가정합니다. KVM은 지금까지 가장 인기 있는 영화의 러닝 목록을 저장하는 것 외에 모든 주요 영화의 감독 이름을 저장합니다.
키 | 값 |
---|---|
top_movies | Princess Bride, The Godfather, Citizen Kane |
Citizen Kane | Orson Welles |
Princess Bride | Rob Reiner |
The Godfather | Francis Ford Coppola |
다음은 현재 가장 인기 있는 영화 및 감독의 이름을 검색하는 데 사용할 수 있는 KVM 정책 구성입니다.
<Get assignTo="top.movie.pick" index="1"> <Key> <Parameter>top_movies</Parameter> </Key> </Get> <Get assignTo="movie.director"> <Key> <Parameter ref="top.movie.pick"/> </Key> </Get>
API 프록시가 호출되면 Edge에서 API 프록시 흐름에서 사용할 수 있는 다음 변수를 만듭니다.
top.movie.pick=Princess Bride
movie.director=Rob Reiner
특성
다음 표에서는 <Get>
요소의 속성을 설명합니다.
속성 | 설명 | 기본 계정 | 상태 |
---|---|---|---|
assignTo |
검색한 값을 할당해야 하는 변수입니다. 키 값 맵이 암호화되어 있으면 assignTo 이름을 ' <Get assignTo="private.myvar"> 프리픽스를 사용하지 않고 암호화된 키 값 맵을 가져오려고 하면 정책에 오류가 발생합니다. 디버깅 중 기본 보안 목적에 필요한 프리픽스는 API 프록시 Trace 및 디버그 세션에서의 암호화된 값을 숨깁니다. 암호화된 키 값 맵 만들기에 대한 자세한 내용은 키/값 맵 관리 API 및 환경 키 값 맵 만들기 및 수정의 '만들기' 주제를 참조하세요. |
N/A | 필수 |
색인 |
값이 여러 개인 키에서 가져올 항목의 색인 번호(1부터 시작하는 색인)입니다.
예를 들어 예는 샘플의 'KVM에서 암호화된 값 가져오기' 탭을 참고하세요. |
N/A | 선택사항 |
<InitialEntries> 요소
초기화될 때 키 값 맵에 입력되는 키 값 맵의 시드 값입니다.
상위 요소에서 mapIdentifier
속성을 사용하여 KVM의 이름을 지정해야 합니다. 예를 들면 다음과 같습니다.
<InitialEntries> <Entry> <Key> <Parameter>key_name_literal</Parameter> </Key> <Value>v1</Value> </Entry> <Entry> <Key> <Parameter>key_name_variable</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
이 요소를 사용하는 경우 배포된 프록시 버전의 관리 UI에 정책을 저장하거나 이 요소가 포함된 정책이 포함된 API 프록시 번들을 배포하면 키가 자동으로 KVM에 (암호화되지 않은 상태로) 생성됩니다. 정책 값이 KVM의 값과 다르면 KVM의 값이 프록시 배포 시 덮어쓰기 됩니다. 모든 새 키-값은 기존 키-값과 함께 기존 KVM에 추가됩니다.
이 요소에 의해 채워진 키와 값은 리터럴이어야 합니다. 예를 들어 <Parameter
ref="request.queryparam.key">
는 이 요소 내에서 지원되지 않습니다.
키 크기는 퍼블릭 클라우드용 에지와 프라이빗 클라우드용 에지의 경우 2KB로 제한됩니다. KVM 값은 2KB로 제한됩니다.
암호화된 KVM을 만들려면 키/값 지도 관리 API를 사용합니다.
기본 계정 | N/A |
---|---|
현재 상태 | 선택사항 |
유형 | N/A |
<Key> 요소
키/값 맵 항목에서 키를 지정합니다. 키는 복합적일 수 있습니다. 즉, 둘 이상의 매개변수를 추가하여 키를 만들 수 있습니다. 예를 들어 userID
및 role
을 조합하여 key
을 만들 수 있습니다. 예를 들면 다음과 같습니다.
<Key> <Parameter>key_name_literal</Parameter> </Key>
키 이름 설정 방법에 대한 자세한 내용은 <Parameter> 요소를 참조하세요.
퍼블릭 클라우드용 Edge를 사용하면 키 크기가 2KB로 제한됩니다. 자세한 내용은 Edge for Public Cloud API와 Private Cloud API의 차이점을 참조하세요.
기본 계정 | N/A |
---|---|
현재 상태 | 선택사항 |
유형 | N/A |
<Parameter> 요소
키/값 쌍의 키를 지정합니다. 이 요소는 키/값 쌍을 생성, 삽입, 검색, 삭제할 때 이름을 지정합니다.
다음을 사용하여 이름을 지정할 수 있습니다.
-
리터럴 문자열
<Key> <Parameter>literal</Parameter> </Key>
-
ref
속성을 사용하여 런타임 시 가져올 변수<Key> <Parameter ref="variable_name"/> </Key>
-
리터럴 및 변수 참조의 조합
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
키 요소에 여러 매개변수 요소가 포함된 경우 유효 키 문자열은 각 매개변수의 값을 연결하여 이중 밑줄로 결합합니다. 예를 들어 위 예에서 apiproxy.name
변수의 값이 'abc1'이면 유효 키는 targeturl__abc1__weight
입니다.
키-값 항목을 가져오거나 업데이트하거나 삭제할 때 키 이름은 키-값 맵의 키 이름과 일치해야 합니다. 가이드라인은 키 이름 지정 및 검색을 참조하세요.
기본 계정 | N/A |
---|---|
현재 상태 | 필수 |
유형 | 문자열 |
속성
다음 표에서는 <Parameter>
요소의 속성을 설명합니다.
속성 | 설명 | 기본 계정 | 현재 상태 |
---|---|---|---|
참조 | 생성하거나 가져오거나 삭제하려는 키의 정확한 이름이 포함된 변수의 이름을 지정합니다. | N/A | 여는 태그와 닫는 태그 사이에 리터럴 값이 제공되지 않은 경우 필수입니다. 리터럴 값이 제공되면 금지됩니다. |
<Put> 요소
키 값 맵이 암호화되었는지 여부와 관계없이 키 값 맵에 키/값 쌍을 씁니다. 상위 요소의 mapIdentifier
속성에 지정된 키 값 맵이 없으면 맵이 (암호화되지 않은 상태로) 자동으로 생성됩니다. 키 값 맵이 이미 있으면 키/값이 맵에 추가됩니다.
암호화된 키-값 맵을 만들려면 키/값 맵 관리 API를 사용하거나 환경 키-값 맵 만들기 및 수정을 참조하여 UI에서 암호화된 환경 범위의 KVM을 만듭니다.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
기본 계정 | N/A |
---|---|
현재 상태 | <Get> 또는 <Delete> 이 없는 경우 필수입니다. |
유형 | N/A |
특성
다음 표에서는 <Put>
요소의 속성을 설명합니다.
속성 | 설명 | 기본 계정 | 현재 상태 |
---|---|---|---|
override |
|
false |
선택사항 |
<Scope> 요소
키-값 맵의 접근성 경계를 정의합니다. 기본 범위는 environment
입니다. 즉, 기본적으로 맵 항목은 환경(예: 테스트 또는 프로덕션)에서 실행되는 모든 API 프록시에서 공유합니다. 범위를 apiproxy
로 설정하면 키-값 맵의 항목에 값을 맵에 쓰는 API 프록시만 액세스할 수 있습니다.
맵 또는 맵 항목에 액세스하면 지도를 만들 때 사용한 범위 값 값을 지정해야 합니다. 예를 들어 apiproxy
범위로 맵을 만든 경우 값을 검색하거나 변경사항을 적용하거나 항목을 삭제할 때 apiproxy
범위를 사용해야 합니다.
<Scope>environment</Scope>
기본값 | environment |
---|---|
현재 상태 | 선택사항 |
유형 | 문자열 |
유효한 값: |
|
<Value> 요소
키 값을 지정합니다. 값을 리터럴 문자열로 지정하거나 ref
속성을 사용하여 런타임 시 검색할 수 있는 변수로 사용할 수 있습니다.
<!-- Specify a literal value --> <Value>literal<Value>
또는
<!-- Specify the name of variable value to be populated at run time. --> <Value ref="variable_name"/>
<Value>
요소를 여러 개 포함하여 여러 부분으로 구성된 값을 지정할 수도 있습니다. 런타임 시 값이 결합됩니다.
다음 예시에서는 KVM에 두 개의 키가 추가됩니다.
- 값이
v1,v2
인 키k1
- 값이
v3,v4
인 키k2
<InitialEntries> <Entry> <Key> <Parameter>k1</Parameter> </Key> <Value>v1</Value> <Value>v2</Value> </Entry> <Entry> <Key> <Parameter>k2</Parameter> </Key> <Value>v3</Value> <Value>v4</Value> </Entry> </InitialEntries>
다음 예시에서는 두 개의 값이 있는 키 하나가 생성됩니다. 조직 이름이 foo_org
이고, API 프록시 이름이 bar
이고, 환경이 test
라고 가정합시다.
- 값이
bar,test
인 키foo_org
<Put> <Key> <Parameter ref="organization.name"/> </Key> <Value ref="apiproxy.name"/> <Value ref="environment.name"/> </Put>
기본 계정 | N/A |
---|---|
현재 상태 | 필수 |
유형 | 문자열 |
속성
다음 표에서는 <Value>
요소의 속성을 설명합니다.
속성 | 설명 | 기본 계정 | 현재 상태 |
---|---|---|---|
참조 | 설정하려는 키 값이 포함된 변수의 이름을 지정합니다. | N/A | 여는 태그와 닫는 태그 사이에 리터럴 값이 제공되지 않은 경우 필수입니다. 리터럴 값이 제공되면 금지됩니다. |
오류 참조
에지 정책에서 반환되는 오류는 오류 코드 참조에 설명된 일관된 형식을 따릅니다.
이 섹션에서는 반환되는 오류 코드, 오류 메시지, 정책이 오류를 트리거할 때 Edge에서 설정하는 오류 변수를 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항 및 오류 처리를 참조하세요.
런타임 오류
이러한 오류는 정책이 실행될 때 발생할 수 있습니다.
오류 코드 | HTTP 상태 | 원인 | 수정 |
---|---|---|---|
steps.keyvaluemapoperations.SetVariableFailed |
500 |
이 오류는 암호화된 키 값 맵에서 값을 검색하려 하고 이름에 |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
이 오류는 키 값 맵 작업 정책에서 |
build |
배포 오류
이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.
오류 이름 | 원인 | 해결 |
---|---|---|
InvalidIndex |
키 값 맵 작업 정책의 <Get> 요소에 지정된 index 속성이 0 또는 음수이면 API 프록시 배포에 실패합니다. 색인은 1 에서 시작하므로 0 또는 음수인 정수의 색인은 잘못된 것으로 간주됩니다.
|
build |
KeyIsMissing |
이 오류는 <Key> 요소가 완전히 누락되었거나 키 값 맵 작업 정책의 <InitialEntries> 요소 <Entry> 아래 <Key> 요소 내에서 <Parameter> 요소가 누락된 경우에 발생합니다.
|
build |
ValueIsMissing |
이 오류는 키 값 맵 작업 정책의 <InitialEntries> 요소의 <Entry> 요소 아래에 <Value> 요소가 누락된 경우에 발생합니다. |
build |
스키마
사용법 참고사항
키-값 맵의 개요는 키 값 맵 사용을 참조하세요.
키-값 맵 저장소는 키-값 쌍으로 형식이 지정된 데이터에 경량의 지속성 메커니즘을 제공합니다. 정책 또는 코드를 통해 런타임 시 이에 액세스할 수 있습니다. 맵에는 key=value
형식의 임의 데이터가 포함됩니다.
예를 들면 localhost=127.0.0.1
, zip_code=94110
, 또는 first_name=felix
입니다. 첫 번째 예시에서 localhost
는 키이고 127.0.0.1
은 값입니다. 각 키-값 쌍은 키 값 맵의 항목으로 저장됩니다. 키-값 맵은 여러 항목을 저장할 수 있습니다.
다음은 키-값 맵을 사용하는 예입니다. 다양한 백엔드 환경과 연결된 IP 주소 목록을 저장해야 한다고 가정해 보겠습니다. 키-값 쌍 목록을 항목으로 포함하는 ipAddresses
라는 키-값 맵을 만들 수 있습니다. 예를 들어 이 JSON은 다음 맵을 나타낼 수 있습니다.
{ "entry" : [ { "name" : "Development", "value" : "65.87.18.18" }, { "name" : "Staging", "value" : "65.87.18.22" } ], "name" : "ipAddresses" }
이 구조를 사용하면 런타임 시 정책에서 IP 허용 목록 또는 차단 목록을 적용하고 백엔드 대상 주소를 동적으로 선택하는 등의 목적으로 사용할 수 있는 IP 주소 저장소를 만들 수 있습니다. 일반적으로 KeyValueMapOperations 정책은 여러 요청/응답 트랜잭션에 재사용해야 하는 장기 정보를 저장하거나 가져오는 데 사용됩니다.
키-값 맵은 KeyValueMapOperations 정책을 통해 조작하거나 Apigee Edge 관리 API를 통해 직접 조작할 수 있습니다. 조직 키/값 맵 API API에 대한 자세한 내용은 관리 API 참조를 확인하세요. 예를 들어 API를 사용하여 키/값 저장소에 대규모 데이터 세트를 업로드하거나 키/값 맵 항목을 관리하는 스크립트를 만들 수 있습니다. KeyValueMapOperations 정책을 사용하여 액세스하기 전에 API로 키-값 맵을 만들어야 합니다.
키 이름 지정 및 검색
<Parameter>
및 <Value>
요소를 사용하면 리터럴 값(여는 태그와 닫는 태그 사이의 값)을 지정하거나 ref
속성을 사용하여 런타임 시에 사용해야 하는 변수의 이름을 지정할 수 있습니다.
매개변수 요소는 생성되는 키의 이름과 검색 또는 삭제하려는 키 이름을 결정하므로 특별히 언급할 필요가 있습니다. 다음은 두 가지 예시입니다. 첫 번째 예시에서는 키 이름을 구체적으로 지정하고, 두 번째 예시에서는 변수를 사용하여 키 이름을 지정합니다. KVM에 키를 만들 때 다음을 사용한다고 가정해 보겠습니다.
<Parameter>key_name_literal</Parameter> <Parameter ref="key.name.variable"/>
첫 번째 인스턴스에서 'key_name_literal'의 리터럴 값이 KVM에 키 이름으로 저장됩니다. 두 번째 인스턴스에서 key.name.variable
에 있는 값이 무엇이든 KVM의 키 이름이 됩니다. 예를 들어 key.name.variable
에 foo
값이 포함된 경우 키 이름은 'foo'가 됩니다.
GET 작업으로 키 및 키 값을 검색하거나 DELETE 작업을 사용하여 삭제하려면 <Parameter> 설정을 KVM의 키 이름과 일치하도록 해야 합니다. 예를 들어 KVM의 키 이름이 'foo'인 경우 <Parameter>foo</Parameter>
를 사용하여 리터럴 값을 지정하거나 <Parameter ref="variable.containing.foo"/>
와 같이 정확한 값 'foo'를 포함하는 변수를 지정할 수 있습니다.