Creazione di una distribuzione di una release Canary
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.
È possibile creare un'implementazione di un rilascio Canary in API Gateway utilizzando la console API Gateway, la AWS CLI CLI o un SDK AWS.
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 il caching dell'API o associare una lista di controllo degli accessi Web AWS WAF alla fase, scegli Modifica nella sezione Dettagli fase. Per ulteriori informazioni, consulta Impostazioni della cache per REST API in Gateway API 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 Configurazione della registrazione dei log CloudWatch per REST API in Gateway API.
-
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.
Creazione di una distribuzione Canary con AWS CLI
Per creare una distribuzione canary per una nuova fase
-
Utilizza il seguente comando create-deployment per creare un’implementazione 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 } -
Utilizza il seguente comando create-deployment per creare una distribuzione canary per la fase
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
iddella distribuzione risultante identifica la versione di verifica dell'API per la release Canary. Di conseguenza, la fase associata è abilitata per la release Canary. -
(Facoltativo) Utilizza il seguente comando get-stage per visualizzare la rappresentazione della fase:
aws apigateway get-stage --rest-api-id acbd1234 --stage-name prodDi seguito è illustrata una rappresentazione dell'oggetto
Stagecome 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,val1eval2, rispettivamente. La variabile di fasesv0viene usata unicamente nella release di produzione e la variabile di fasesv2viene usata unicamente nella release Canary.
È anche possibile creare una distribuzione di rilascio canary da un’implementazione standard esistente aggiornando la fase per abilitare un canary.
Per creare una distribuzione di rilascio canary da un’implementazione esistente
-
Utilizza il comando create-deployment per creare un’implementazione senza un canary:
aws apigateway create-deployment \ --variables sv0=val0,sv1=val1 \ --rest-api-id abcd1234 \ --stage-name 'beta' -
Utilizza il comando update-stage per aggiornare la fase e abilitare un canary:
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é è stato abilitato un canary in una versione esistente dell’API, sia il rilascio di produzione (
Stage) sia il rilascio canary (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 valoredeploymentIdnella release Canary viene aggiornato al valoreiddella nuova distribuzione e il valoredeploymentIdnella release di produzione rimane invariato.