Condividi tramite


Snapshot

La risorsa snapshot non è disponibile nell'API versione 1.0.

Uno snapshot è una risorsa identificata in modo univoco dal nome. Vedere i dettagli per ogni operazione.

Operazioni

  • Recupero
  • Elencare più
  • Creazione
  • Archivio/Ripristino
  • Elencare i valori chiave

Prerequisiti

  • Tutte le richieste HTTP devono essere autenticate. Vedere la sezione relativa all'autenticazione.
  • Tutte le richieste HTTP devono fornire esplicitamente api-version. Vedere la sezione relativa al controllo delle versioni.

Sintassi

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>]
}

Ottenere uno snapshot

Obbligatorio: {name}, {api-version}

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

Risposte:

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
}

Se non esiste uno snapshot con il nome specificato, viene restituita la risposta seguente:

HTTP/1.1 404 Not Found

Get (in modo condizionale)

Per migliorare la memorizzazione nella cache del client, usare If-Match o If-None-Match richiedere intestazioni. L'argomento etag fa parte della rappresentazione dello snapshot. Per altre informazioni, vedere le sezioni 14.24 e 14.26.

La richiesta seguente recupera lo snapshot solo se la rappresentazione corrente non corrisponde all'oggetto specificato etag:

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

Risposte:

HTTP/1.1 304 NotModified

O

HTTP/1.1 200 OK

Elencare gli snapshot

Facoltativo: name se non specificato, implica qualsiasi nome. Facoltativo: status se non specificato, implica qualsiasi stato.

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

Risposta:

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

Per altre opzioni, vedere la sezione "Filtro" più avanti in questo articolo.

Impaginazione

Il risultato viene impaginato se il numero di elementi restituiti supera il limite di risposta. Seguire le intestazioni di risposta facoltative Link e usare rel="next" per la navigazione. In alternativa, il contenuto fornisce un collegamento successivo sotto forma di @nextLink proprietà . L'URI collegato include l'argomento api-version .

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

Risposta:

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}"
}

Filtri

È supportata una combinazione di name filtri e status . Usare i parametri facoltativi name e status della stringa di query.

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

Filtri supportati

Filtro dei nomi Effetto
name è omesso oppure name=* Trova la corrispondenza degli snapshot con qualsiasi nome
name=abc Corrisponde a uno snapshot denominato abc
name=abc* Trova la corrispondenza degli snapshot con nomi che iniziano con abc
name=abc,xyz Trova la corrispondenza degli snapshot con nomi abc o xyz (limitato a 5 CSV)
Filtro di stato Effetto
status è omesso oppure status=* Trova la corrispondenza degli snapshot con qualsiasi stato
status=ready Trova la corrispondenza degli snapshot con uno stato pronto
status=ready,archived Trova la corrispondenza degli snapshot con stato pronto o archiviato (limitato a 5 CSV)

Caratteri riservati

*, \, ,

Se un carattere riservato fa parte del valore , deve essere preceduto da un carattere di escape tramite \{Reserved Character}. È anche possibile eseguire l'escape dei caratteri non validi.

Convalida dei filtri

Se la convalida del filtro non riesce, la risposta è HTTP 400 con i dettagli dell'errore:

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
}

Esempi

  • Tutte le date

    GET /snapshots?api-version={api-version}
    
  • Il nome dello snapshot inizia con abc

    GET /snapshot?name=abc*&api-version={api-version}
    
  • Il nome dello snapshot inizia con abc e lo stato è pronto o archiviato

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

Richiedi campi specifici

Usare il parametro facoltativo $select della stringa di query e specificare un elenco delimitato da virgole di campi richiesti. Se il $select parametro viene omesso, la risposta contiene il set predefinito.

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

Crea snapshot

parameters

Nome proprietà Richiesto Default value Convalida
name yes n/d Lunghezza
     Massimo: 256
filtri yes n/d Contare
     Minimo: 1
     Massimo: 3
filters[<index>].key yes n/d
filters[<index>].label no Null I filtri delle etichette a corrispondenza multipla (ad esempio: "*", "virgola,separati") non sono supportati con il tipo di composizione 'key'.
tag no {}
composition_type no key
retention_period no Livello Standard
     2592000 (30 giorni)
Livello gratuito
     604800 (sette giorni)
Livello Standard
     Minimo: 3600 (un'ora)
     Massimo: 7776000 (90 giorni)
Livello gratuito
     Minimo: 3600 (un'ora)
     Massimo: 604800 (sette giorni)
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
}

Risposte:

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
}
Nome proprietà Richiesto Default value Convalida
name yes n/d Lunghezza
     Massimo: 256
filtri yes n/d Contare
     Minimo: 1
     Massimo: 3
filters[<index>].key yes n/d
filters[<index>].label no Null I filtri delle etichette a corrispondenza multipla (ad esempio: "*", "virgola,separati") non sono supportati con il tipo di composizione 'key'.
filters[<index>].tags no Null Contare
     Minimo: 0
     Massimo: 5
tag no {}
composition_type no key
retention_period no Livello Standard
     2592000 (30 giorni)
Livello gratuito
     604800 (7 giorni)
Livello Standard
     Minimo: 3600 (1 ora)
     Massimo: 7776000 (90 giorni)
Livello gratuito
     Minimo: 3600 (1 ora)
     Massimo: 604800 (7 giorni)
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
}

Risposte:

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
}

Lo stato dello snapshot appena creato è provisioning. Dopo il provisioning completo dello snapshot, lo stato viene aggiornato a ready. I client possono eseguire il polling dello snapshot per attendere che lo snapshot sia pronto prima di elencare i relativi valori di chiave associati. Per eseguire query su informazioni aggiuntive sull'operazione, fare riferimento alla sezione relativa alla creazione di snapshot di polling.

Se lo snapshot esiste già, viene restituita la risposta seguente:

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": ""
}

Creazione di snapshot di polling

La risposta di una richiesta di creazione snapshot restituisce un'intestazione Operation-Location .

Risposte:

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

Lo stato dell'operazione di provisioning dello snapshot è disponibile nell'URI contenuto in Operation-Location. I client possono eseguire il polling di questo oggetto di stato per assicurarsi che venga effettuato il provisioning di uno snapshot prima di elencare i valori chiave associati.

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

Risposta:

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

Se si verifica un errore durante il provisioning dello snapshot, la error proprietà contiene dettagli che descrivono l'errore.

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

Archivio (patch)

È possibile archiviare uno snapshot nello ready stato . A uno snapshot archiviato viene assegnata una data di scadenza, in base al periodo di conservazione stabilito al momento della creazione. Al termine della data di scadenza, lo snapshot verrà eliminato definitivamente. In qualsiasi momento prima della data di scadenza, gli elementi dello snapshot possono comunque essere elencati.

L'archiviazione di uno snapshot già archived non influisce sullo snapshot.

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

Risposta: Restituire lo snapshot archiviato

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"
}

L'archiviazione di uno snapshot attualmente nello provisioning stato o failed è un'operazione non valida.

Risposta:

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
}

Ripristino (patch)

È possibile recuperare uno snapshot nello archived stato . Dopo il ripristino dello snapshot, la data di scadenza dello snapshot viene rimossa.

Il ripristino di uno snapshot già ready non influisce sullo snapshot.

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

Risposta: Restituire lo snapshot ripristinato

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

Il ripristino di uno snapshot attualmente nello provisioning stato o failed è un'operazione non valida.

Risposta:

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
}

Archivio/ripristino dello snapshot (in modo condizionale)

Per evitare race condition, usare If-Match o If-None-Match richiedere intestazioni. L'argomento etag fa parte della rappresentazione dello snapshot. Se If-Match o If-None-Match vengono omessi, l'operazione è incondizionato.

La risposta seguente aggiorna la risorsa solo se la rappresentazione corrente corrisponde all'oggetto specificato etag:

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

La risposta seguente aggiorna la risorsa solo se la rappresentazione corrente non corrisponde all'oggetto specificato etag:

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

Risposte

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

O

HTTP/1.1 412 PreconditionFailed

Elencare i valori chiave-chiave snapshot

Obbligatorio: {name}, {api-version}

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

Nota

Il tentativo di elencare gli elementi di uno snapshot che non si trova nello ready stato o archived genererà una risposta di elenco vuota.

Richiedi campi specifici

Usare il parametro facoltativo $select della stringa di query e specificare un elenco delimitato da virgole di campi richiesti. Se il $select parametro viene omesso, la risposta contiene il set predefinito.

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