API에 SpikeArrest 정책 추가

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

학습할 내용

이 가이드에서는 다음 방법을 배웁니다.

  • 요청 및 응답에 영향을 주는 정책을 추가합니다.
  • 정책 효과를 확인합니다.

필요한 사항

SpikeArrest 정책 추가

이 튜토리얼에서는 사용량 증가, 클라이언트 버그, 악의적인 공격으로 인해 발생할 수 있는 갑작스러운 트래픽 증가로부터 대상 서비스를 보호하기 위해 SpikeArrest 정책을 추가하고 구성합니다. 요청 수가 비율 한도를 초과하면 API가 HTTP 429 오류를 반환합니다.

새 프록시 편집기

API 프록시에 SpikeArrest 정책을 추가하려면 다음을 수행하세요.

  1. Cloud 콘솔에서 Apigee UI를 사용하는 경우: 프록시 개발 > API 프록시를 선택합니다.

    기본 Apigee UI를 사용하는 경우: 개발 > API 프록시를 선택하고 프록시 창에서 프록시의 환경을 선택합니다.

    시작하기 가이드를 따랐으면 API 프록시 만들기에서 만든 API 프록시에 추가할 수 있습니다.

  2. 개발 탭을 클릭합니다.
  3. 왼쪽 창에서 정책 행에 있는 + 버튼을 클릭합니다.
  4. 정책 만들기 대화상자에서 정책 유형 선택 필드를 클릭하고 트래픽 관리로 스크롤하고 SpikeArrest를 선택합니다.

  5. 선택적으로 정책의 이름표시 이름을 변경할 수 있습니다. 기본적으로 Apigee는 정책 이름에 짧은 프리픽스(이 경우 SA-)를 제공합니다. 프리픽스 다음에 대시로 구분된 일련의 설명 단어를 추가할 수 있습니다. 이름 지정 규칙을 참조하세요.

    정책 만들기 대화상자

    완료되면 만들기를 클릭하여 정책을 만듭니다.

이제 Spike Arrest 정책을 만들었으므로 PreFlow의 단계에 이를 추가할 수 있습니다.

  1. 왼쪽 창에서 프록시 엔드포인트 > 기본값 > PreFlow를 선택합니다.

    프록시 탐색기에서 PreFlow 선택을 위한 대상 엔드포인트

    참고: 모든 요소를 보려면 오른쪽 창에서 비주얼 편집기를 확장해야 할 수도 있습니다. 이렇게 하려면 비주얼 편집기와 텍스트 편집기 사이의 구분선을 클릭하고 약간 아래로 드래그합니다.

  2. 비주얼 편집기 오른쪽 하단의 응답 창에서 PreFlow 옆에 있는 + 버튼을 클릭합니다.

    응답 창에서 PreFlow 옆에 있는 + 버튼을 클릭합니다.

  3. 정책 단계 추가 대화상자에서 Spike Arrest 정책을 선택합니다.
  4. 추가를 클릭하여 정책을 연결합니다.

    이제 Spike Arrest 정책이 응답 창에 표시됩니다.

    응답 창에 표시된 Spike Arrest 정책

Preike에 Spike Arrest 정책을 연결했으므로 정책의 코드를 변경해 볼 수 있습니다.

  1. 응답 창에서 SA-를 선택합니다.

    정책 탭에 표시된 Spike Arrest 정책

  2. 텍스트 편집기에 PreFlow의 응답 요소에 급증 저지 정책 단계가 포함된 프록시의 XML 코드가 표시됩니다.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SpikeArrest continueOnError="false" enabled="true" name="SA-">
        <DisplayName>SA-</DisplayName>
        <Properties/>
        <Identifier ref="request.header.some-header-name"/>
        <MessageWeight ref="request.header.weight"/>
        <Rate>30ps</Rate>
    </SpikeArrest>
  3. 정책의 XML에서 <Rate> 요소 값을 1pm으로 변경합니다(클라우드에서 60초마다 허용되는 요청 두 개 정도로 변환됨).

    분(pm)당 또는 초(ps)당 정수 값으로 비율을 지정할 수 있습니다. 이것은 매우 낮은 한도이며 정책 설명을 위해 이 가이드에서만 사용됩니다. 일반적으로는 훨씬 더 큰 한도로 설정합니다.

    속성 검사기에서 Rate 값도 1pm으로 변경됩니다. 또한 속성 검사기에서 비율 값을 변경할 수 있으며 이 값은 XML 보기에 반영됩니다.

  4. 저장을 클릭하여 변경사항과 함께 현재 수정 버전을 저장합니다.

기본 프록시 편집기

API 프록시에 SpikeArrest 정책을 추가하려면 다음을 수행하세요.

  1. Apigee UI에 로그인합니다.
  2. 왼쪽 탐색 메뉴에서 개발 > API 프록시를 선택합니다.
  3. SpikeArrest 정책을 추가하려는 API 프록시를 선택합니다.

    시작하기 가이드를 따랐으면 API 프록시 만들기에서 만든 API 프록시에 추가할 수 있습니다.

  4. 새 API 프록시에 대해 편집기에서 개발 탭을 클릭합니다.

    개발 탭은 개요 탭과 Trace 탭 사이에 있습니다.

    API 프록시 편집기를 사용하면 API 프록시 구조를 보고 해당 흐름을 구성할 수 있습니다. 편집기는 프록시의 요청 및 응답 메시지 흐름을 시각적으로 보여주고 프록시를 정의하는 기본 XML에 대해 편집 가능한 화면을 표시합니다.

  5. 왼쪽 탐색 창의 프록시 엔드포인트 > 기본값 아래에서 PreFlow를 클릭합니다. (다른 가이드에서는 흐름 개념이 다뤄집니다.)
  6. 요청 PreFlow에 따라 맨 위에 있는 +단계 버튼을 클릭합니다. 그러면 만들 수 있는 모든 정책이 카테고리별 목록으로 표시됩니다.

    요청 PreFlow에서 단계를 클릭합니다.

  7. 트래픽 관리 카테고리에서 SpikeArrest를 선택합니다. 새 정책 대화상자가 표시됩니다.

    SpikeArrest 정책을 만듭니다.

  8. 기본 이름을 그대로 두고 추가를 클릭합니다. 새 정책이 요청의 PreFlow 흐름에 연결됩니다.
  9. 탐색기에서 프록시 엔드포인트 > 기본값 아래의 PreFlow가 아직 선택되어 있는지 확인하고 API 프록시 편집기에서 다음을 확인합니다.
    • 새 SpikeArrest-1 정책이 API 프록시 편집기의 왼쪽에 있는 탐색기의 정책 아래에 추가됩니다.
    • SpikeArrest-1 아이콘이 API 프록시 편집기의 위쪽 가운데에 있는 디자이너 보기에 추가되고, 프록시의 메시지 흐름을 시각적으로 보여줍니다.
    • 정책의 XML이 API 프록시 편집기의 아래쪽 가운데에 있는 코드 보기에 표시됩니다.

    SpikeArrest 정책이 있는 PreFlow 보기

  10. 탐색기에서 정책 아래에 있는 SpikeArrest-1을 선택하고 API 프록시 편집기에서 다음을 확인합니다.
    • 정책 세부정보가 API 프록시 편집기의 위쪽 가운데에 있는 디자이너 보기에 표시됩니다.
    • 정책의 XML이 API 프록시 편집기의 아래쪽 가운데에 있는 코드 보기에 표시됩니다.
    • 정책의 XML 요소 및 속성값이 API 프록시 편집기의 오른쪽에 있는 속성 검사기에 표시됩니다.

    속성 검사기 창에는 SpikeArrest-1 정책의 값이 표시됩니다.

  11. 정책의 XML에서 <Rate> 요소 값을 1pm으로 변경합니다(클라우드에서 60초마다 허용되는 요청 두 개 정도로 변환됨).

    분(pm)당 또는 초(ps)당 정수 값으로 비율을 지정할 수 있습니다. 이것은 매우 낮은 한도이며 정책 설명을 위해 이 가이드에서만 사용됩니다. 일반적으로는 훨씬 더 큰 한도로 설정합니다.

    속성 검사기에서 Rate 값도 1pm으로 변경됩니다. 또한 속성 검사기에서 비율 값을 변경할 수 있으며 이 값은 XML 보기에 반영됩니다.

  12. 저장을 클릭하여 변경사항과 함께 현재 수정 버전을 저장합니다.
  13. 배포 대상 버튼을 사용하여 변경사항을 배포합니다.
  14. 도메인의 URL과 curl을 사용하여 API를 호출합니다.

    curl "http://YOUR_DOMAIN/myproxy"

    각 매개변수는 다음과 같습니다.

    • ENV_GROUP_HOSTNAME은 프로비저닝 중에 설정한 환경 그룹 호스트 이름입니다.
    • DOMAIN_HOSTNAME은 도메인 호스트 이름입니다.

    자세한 내용은 API 프록시 테스트를 참조하세요.

    요청이 성공하고 XML 응답이 이전과 동일하게 표시되는지 확인합니다. (또한 웹브라우저에 URL만 입력할 수도 있습니다.)

    그런 다음 다양한 방법으로 Rate 설정을 테스트해 봅니다.

    • curl 명령어를 1분 이내에 2~3회 실행(또는 브라우저 창을 새로고침)하고 정책의 비율 한도를 초과했으므로 다음 메시지가 표시되는지 확인합니다.
      {
      "fault": {
        "faultstring":"Spike arrest violation. Allowed rate : 1pm",
        "detail": {
          "errorcode":"policies.ratelimit.SpikeArrestViolation"}
        }
      }

      1분 내에 호출을 더 시도하면 오류 메시지가 계속 표시됩니다.

    • 정책을 수정하여 <Rate> 한도를 15pm으로 설정한(클라우드에서 4초마다 허용되는 호출 두 개 정도로 변환됨) 후 API 프록시를 저장하고 배포합니다.
    • curl 명령어를 실행하거나 브라우저를 반복해서 새로고침합니다(curl이 더 빠름). 4초 간격 내에 1~2회 호출을 시도하면 호출이 성공합니다. 4초 내에 2회 넘게 호출을 더 빠르게 수행하면 오류가 발생합니다. 하지만 1pm 설정의 경우처럼 1분 동안 차단되는 것과 반대로 4초 간격이 지날 때마다 계속 호출을 수행할 수 있습니다.