Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Puoi creare una distribuzione di una release Canary quando distribuisci l'API con impostazioni Canary come input aggiuntivo all'operazione di creazione della distribuzione.
Puoi anche creare una distribuzione di una release Canary da una distribuzione non Canary esistente effettuando una richiesta stage:update
per aggiungere le impostazioni Canary nella fase.
Quando crei una distribuzione di una release non Canary, puoi specificare un nome di fase non esistente. Se la fase specificata non esiste, API Gateway la crea. Non puoi tuttavia specificare un nome di fase non esistente quando crei una distribuzione di una release Canary. In questo caso si verificherà un errore e API Gateway non creerà una distribuzione della release Canary.
Puoi creare una distribuzione Canary Release in API Gateway utilizzando la console API Gateway AWS CLI, o un AWS SDK.
Argomenti
Creare una distribuzione Canary utilizzando la console API Gateway
Per usare la console API Gateway per creare una distribuzione di una release Canary, segui queste istruzioni:
Per creare la distribuzione di una release Canary iniziale
-
Accedere alla console API Gateway.
-
Crea una nuova REST API o scegline una esistente.
-
Nel riquadro di navigazione principale scegli Risorse, quindi seleziona Distribuisci l'API. Seguire le istruzioni visualizzate sullo schermo in Deploy API (Distribuisci API) per distribuire l'API in una nuova fase.
Al momento, l'API è stata distribuita in una fase della release di produzione. Configura quindi le impostazioni Canary nella fase e, se necessario, abilita il caching, imposta le variabili di fase o configura i log degli accessi o delle esecuzioni dell'API.
-
Per abilitare la memorizzazione nella cache delle API o associare un ACL AWS WAF web allo stage, nella sezione Dettagli dello stage, scegli Modifica. Per ulteriori informazioni, consulta Impostazioni della cache per REST APIs in API Gateway o Per associare un'ACL web AWS WAF ad una fase API di Gateway API tramite la console Gateway API.
-
Per configurare la registrazione degli accessi o delle esecuzioni, scegli Modifica nella sezione Log e tracciamento e segui le istruzioni visualizzate sullo schermo. Per ulteriori informazioni, consulta Configurare la CloudWatch registrazione per REST APIs in API Gateway.
-
Per impostare le variabili di fase, scegli la scheda Variabili di fase e segui le istruzioni visualizzate sullo schermo per aggiungere o modificare le variabili di fase. Per ulteriori informazioni, consulta Utilizzo delle variabili di fase per una REST API in Gateway API.
-
Scegli la scheda Canary, quindi seleziona Crea Canary. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda Canary.
-
In Impostazioni di Canary, inserisci in Canary la percentuale di richieste da deviare al Canary.
-
Se lo desideri, seleziona Cache della fase per attivare il caching per la release Canary. La cache non è disponibile per la release Canary fino a quando non viene abilitato il caching dell'API.
-
Per sovrascrivere le variabili di fase esistenti, inserisci in Sostituzione canary un nuovo valore per la variabile di fase.
Dopo l'inizializzazione della release Canary nella fase di distribuzione, puoi modificare l'API e testare le modifiche. Puoi ridistribuire l'API nella stessa fase in modo che sia la versione di base che quella aggiornata siano accessibili tramite la stessa fase. Di seguito viene descritto come fare.
Per distribuire la versione API più recente in una release Canary
-
Con ogni aggiornamento dell'API scegli Distribuisci l'API.
-
In Distribuisci l'API scegli la fase contenente un canary nell'elenco a discesa Fase della distribuzione.
-
(Facoltativo) Immetti una descrizione in Descrizione distribuzione.
-
Scegliere Deploy (Distribuisci) per inviare la versione API più recente alla release Canary.
-
Se lo desideri, riconfigura le impostazioni della fase, i log o le impostazioni Canary, come descritto in Per creare la distribuzione di una release Canary iniziale.
La release Canary punta ora alla versione più recente, mentre la release di produzione continua a puntare alla versione iniziale dell'API. Per canarySettings è ora presente un nuovo valore deploymentId, mentre la fase ha ancora il valore deploymentId iniziale. In background la console chiama stage:update.
Crea una distribuzione Canary utilizzando il AWS CLI
Per creare una distribuzione canaria per una nuova fase
-
Utilizzate il seguente comando create-deployment per creare una distribuzione con due variabili di fase, ma senza un canary:
aws apigateway create-deployment \ --variables sv0=val0,sv1=val1 \ --rest-api-id abcd1234 \ --stage-name 'prod'
L'output sarà simile al seguente:
{ "id": "du4ot1", "createdDate": 1511379050 }
-
Utilizzate il seguente comando create-deployment per creare una distribuzione Canary sullo stage:
prod
aws apigateway create-deployment \ --rest-api-id abcd1234 \ --canary-settings percentTraffic=10.5,stageVariableOverrides={sv1='val2',sv2='val3'},useStageCache=false \ --stage-name 'prod'
L'output sarà simile al seguente:
{ "id": "a6rox0", "createdDate": 1511379433 }
Il valore
id
della distribuzione risultante identifica la versione di verifica dell'API per la release Canary. Di conseguenza, la fase associata è abilitata per la release Canary. -
(Facoltativo) Utilizzate il seguente comando get-stage per visualizzare la rappresentazione sullo stage:
aws apigateway get-stage --rest-api-id acbd1234 --stage-name prod
Di seguito è illustrata una rappresentazione dell'oggetto
Stage
come output del comando:{ "stageName": "prod", "variables": { "sv0": "val0", "sv1": "val1" }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "deploymentId": "du4ot1", "lastUpdatedDate": 1511379433, "createdDate": 1511379050, "canarySettings": { "percentTraffic": 10.5, "deploymentId": "a6rox0", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" } }, "methodSettings": {} }
In questo esempio la versione di base dell'API usa le variabili di fase
{"sv0":val0", "sv1":val1"}
, mentre la versione di test usa le variabili di fase{"sv1":val2", "sv2":val3"}
. Sia la release di produzione che la release Canary usano la stessa variabile di fasesv1
, ma con valori diversi,val1
eval2
, rispettivamente. La variabile di fasesv0
viene usata unicamente nella release di produzione e la variabile di fasesv2
viene usata unicamente nella release Canary.
È inoltre possibile creare una distribuzione Canary Release a partire da una distribuzione regolare esistente aggiornando lo stage per abilitare un Canary.
Per creare una distribuzione Canary Release da una distribuzione esistente
-
Usa il comando create-deployment per creare una distribuzione senza un canary:
aws apigateway create-deployment \ --variables sv0=val0,sv1=val1 \ --rest-api-id abcd1234 \ --stage-name 'beta'
-
Usa il comando update-stage per aggiornare lo stage e abilitare un canarino:
aws apigateway update-stage \ --rest-api-id abcd1234 \ --stage-name 'beta' \ --patch-operations '[{ "op": "replace", "value": "0.0", "path": "/canarySettings/percentTraffic" }, { "op": "copy", "from": "/canarySettings/stageVariableOverrides", "path": "/variables" }, { "op": "copy", "from": "/canarySettings/deploymentId", "path": "/deploymentId" }]'
L'output sarà simile al seguente:
{ "stageName": "beta", "variables": { "sv0": "val0", "sv1": "val1" }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "deploymentId": "cifeiw", "lastUpdatedDate": 1511381930, "createdDate": 1511380879, "canarySettings": { "percentTraffic": 10.5, "deploymentId": "cifeiw", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" } }, "methodSettings": {} }
Poiché hai abilitato un canary su una versione esistente dell'API, sia la release di produzione () che la versione canary (
Stage
canarySettings
) puntano alla stessa implementazione. Dopo aver modificato l'API e averla distribuita di nuovo in questa fase, la nuova versione sarà nella release Canary, mentre la versione di base rimane nella release di produzione. Ciò si manifesta nell'evoluzione della fase quando il valoredeploymentId
nella release Canary viene aggiornato al valoreid
della nuova distribuzione e il valoredeploymentId
nella release di produzione rimane invariato.