다음을 통해 공유


스냅샷

스냅샷 리소스는 API 버전 1.0에서 사용할 수 없습니다.

스냅샷은 이름으로 고유하게 식별되는 리소스입니다. 각 작업에 대한 세부 정보를 참조하세요.

작업

  • Get
  • 여러 목록
  • 생성
  • 보관/복구
  • 키-값 나열

필수 조건

  • 모든 HTTP 요청은 인증되어야 합니다. 인증 섹션을 참조하세요.
  • 모든 HTTP 요청은 명시적 api-version. 버전 관리 세션을 참조하세요.

구문

Snapshot

{
    "etag": [string],
    "name": [string],
    "status": [string, enum("provisioning", "ready", "archived", "failed")],
    "filters": [array<SnapshotFilter>],
    "composition_type": [string, enum("key", "key_label")],
    "created": [datetime ISO 8601],
    "size": [number, bytes],
    "items_count": [number],
    "tags": [object with string properties],
    "retention_period": [number, timespan in seconds],
    "expires": [datetime ISO 8601]
}

SnapshotFilter

{
  "key": [string],
  "label": [string]
}
{
  "key": [string],
  "label": [string],
  "tags": [array<string>]
}

스냅샷 가져오기

필수: {name}, {api-version}

GET /snapshots/{name}?api-version={api-version}

응답:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Mon, 03 Mar 2023 9:00:03 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Link: </kv?snapshot=prod-2023-03-20&api-version={api-version}>; rel="items"
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "prod-2023-03-20",
  "status": "ready",
  "filters": [
      {
          "key": "*",
          "label": null
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 7776000
}

제공된 이름의 스냅샷이 없으면 다음 응답이 반환됩니다.

HTTP/1.1 404 Not Found

가져오기(조건부)

클라이언트 캐싱을 향상시키려면 If-Match 또는 If-None-Match 요청 헤더를 사용합니다. 인수는 etag 스냅샷 표현의 일부입니다. 자세한 내용은 섹션 14.24 및 14.26을 참조하세요.

다음 요청은 현재 표현이 지정된 etag표현과 일치하지 않는 경우에만 스냅샷을 검색합니다.

GET /snapshot/{name}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "{etag}"

응답:

HTTP/1.1 304 NotModified

또는

HTTP/1.1 200 OK

스냅샷 나열

선택 사항: name (지정하지 않으면 모든 이름을 의미합니다.) 선택 사항: status (지정하지 않으면 상태를 의미합니다.)

GET /snapshots?name=prod-*&api-version={api-version} HTTP/1.1

응답:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8

자세한 옵션은 이 문서의 뒷부분에 있는 "필터링" 섹션을 참조하세요.

페이지 매김

반환된 항목 수가 응답 제한을 초과하면 결과가 페이지가 매겨집니다. 선택적 Link 응답 헤더를 따르고 탐색에 사용합니다 rel="next" . 또는 콘텐츠는 속성 형식의 @nextLink 다음 링크를 제공합니다. 연결된 URI는 api-version 인수를 포함합니다.

GET /snapshots?api-version={api-version} HTTP/1.1

응답:

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8
Link: <{relative uri}>; rel="next"
{
    "items": [
        ...
    ],
    "@nextLink": "{relative uri}"
}

필터링

namestatus 필터링의 조합이 지원됩니다. 선택적 namestatus 쿼리 문자열 매개 변수를 사용합니다.

GET /snapshots?name={name}&status={status}&api-version={api-version}

지원되는 필터

이름 필터 효과
name은 생략 또는 name=* 스냅샷을 모든 이름과 일치
name=abc abc라는 스냅샷과 일치
name=abc* 스냅샷을 abc로 시작하는 이름과 일치
name=abc,xyz 이름 abc 또는 xyz스냅샷 일치(CSV 5개로 제한)
상태 필터 효과
status은 생략 또는 status=* 스냅샷을 상태와 일치
status=ready 스냅샷을 준비 상태와 일치
status=ready,archived 준비된 상태 또는 보관된 상태(5 CSV로 제한됨)로 스냅샷 일치

예약 문자

*, , \,

예약 문자가 값의 일부인 \{Reserved Character}경우 . 예약되지 않은 문자도 이스케이프할 수 있습니다.

필터 유효성 검사

필터 유효성 검사에 실패하면 응답은 오류 세부 정보가 포함된 HTTP 400 입니다.

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
  "type": "https://azconfig.io/errors/invalid-argument",
  "title": "Invalid request parameter '{filter}'",
  "name": "{filter}",
  "detail": "{filter}(2): Invalid character",
  "status": 400
}

예제

  • 모두

    GET /snapshots?api-version={api-version}
    
  • 스냅샷 이름이 abc로 시작됩니다.

    GET /snapshot?name=abc*&api-version={api-version}
    
  • 스냅샷 이름은 abc시작하고 상태는 준비 또는 보관됨과 같습니다.

    GET /snapshot?name=abc*&status=ready,archived&api-version={api-version}
    

요청 관련 필드

선택적 $select 쿼리 문자열 매개 변수를 사용하고 요청된 필드의 쉼표로 구분된 목록을 제공합니다. $select 매개 변수를 생략하면 응답에 기본 세트가 포함됩니다.

GET /snapshot?$select=name,status&api-version={api-version} HTTP/1.1

스냅샷 만들기

parameters

속성 이름 Required Default value 유효성 검사
name 해당 없음 길이
     최대: 256
필터 해당 없음 개수
     최소: 1
     최대값: 3
filters[<index>].key 해당 없음
filters[<index>].label 아니요 null 다중 일치 레이블 필터(예: "*", "쉼표,구분됨")는 'key' 컴퍼지션 형식에서 지원되지 않습니다.
tags 아니요 {}
composition_type 아니요 key
retention_period 아니요 표준 계층
     2592000(30일)
무료 계층
     604800(7일)
표준 계층
     최소: 3600(1시간)
     최대값: 7776000(90일)
무료 계층
     최소: 3600(1시간)
     최대값: 604800(7일)
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "filters": [                        // required
    {
      "key": "app1/*",                // required
      "label": "prod"                 // optional
    }
  ],
  "tags": {                           // optional
    "tag1": "value1",
    "tag2": "value2",
  },
  "composition_type": "key",          // optional
  "retention_period": 2592000         // optional
}

응답:

HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "{name}",
  "status": "provisioning",
  "filters": [
      {
          "key": "app1/*",
          "label": "prod"
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 2592000
}
속성 이름 Required Default value 유효성 검사
name 해당 없음 길이
     최대: 256
필터 해당 없음 개수
     최소: 1
     최대값: 3
filters[<index>].key 해당 없음
filters[<index>].label 아니요 null 다중 일치 레이블 필터(예: "*", "쉼표,구분됨")는 'key' 컴퍼지션 형식에서 지원되지 않습니다.
filters[<index>].tags 아니요 null 개수
     최소: 0
     최대값: 5
tags 아니요 {}
composition_type 아니요 key
retention_period 아니요 표준 계층
     2592000(30일)
무료 계층
     604800(7일)
표준 계층
     최소: 3600(1시간)
     최대값: 7776000(90일)
무료 계층
     최소: 3600(1시간)
     최대값: 604800(7일)
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "filters": [                                // required
    {
      "key": "app1/*",                        // required
      "label": "prod",                        // optional
      "tags": ["group=g1", "default=true"]    // optional
    }
  ],
  "tags": {                                   // optional
    "tag1": "value1",
    "tag2": "value2",
  },
  "composition_type": "key",                  // optional
  "retention_period": 2592000                 // optional
}

응답:

HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
  "etag": "4f6dd610dd5e4deebc7fbaef685fb903",
  "name": "{name}",
  "status": "provisioning",
  "filters": [
      {
          "key": "app1/*",
          "label": "prod",
          "tags": ["group=g1", "default=true"]
      }
  ],
  "composition_type": "key",
  "created": "2023-03-20T21:00:03+00:00",
  "size": 2000,
  "items_count": 4,
  "tags": {
    "t1": "value1",
    "t2": "value2"
  },
  "retention_period": 2592000
}

새로 만든 스냅샷의 상태는 .입니다 provisioning. 스냅샷이 완전히 프로비전되면 상태가 업데이트됩니다 ready. 클라이언트는 연결된 키 값을 나열하기 전에 스냅샷이 준비될 때까지 기다리도록 스냅샷을 폴링할 수 있습니다. 작업에 대한 추가 정보를 쿼리하려면 폴링 스냅샷 만들기 섹션을 참조하세요.

스냅샷이 이미 있는 경우 다음 응답이 반환됩니다.

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset=utf-8
{
    "type": "https://azconfig.io/errors/already-exists",
    "title": "The resource already exists.",
    "status": 409,
    "detail": ""
}

폴링 스냅샷 만들기

스냅샷 만들기 요청의 응답은 헤더를 반환합니다 Operation-Location .

응답:

HTTP/1.1 201 Created
...
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}

스냅샷 프로비저닝 작업의 상태는 에 포함된 URI에서 Operation-Location찾을 수 있습니다. 클라이언트는 연결된 키 값을 나열하기 전에 스냅샷이 프로비전되도록 이 상태 개체를 폴링할 수 있습니다.

GET {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}

응답:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "id": "{id}",
    "status": "Succeeded",
    "error": null
}

스냅샷을 프로비전하는 동안 오류가 발생하면 속성에 error 오류를 설명하는 세부 정보가 포함됩니다.

{
    "id": "{name}",
    "status": "Failed",
    "error": {
      "code": "QuotaExceeded",
      "message": "The allotted quota for snapshot creation has been surpassed."
    }
}

보관(패치)

상태의 스냅샷은 ready 보관할 수 있습니다. 보관된 스냅샷에는 해당 스냅샷을 만들 때 설정된 보존 기간을 기준으로 만료 날짜가 할당됩니다. 만료 날짜가 지나면 스냅샷이 영구적으로 삭제됩니다. 만료 날짜 전에 언제든지 스냅샷의 항목을 계속 나열할 수 있습니다.

이미 archived 스냅샷을 보관해도 스냅샷에는 영향을 주지 않습니다.

  • 필수: {name}, {status}{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "status": "archived"
}

응답: 보관된 스냅샷 반환

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
  "etag": "33a0c9cdb43a4c2cb5fc4c1feede1c68",
  "name": "{name}",
  "status": "archived",
  ...
  "expires": "2023-08-11T21:00:03+00:00"
}

현재 또는 failed 상태에 있는 스냅샷을 provisioning 보관하는 것은 잘못된 작업입니다.

응답:

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
    "type": "https://azconfig.io/errors/invalid-state",
    "title": "Target resource state invalid.",
    "detail": "The target resource is not in a valid state to perform the requested operation.",
    "status": 409
}

복구(패치)

상태의 스냅샷을 archived 복구할 수 있습니다. 스냅샷이 복구되면 스냅샷의 만료 날짜가 제거됩니다.

이미 ready 스냅샷을 복구해도 스냅샷에는 영향을 주지 않습니다.

  • 필수: {name}, {status}{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
  "status": "ready"
}

응답: 복구된 스냅샷 반환

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
  "etag": "90dd86e2885440f3af9398ca392095b9",
  "name": "{name}",
  "status": "ready",
  ...
}

현재 또는 failed 상태에 있는 스냅샷을 provisioning 복구하는 것은 잘못된 작업입니다.

응답:

HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
    "type": "https://azconfig.io/errors/invalid-state",
    "title": "Target resource state invalid.",
    "detail": "The target resource is not in a valid state to perform the requested operation.",
    "status": 409
}

스냅샷 보관/복구(조건부)

경합 상태를 방지하려면 헤더를 사용 If-Match 하거나 If-None-Match 요청합니다. 인수는 etag 스냅샷 표현의 일부입니다. If-Match 또는 If-None-Match가 생략된 경우에는 작업이 무조건 수행됩니다.

다음 응답은 현재 표현이 지정된 표현과 일치하는 경우에만 리소스를 업데이트합니다 etag.

PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

다음 응답은 현재 표현이 지정된 표현과 일치하지 않는 경우에만 리소스를 업데이트합니다 etag.

PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"

응답

HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...

또는

HTTP/1.1 412 PreconditionFailed

스냅샷 키-값 나열

필수: {name}, {api-version}

GET /kv?snapshot={name}&api-version={api-version}

참고 항목

또는 상태가 아닌 ready archived 스냅샷의 항목을 나열하려고 하면 빈 목록 응답이 발생합니다.

요청 관련 필드

선택적 $select 쿼리 문자열 매개 변수를 사용하고 요청된 필드의 쉼표로 구분된 목록을 제공합니다. $select 매개 변수를 생략하면 응답에 기본 세트가 포함됩니다.

GET /kv?snapshot={name}&$select=key,value&api-version={api-version} HTTP/1.1