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à.
Modelli di implementazione
Per rilasciare una nuova versione dell'applicazione AWS Lambda Web Function, è necessario creare una nuova revisione. Gli endpoint sono autoDeploymentMode impostati per LatestRevisionindirizzare tutto il traffico verso di essa dopo che è diventato attivo. Gli endpoint autoDeploymentMode impostati su Disabilitato continuano a fornire le revisioni correnti finché non aggiorni i pesi delle revisioni. Puoi controllare il modo in cui il traffico passa dalla revisione corrente a quella nuova utilizzando la modalità di distribuzione automatica dell'endpoint e i pesi di revisione. Le sezioni seguenti spiegano sia le modalità di distribuzione automatica, i modelli di distribuzione comuni (canary, blue-green e rollback) sia le regole che regolano i pesi di revisione.
Le modifiche e sono aggiornamenti asincroni degli endpoint. autoDeploymentMode revisionWeights Attendi che updateStatus lo siano Successful prima di valutare la distribuzione o inviare un altro aggiornamento dell'endpoint. Se un aggiornamento fallisce, ne updateStatusReason descrive la causa.
Il diagramma seguente mostra una distribuzione Canary su un dispositivo la cui modalità di distribuzione automatica è disabilitata. Ogni modifica di peso è un aggiornamento asincrono dell'endpoint.
-
La revisione 1 inizia con il 100% del traffico.
-
Indirizzi il 10 percento del traffico verso la revisione 2 e lo monitora.
-
Se la revisione 2 supera i controlli, indirizzerai tutto il traffico verso di essa.
-
Se la revisione 2 fallisce, ripristini i pesi alla revisione 1 al 100%.
Auto-deployment modalità
L'autoDeploymentModeimpostazione su un endpoint controlla se Lambda indirizza automaticamente il traffico verso nuove revisioni durante la distribuzione. Questa impostazione viene impostata al momento della creazione dell'endpoint e può essere modificata su un endpoint esistente.
Se si ometteautoDeploymentMode, l'impostazione predefinita è. Disabled LatestRevisionè supportato solo per gli HomeRegion endpoint, quindi MultiRegion gli endpoint lo utilizzano sempre. PerRegion Disabled Quando si utilizzaDisabled, si imposta revisionWeights sull'endpoint, come descritto in. Pesi delle revisioni
- LatestRevision
-
Ogni volta che una nuova revisione diventa attiva, Lambda indirizza il 100% del traffico dell'endpoint verso di essa. Non è necessario aggiornare i pesi delle revisioni e non è possibile impostare i pesi delle revisioni mentre l'endpoint è in questa modalità. Utilizzate questa modalità per ambienti di sviluppo e gestione temporanea in cui desiderate una distribuzione automatica senza intervento manuale.
- Disabilitato
-
Lambda non modifica il routing del traffico quando si crea una nuova revisione. Puoi controllare manualmente il routing del traffico impostando i pesi di revisione. Utilizzate questa modalità per gli ambienti di produzione in cui desiderate controllare l'implementazione di nuove revisioni con schemi di distribuzione canarini o blu-verdi.
Per modificare la modalità di distribuzione automatica (AWS CLI)
-
Usa AWS Command Line Interface (AWS CLI) per aggiornare l'endpoint e disabilitare la distribuzione automatica.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --auto-deployment-mode Disabled -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Passaggio da una modalità all’altra
Quando passi da LatestRevisionDisabilitato senza specificare i pesi di revisione, l'attuale routing del traffico rimane invariato dopo il completamento dell'aggiornamento. La revisione a cui l'endpoint indirizzava il traffico prima dell'aggiornamento continua a ricevere il 100% del traffico, anche dopo la creazione di nuove revisioni. Mantiene quel traffico finché non aggiorni i pesi delle revisioni. Puoi anche cambiare modalità e impostare i pesi di revisione nella stessa richiesta. UpdateWebFunctionEndpoint
Quando passi da Disabilitato a LatestRevision, Lambda aggiorna l'endpoint per indirizzare il 100% del traffico alla revisione più recente. L'ultima revisione deve essere attiva. Se è in sospeso o non riuscita, la richiesta ha esito negativo e viene generato un errore di conflitto. Una volta completato l'aggiornamento, i pesi di revisione precedentemente configurati non sono più validi.
Pesi delle revisioni
Quando la modalità di distribuzione automatica è disattivata, è possibile controllare il routing del traffico assegnando pesi alle revisioni. Lambda distribuisce il traffico tra le revisioni in proporzione ai relativi pesi.
I pesi di revisione sono un'impostazione sull'endpoint (la revisionWeights proprietà), con cui si modifica. UpdateWebFunctionEndpoint Non sono un'impostazione della revisione.
I pesi delle revisioni seguono queste regole:
-
Ogni peso è un numero intero compreso tra 1 e 100.
-
La somma dei pesi in una richiesta deve essere esattamente 100.
-
Ogni revisione può comparire una sola volta nei pesi.
-
Ogni revisione dei pesi deve essere nello stato Attivo al momento dell'impostazione dei pesi. In caso contrario, l'API rifiuta la richiesta.
-
Un endpoint indirizza il traffico verso un massimo di due revisioni contemporaneamente.
-
Nessun peso ha un valore predefinito. Per indirizzare tutto il traffico verso una revisione, specifica solo quella revisione con un peso di 100. Una revisione non ponderata non riceve traffico da quell'endpoint.
Gli identificatori di revisione vengono generati da Lambda quando si crea una revisione. Per trovare gli identificatori di revisione per la tua funzione Web, usa il seguente comando:
aws lambda-web list-web-function-revisions \ --function-namemy-web-app
La risposta elenca le revisioni in ordine dalla più recente alla meno recente, inclusi gli identificatori, i timestamp di creazione e lo stato corrente.
Modelli di implementazione
I seguenti modelli di distribuzione utilizzano i pesi di revisione per controllare il passaggio del traffico dalla revisione corrente a una nuova revisione. Questi modelli richiedono che la modalità di distribuzione automatica dell'endpoint (l'impostazione dell'autoDeploymentModeendpoint) sia disabilitata. L'endpoint creato dal comando utilizza. aws lambda-web deploy LatestRevision Per utilizzare questi modelli su quell'endpoint, per prima cosa impostalo su Disabilitato, come mostrato in. Auto-deployment modalità
Implementazione Canary
Una distribuzione Canary invia una piccola percentuale di traffico alla nuova revisione in modo da poter monitorare gli errori prima di instradare tutto il traffico. Se la nuova revisione presenta problemi, ne risente solo una piccola parte delle richieste.
Per eseguire un dispiegamento canarino (AWS CLI)
-
Crea una nuova revisione con il codice aggiornato.
aws lambda-web create-web-function-revision \ --function-namemy-web-app\ --build-config '{ "codeConfig": { "s3Object": { "bucket": "my-bucket", "key": "my-app-v2.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }' \ --service-config '{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" }'Annota l'identificatore di revisione nella risposta.
Una nuova revisione non copia le impostazioni dalla revisione corrente. Qualsiasi
serviceConfigimpostazione omessa assume il suo valore predefinito, ad esempio 30 e nessunatimeoutSecondsvariabile di ambiente. Include tutte le impostazioni utilizzate dalla revisione corrente, ad esempioenvironmentVariables,timeoutSecondsmaxConcurrencyPerEnvironment, e.telemetryConfigPer vedere la configurazione della revisione corrente, esegui.aws lambda-web get-web-function-revision -
Attendi che la nuova revisione sia attiva. L'API rifiuta i pesi di revisione che fanno riferimento a una revisione che non è attiva.
aws lambda-web wait web-function-revision-active \ --function-namemy-web-app\ --revision-idrev-def45 -
Indirizza il 10% del traffico verso la nuova revisione e il 90% verso la revisione corrente.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 90}, {"revisionId": "rev-def45", "weight": 10}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Monitora la nuova revisione tramite i registri delle applicazioni o le metriche personalizzate. Includi in essi un identificatore di build o revisione che controlli tu. Le metriche delle funzioni Web non includono una dimensione di revisione. Di conseguenza, non possono separare gli errori canarini dagli errori della revisione corrente. Per informazioni dettagliate, vedi Utilizzo CloudWatch delle metriche con Lambda Web Functions. Se il canarino soddisfa le soglie di errore e latenza definite prima dell'implementazione, aumentane il peso.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 50}, {"revisionId": "rev-def45", "weight": 50}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Quando sei sicuro che la nuova revisione sia corretta, indirizza tutto il traffico verso di essa.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-def45", "weight": 100}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Blue-green distribuzione
Una distribuzione blu-verde mantiene la revisione corrente al traffico mentre si convalida la nuova revisione, quindi passa tutto il traffico alla nuova revisione in un unico aggiornamento dell'endpoint. La procedura seguente esegue la convalida con una divisione uniforme del traffico. Per eseguire la convalida senza traffico di produzione, utilizzate un endpoint di test separato, come descritto in. Considerazioni sull'implementazione
Per eseguire una distribuzione blu-verde (AWS CLI)
-
Crea una nuova revisione con il codice aggiornato e attendi che sia attiva. Usa gli stessi comandi mostrati nella precedente procedura di distribuzione di Canary.
-
Suddividi il traffico in modo uniforme tra le due revisioni.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-abc12", "weight": 50}, {"revisionId": "rev-def45", "weight": 50}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint -
Monitora entrambe le revisioni tramite i registri delle applicazioni o le metriche personalizzate. Includi in esse un identificatore di build o revisione che controlli tu. Quando la nuova revisione soddisfa i criteri di integrità definiti prima dell'implementazione, indirizza tutto il traffico verso di essa.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --revision-weights '[{"revisionId": "rev-def45", "weight": 100}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Tornare indietro
Se rilevi problemi con una nuova revisione (tassi di errore elevati, maggiore latenza), puoi eseguire il rollback con un singolo aggiornamento dell'endpoint che indirizza tutto il traffico verso la revisione precedente ritenuta valida.
Ripristino della modalità LatestRevision
Sebbene sia disponibile la modalità di distribuzione automatica di un endpoint LatestRevision, una richiesta che imposta solo i pesi di revisione ha esito negativo. La procedura seguente imposta la modalità di distribuzione automatica su Disabilitata e i pesi di revisione nella stessa richiesta, in modo che funzioni in entrambe le modalità.
L'endpoint rimane quindi in modalità Disabilitata finché non viene modificato.
Per tornare a una revisione precedente (AWS CLI)
-
Aggiorna l'endpoint per indirizzare il 100% del traffico verso la revisione riconosciuta valida e imposta la modalità di distribuzione automatica su Disabilitata.
aws lambda-web update-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint\ --auto-deployment-mode Disabled \ --revision-weights '[{"revisionId": "rev-abc12", "weight": 100}]' -
Attendi il completamento dell'aggiornamento dell'endpoint.
aws lambda-web wait web-function-endpoint-updated \ --function-namemy-web-app\ --endpoint-namemy-endpoint
Una volta completato l'aggiornamento, Lambda interrompe l'indirizzamento delle nuove richieste alla revisione problematica. In-flight le richieste relative a quella revisione terminano normalmente. Per ulteriori informazioni sullo stato di aggiornamento degli endpoint, vedere. Stati dell'endpoint
Se la revisione alla quale si esegue il rollback ha pochi o nessun ambiente di esecuzione in esecuzione, Lambda la ridimensiona man mano che il traffico si sposta verso di essa. Le richieste possono attendere l'inizializzazione degli ambienti di esecuzione, il che aumenta la latenza. Le richieste possono comunque fallire a causa di errori di avvio, del limite di velocità o degli ambienti massimi dell'endpoint o della quota vCPU dell'account. Alcuni di questi errori restituiscono risposte HTTP 429.
Considerazioni sull'implementazione
- Cosa fa scattare una nuova revisione?
-
Lambda crea una nuova revisione quando chiami.
CreateWebFunctionRevisionCiò include la distribuzione di un nuovo codice applicativo e la modifica delle impostazioni di configurazione come timeout, concorrenza o variabili di ambiente. Ogni modifica produce una revisione immutabile. - Posso testare una nuova revisione prima di indirizzare il traffico di produzione verso di essa?
-
Sì. È possibile richiamare una revisione solo tramite un endpoint, quindi esistono due approcci:
-
Endpoint di test dedicato: crea un endpoint separato per i test. Indirizza innanzitutto il traffico verso la nuova revisione sull'endpoint di test (impostando i pesi di revisione dell'endpoint di test), convalidala e quindi aggiorna i pesi dell'endpoint di produzione per includere la nuova revisione.
-
Peso minimo: assegna alla nuova revisione un peso dell'1% sull'endpoint di produzione. Ciò invia una piccola parte del traffico di produzione alla nuova revisione in modo da poter monitorare gli errori con un impatto minimo sui clienti.
-
- Cosa succede alle revisioni che non rientrano nei pesi di revisione?
-
Una revisione che non rientra nei pesi di revisione di un endpoint non riceve traffico da quell'endpoint. Un altro endpoint della stessa funzione Web può ancora indirizzarlo verso di esso. La revisione rimane attiva finché non viene eliminata o finché la pulizia automatica non la rimuove. Passa a Failed se Lambda perde l'accesso al suo oggetto Amazon S3. Per la pulizia automatica, consulta. Limiti di revisione e pulizia automatica
- Come posso identificare la revisione più recente?
-
Chiama
ListWebFunctionRevisions. La risposta elenca le revisioni in ordine decrescente dicreatedAt, quindi la prima revisione dell'elenco è la più recente. - Posso eliminare un endpoint mentre sta instradando il traffico?
-
Sì. Quando elimini un endpoint, Lambda interrompe l'instradamento di nuove richieste verso quell'endpoint e le richieste al nome di dominio dell'endpoint vengono rifiutate dopo che l'eliminazione ha effetto. Le revisioni stesse non sono interessate e possono ancora essere utilizzate da altri endpoint.
- Posso eliminare una revisione mentre riceve traffico?
-
No. Se un endpoint indirizza il traffico verso la revisione, incluso quando la
regionalEndpointsproprietà di unMultiRegiono di unPerRegionendpoint fa riferimento alla revisione, laDeleteWebFunctionRevisionrichiesta ha esito negativo e viene generato un errore di conflitto. Per eliminare la revisione, aggiorna innanzitutto i pesi di revisione dell'endpoint per rimuoverla dal routing del traffico su ogni endpoint, quindi eliminala. Poiché Lambda blocca l'eliminazione mentre a una revisione è assegnato un peso, l'eliminazione di una revisione non modifica mai la distribuzione del traffico di un endpoint.