KeyValueMapOperations 정책

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

Edge UI의 키-값 맵 작업 아이콘

내용

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을 만든 다음 리터럴 문자열 foobar(변수에서 추출된 값으로 설정되지 않음)의 두 값이 설정된 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에서 대소문자를 구분합니다. 예를 들어 foobarFooBar와 다릅니다.

이 속성을 제외하면 kvmap이라는 KVM이 사용됩니다.

organization/environment/apiproxy 범위 내에서 mapIdentifier 속성을 사용하여 자체 맵 이름을 지정할 수 있습니다.

N/A 선택사항

다음 표는 모든 정책 상위 요소의 공통 속성에 대해 설명합니다.

속성 설명 기본 계정 현재 상태
name

정책의 내부 이름입니다. name 속성의 값에는 문자, 숫자, 공백, 하이픈, 밑줄, 마침표가 포함될 수 있습니다. 이 값은 255자(영문 기준)를 초과할 수 없습니다.

원하는 경우 <DisplayName> 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름을 사용하여 정책에 라벨을 지정합니다.

N/A 필수
continueOnError

정책이 실패할 경우 오류가 반환되도록 하려면 false로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다.

정책이 실패해도 흐름 실행이 계속되도록 하려면 true로 설정합니다.

false 선택사항
enabled

정책을 시행하려면 true로 설정합니다.

정책을 중지하려면 false로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다.

true 선택사항
async

이 속성은 지원이 중단되었습니다.

false 지원 중단됨

<DisplayName> 요소

name 속성 외에도 이 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름으로 라벨을 지정합니다.

<DisplayName>Policy Display Name</DisplayName>
기본 계정

N/A

이 요소를 생략하면 정책 name 속성 값이 사용됩니다.

현재 상태 선택사항
유형 문자열

<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 캐싱

  1. GET 작업은 'rating'의 값을 검색하여 캐시에 값 '10'을 추가합니다. 정책의 <ExpiryTimeInSecs>은 60입니다.
  2. 30초 후 GET 정책이 다시 실행되고 캐시에서 '10'이 검색됩니다.
  3. 5초 후 PUT 정책은 'rating' 값을 '8'로 업데이트하고 PUT 정책의 <ExpiryTimeInSecs>은 20입니다. 캐시는 새 값으로 즉시 새로고침되며, 20초 동안 캐시에 보관되는 것으로 설정됩니다. PUT이 시작되지 않은 경우 첫 번째 GET에서 처음에 채워진 캐시는 처음 60초에서 남아서 30초 더 계속 존재합니다.
  4. 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 이름을 'private.'로 시작합니다. 예를 들어 다음과 같습니다.

<Get assignTo="private.myvar">

프리픽스를 사용하지 않고 암호화된 키 값 맵을 가져오려고 하면 정책에 오류가 발생합니다. 디버깅 중 기본 보안 목적에 필요한 프리픽스는 API 프록시 Trace 및 디버그 세션에서의 암호화된 값을 숨깁니다.

암호화된 키 값 맵 만들기에 대한 자세한 내용은 키/값 맵 관리 API환경 키 값 맵 만들기 및 수정의 '만들기' 주제를 참조하세요.

N/A 필수
색인

값이 여러 개인 키에서 가져올 항목의 색인 번호(1부터 시작하는 색인)입니다. 예를 들어 index=1을 지정하면 첫 번째 값이 반환되고 assignTo 변수에 할당됩니다. 색인 값이 지정되지 않은 경우 해당 항목의 모든 값은 변수에 java.util.List로 할당됩니다.

예는 샘플의 '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> 요소

키/값 맵 항목에서 키를 지정합니다. 키는 복합적일 수 있습니다. 즉, 둘 이상의 매개변수를 추가하여 키를 만들 수 있습니다. 예를 들어 userIDrole을 조합하여 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

true로 설정하면 키 값이 재정의됩니다.

false 선택사항

<Scope> 요소

키-값 맵의 접근성 경계를 정의합니다. 기본 범위는 environment입니다. 즉, 기본적으로 맵 항목은 환경(예: 테스트 또는 프로덕션)에서 실행되는 모든 API 프록시에서 공유합니다. 범위를 apiproxy로 설정하면 키-값 맵의 항목에 값을 맵에 쓰는 API 프록시만 액세스할 수 있습니다.

맵 또는 맵 항목에 액세스하면 지도를 만들 때 사용한 범위 값 값을 지정해야 합니다. 예를 들어 apiproxy 범위로 맵을 만든 경우 값을 검색하거나 변경사항을 적용하거나 항목을 삭제할 때 apiproxy 범위를 사용해야 합니다.

<Scope>environment</Scope>
기본값 environment
현재 상태 선택사항
유형 문자열
유효한 값:
  • organization
  • environment
  • apiproxy
  • policy(API 프록시 개정)

<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

이 오류는 암호화된 키 값 맵에서 값을 검색하려 하고 이름에 private 프리픽스가 없는 변수로 설정하려고 할 때 발생합니다. 디버깅 중 기본 보안 목적으로 필요한 프리픽스는 API 프록시 Trace 및 디버그 세션에서의 암호화된 값을 숨깁니다.

steps.keyvaluemapoperations.UnsupportedOperationException 500

이 오류는 키 값 맵 작업 정책에서 mapIdentifier 속성이 빈 문자열로 설정된 경우에 발생합니다.

배포 오류

이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.

오류 이름 원인 해결
InvalidIndex 키 값 맵 작업 정책의 <Get> 요소에 지정된 index 속성이 0 또는 음수이면 API 프록시 배포에 실패합니다. 색인은 1에서 시작하므로 0 또는 음수인 정수의 색인은 잘못된 것으로 간주됩니다.
KeyIsMissing 이 오류는 <Key> 요소가 완전히 누락되었거나 키 값 맵 작업 정책의 <InitialEntries> 요소 <Entry> 아래 <Key> 요소 내에서 <Parameter> 요소가 누락된 경우에 발생합니다.
ValueIsMissing 이 오류는 키 값 맵 작업 정책의 <InitialEntries> 요소의 <Entry> 요소 아래에 <Value> 요소가 누락된 경우에 발생합니다.

스키마

사용법 참고사항

키-값 맵의 개요는 키 값 맵 사용을 참조하세요.

키-값 맵 저장소는 키-값 쌍으로 형식이 지정된 데이터에 경량의 지속성 메커니즘을 제공합니다. 정책 또는 코드를 통해 런타임 시 이에 액세스할 수 있습니다. 맵에는 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.variablefoo 값이 포함된 경우 키 이름은 'foo'가 됩니다.

GET 작업으로 키 및 키 값을 검색하거나 DELETE 작업을 사용하여 삭제하려면 <Parameter> 설정을 KVM의 키 이름과 일치하도록 해야 합니다. 예를 들어 KVM의 키 이름이 'foo'인 경우 <Parameter>foo</Parameter>를 사용하여 리터럴 값을 지정하거나 <Parameter ref="variable.containing.foo"/>와 같이 정확한 값 'foo'를 포함하는 변수를 지정할 수 있습니다.

관련 주제