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à.
Aggiornamento dei parametri del servizio Amazon ECS
Dopo aver creato un servizio, a volte potrebbe essere necessario aggiornare i parametri del servizio, ad esempio il numero di attività.
Quando il service scheduler avvia nuove attività, determina il posizionamento delle attività nel cluster con la seguente logica.
-
Determina quali istanze di container nel cluster possono supportare la definizione delle attività del servizio. Ad esempio, hanno la CPU, la memoria, le porte e gli attributi di istanza del contenitore richiesti.
-
Per impostazione predefinita, il service scheduler tenta di bilanciare le attività tra le zone di disponibilità in questo modo, anche se è possibile scegliere una strategia di posizionamento diversa.
-
Ordina le istanze di container valide in base al minor numero di attività in esecuzione per questo servizio nella stessa zona di disponibilità dell'istanza. Ad esempio, se nella zona A è presente un'attività del servizio in esecuzione e nelle zone B e C nessuna, le istanze di container valide nella zona B o C sono considerate ottimali per il posizionamento.
-
Posizionare la nuova attività del servizio in un'istanza di container valida in una zona di disponibilità ottimale (in base alle fasi precedenti), favorendo le istanze di container con il minor numero di attività in esecuzione per questo servizio.
-
Quando il service scheduler interrompe l'esecuzione delle attività, tenta di mantenere l'equilibrio tra le zone di disponibilità del cluster utilizzando la seguente logica:
-
Ordina le istanze del contenitore in base al maggior numero di attività in esecuzione per questo servizio nella stessa zona di disponibilità dell'istanza. Ad esempio, se nella zona A è presente un'attività del servizio in esecuzione e nelle zone B e C ne sono presenti due, le istanze di container nella zona B o C sono considerate ottimali per l'arresto.
-
Arrestare l'attività del servizio in un'istanza di container in una zona di disponibilità ottimale (in base alle fasi precedenti), favorendo le istanze di container con il maggior numero di attività in esecuzione per questo servizio.
Utilizza l'elenco per determinare se è possibile modificare il parametro del servizio.
- Ribilanciamento della zona di disponibilità
-
Indica se utilizzare il ribilanciamento della zona di disponibilità per il servizio.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Strategia del fornitore di capacità
-
I dettagli di una strategia di un provider di capacità. È possibile impostare un provider di capacità quando si crea un cluster, si esegue un'attività o si aggiorna un servizio.
Quando si utilizza Fargate, i fornitori di capacità sono
FARGATE
o.FARGATE_SPOT
Quando utilizzi Amazon EC2, i fornitori di capacità sono gruppi di Auto Scaling.
Puoi cambiare fornitore di capacità per distribuzioni continue e implementazioni blu/verdi.
L'elenco seguente fornisce le transizioni valide:
-
Aggiorna il tipo di lancio Fargate a un provider di capacità di gruppo Auto Scaling.
-
Aggiorna il tipo di EC2 lancio di Amazon a un provider di capacità Fargate.
-
Aggiorna il provider di capacità Fargate a un fornitore di capacità di gruppo Auto Scaling.
-
Aggiorna il fornitore EC2 di capacità Amazon a un fornitore di capacità Fargate.
-
Aggiornate il gruppo Auto Scaling o il provider di capacità Fargate al tipo di avvio. Quando si utilizza la CLI o l'API, si passa un elenco vuoto nel
capacityProviderStrategy
parametro.
-
- Cluster
-
Non è possibile modificare il nome del cluster.
- Configurazione della distribuzione
-
La configurazione di distribuzione include gli CloudWatch allarmi e l'interruttore automatico utilizzati per rilevare i guasti e la configurazione richiesta.
L'interruttore di distribuzione determina se una distribuzione del servizio avrà esito negativo se il servizio non riesce a raggiungere uno stato stazionario. Se si utilizza l'interruttore automatico di distribuzione, la distribuzione di un servizio passerà a uno stato di errore e interromperà l'avvio di nuove attività. Se si utilizza l'opzione di rollback, quando la distribuzione di un servizio fallisce, il servizio viene ripristinato all'ultima distribuzione completata correttamente.
Quando aggiorni un servizio che utilizza Amazon ECS circuit breaker, Amazon ECS crea una distribuzione e una revisione del servizio. Queste risorse consentono di visualizzare informazioni dettagliate sulla cronologia dei servizi. Per ulteriori informazioni, consulta Visualizza la cronologia dei servizi utilizzando le distribuzioni di servizi Amazon ECS.
Il pianificatore del servizio utilizza i parametri di percentuale minima di attività integre e di percentuale massima (nella configurazione di implementazione del servizio) per determinare la strategia di distribuzione.
Se un servizio utilizza il tipo di distribuzione rolling update (
ECS
), la percentuale minima di integrità rappresenta un limite inferiore al numero di attività di un servizio che devono rimanere nelloRUNNING
stato durante una distribuzione, come percentuale del numero di attività desiderato (arrotondato al numero intero più vicino). Il parametro si applica anche quando tutte le istanze del contenitore sono nelloDRAINING
stato se il servizio contiene attività che utilizzano il tipo di EC2 avvio. Utilizza questo parametro per eseguire l'implementazione senza impiegare capacità aggiuntiva del cluster. Ad esempio, se il servizio ha un numero desiderato di quattro attività e una percentuale minima di attività integre del 50%, lo scheduler può arrestare due attività esistenti per liberare capacità del cluster prima di avviare due nuove attività. Il servizio considera le attività idonee per i servizi che non utilizzano un sistema di bilanciamento del carico se si trovano nelloRUNNING
stato. Il servizio considera integre le attività per i servizi che utilizzano un sistema di bilanciamento del carico se si trovanoRUNNING
nello stato in cui si trovano e vengono segnalate come integre dal sistema di bilanciamento del carico. Il valore predefinito per la percentuale minima di integrità è 100%.Se un servizio utilizza il tipo di distribuzione rolling update (
ECS
), il parametro della percentuale massima rappresenta un limite massimo al numero di attività di un servizio consentiteSTOPPING
nello statoPENDING
, o durante una distribuzioneRUNNING
, come percentuale del numero desiderato di attività (arrotondato per difetto al numero intero più vicino). Il parametro si applica anche quando tutte le istanze del contenitore sono nelloDRAINING
stato se il servizio contiene attività che utilizzano il tipo di EC2 avvio. Utilizza questo parametro per definire le dimensioni del batch di implementazione. Ad esempio, se il servizio ha un numero desiderato di quattro attività e un valore percentuale massimo del 200%, lo scheduler può avviare quattro nuove attività prima di arrestare le quattro precedenti, a condizione che le risorse del cluster necessarie per questa operazione siano disponibili. Il valore predefinito per la percentuale massima è 200%.Quando il pianificatore del servizio sostituisce un'attività durante un aggiornamento, se il servizio utilizza un load balancer, rimuove prima l'attività da tale sistema e attende la fine delle connessioni. Quindi, viene emesso l'equivalente del comando docker stop ai container in esecuzione nell'attività. Questo determina un segnale
SIGTERM
e un timeout della durata di 30 secondi, dopo il quale viene inviato un segnaleSIGKILL
e i container vengono forzatamente arrestati. Se il container gestisce il segnaleSIGTERM
normalmente ed esce entro 30 secondi dalla ricezione, non viene inviato un segnaleSIGKILL
. Il pianificatore del servizio avvia e arresta le attività secondo quanto definito dalle impostazioni di percentuale minima di attività integre e percentuale massima.Il pianificatore di servizi sostituisce inoltre le attività ritenute non integre dopo l'esito negativo di un controllo dell'integrità del container o di un sistema di bilanciamento del carico del gruppo di destinazione. Questa sostituzione dipende dai parametri di definizione del servizio
maximumPercent
edesiredCount
. Se un'attività è contrassegnata come non integra, il pianificatore di servizi avvierà innanzitutto un'attività di sostituzione. Quindi, accade quanto segue.Se lo stato di integrità dell'attività sostitutiva è pari a
HEALTHY
, l'utilità di pianificazione del servizio interrompe l'attività non integraSe lo stato di integrità dell'attività di sostituzione è
UNHEALTHY
, il pianificatore interromperà l'attività di sostituzione non integra o l'attività esistente non integra per far sì che il numero totale delle attività sia pari adesiredCount
.
Se il parametro
maximumPercent
impedisce al pianificatore di avviare un'attività di sostituzione, il pianificatore interromperà un'attività non integra alla volta, in modo casuale, per liberare spazio, e poi avvierà un'attività di sostituzione. Il processo di avvio e arresto continua fino a quando tutte le attività non integre vengono sostituite con attività integre. Dopo aver sostituito tutte le attività non integre e aver avviato solo quelle integre, se il numero totale delle attività superadesiredCount
, le attività integre vengono interrotte casualmente fino a quando il numero totale delle attività è pari adesiredCount
. Per ulteriori informazioni sui parametrimaximumPercent
edesiredCount
, consulta Parametri di definizione del servizio. - Controller di distribuzione
-
Il tipo di controller di distribuzione da utilizzare per il servizio. Esistono tre tipi di controller di distribuzione:
-
ECS
-
EXTERNAL
-
CODE_DEPLOY
Quando si aggiorna un servizio, è possibile aggiornare il controller di distribuzione utilizzato. L'elenco seguente fornisce le transizioni valide:
-
Aggiornamento dalle distribuzioni CodeDeploy blu/verdi () alle distribuzioni sequenziali o alle distribuzioni ECS (
CODE_DEPLOY
). blue/greenECS
-
Aggiornamento da distribuzioni CodeDeploy blu/verdi () a distribuzioni esterne ().
CODE_DEPLOY
EXTERNAL
-
Aggiornamento da implementazioni sequenziali o blue/green distribuzioni ECS () a distribuzioni esterne ().
ECS
EXTERNAL
-
Aggiornamento da distribuzioni esterne () a implementazioni sequenziali o distribuzioni ECS (
EXTERNAL
). blue/greenECS
Quando aggiorni il controller di distribuzione di un servizio, considera quanto segue:
-
Non puoi aggiornare il controller di distribuzione di un servizio dal controller di
ECS
distribuzione a nessuno degli altri controller se utilizza VPC Lattice o Amazon ECS Service Connect. -
Non è possibile aggiornare il controller di distribuzione di un servizio durante una distribuzione del servizio in corso.
-
Non è possibile aggiornare il controller di distribuzione di un servizio
CODE_DEPLOY
se sul servizio non sono presenti sistemi di bilanciamento del carico. -
Non è possibile aggiornare il controller di distribuzione di un servizio
ECS
da uno qualsiasi degli altri controller se il controllerdeploymentConfiguration
include allarmi, un interruttore automatico di distribuzione o una strategia di distribuzione.BLUE_GREEN
Per ulteriori informazioni, consulta Controller e strategie di distribuzione dei servizi Amazon ECS. -
Il valore specificato
versionConsistency
nella definizione del contenitore non verrà utilizzato da Amazon ECS se aggiorni il controller di distribuzione del servizioECS
da uno qualsiasi degli altri controller. -
Se aggiorni il controller di distribuzione di un servizio
ECS
da uno qualsiasi degli altri controller, le risposteUpdateService
e leDescribeService
API continueranno a restituiredeployments
invece di.taskSets
Per ulteriori informazioni suUpdateService
eCreateService
, consulta UpdateServicee CreateServicenell'Amazon ECS API Reference. -
Se un servizio utilizza una strategia di distribuzione con aggiornamento continuo, l'aggiornamento del controller di distribuzione
ECS
da uno qualsiasi degli altri controller modificherà il modo in cuideploymentConfiguration
viene utilizzato ilmaximumPercent
valore in. Anziché limitarsi a limitare il numero totale di attività in una distribuzione con aggiornamento continuo,maximumPercent
viene utilizzato per sostituire le attività non corrette. Per ulteriori informazioni su come lo scheduler sostituisce le attività non salutari, consulta. Servizi Amazon ECS -
Se si aggiorna il controller di distribuzione di un servizio
ECS
da uno qualsiasi degli altri controller di distribuzione, quelli specificati nella configurazione del bilanciamento del carico verranno ignorati.advancedConfiguration
Per ulteriori informazioni, consulta LoadBalancere AdvancedConfigurationnel riferimento alle API di Amazon ECS.
Quando aggiorni il controller di distribuzione per un servizio che utilizza CloudFormation, considera quanto segue a seconda del tipo di migrazione che stai eseguendo.
-
Se disponi di un CloudFormation modello che contiene le informazioni del controller di
EXTERNAL
distribuzione, nonchéPrimaryTaskSet
le risorseTaskSet
e rimuovi le risorse del task set dal modello durante l'aggiornamento daEXTERNAL
aECS
, le chiamateDescribeTaskSet
eDeleteTaskSet
API restituiranno un errore 400 dopo l'aggiornamento del controller di distribuzioneECS
. Ciò comporta un errore di CloudFormation eliminazione delle risorse del task set, anche se lo CloudFormation stack passa alloUPDATE_COMPLETE
status. Per ulteriori informazioni, consulta la sezione Risorsa rimossa dallo stack ma non eliminata nella Guida per l' AWS CloudFormation utente. Per risolvere questo problema, elimina i set di attività direttamente utilizzando l'DeleteTaskSet
API Amazon ECS. Per ulteriori informazioni su come eliminare un set di attività, consulta DeleteTaskSetAmazon Elastic Container Service API Reference. -
Se stai migrando da
CODE_DEPLOY
aECS
con una nuova definizione di attività ed CloudFormation esegui un'operazione di rollback, laUpdateService
richiesta Amazon ECS ha esito negativo con il seguente errore:Resource handler returned message: "Invalid request provided: Unable to update task definition on services with a CODE_DEPLOY deployment controller. Use AWS CodeDeploy to trigger a new deployment. (Service: Ecs, Status Code: 400, Request ID: 0abda1e2-f7b3-4e96-b6e9-c8bc585181ac) (SDK Attempt Count: 1)" (RequestToken: ba8767eb-c99e-efed-6ec8-25011d9473f0, HandlerErrorCode: InvalidRequest)
-
Dopo una migrazione riuscita dal controller
ECS
diEXTERNAL
distribuzione, è necessario rimuovere manualmente il set diACTIVE
attività, poiché Amazon ECS non gestisce più la distribuzione. Per informazioni su come eliminare un set di attività, consulta il riferimento DeleteTaskSetall'API di Amazon Elastic Container Service.
-
- Numero di attività desiderato
-
Il numero di istanze dell'attività da inserire e mantenere in esecuzione nel servizio.
Se desideri interrompere temporaneamente il servizio, imposta questo valore su 0. Quindi, quando sei pronto per avviare il servizio, aggiorna il servizio con il valore originale.
È possibile modificare questo parametro per le distribuzioni in sequenza e le distribuzioni blu/verdi.
- Abilita i tag gestiti
-
Determina se attivare i tag gestiti di Amazon ECS per le attività del servizio.
Solo le attività avviate dopo l'aggiornamento rifletteranno l'aggiornamento. Per aggiornare i tag di tutte le attività, utilizza l'opzione di distribuzione forzata.
È possibile modificare questo parametro per le distribuzioni in sequenza e le distribuzioni blu/verdi.
- Abilita ECS Exec
-
Determina se viene utilizzato Amazon ECS Exec.
Se non desideri sovrascrivere il valore impostato al momento della creazione del servizio, puoi impostarlo su null durante l'esecuzione di questa azione.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Periodo di grazia per l'Health check
-
Periodo di tempo, in secondi, durante il quale lo scheduler del servizio Amazon ECS ignora i controlli non corretti di Elastic Load Balancing, VPC Lattice e dello stato dei container dopo il primo avvio di un'attività. Se non si specifica un valore del periodo di tolleranza per il controllo dello stato di salute, viene utilizzato il valore predefinito di.
0
Se non si utilizza nessuno dei controlli sanitari, nonhealthCheckGracePeriodSeconds
viene utilizzato.Se le attività del servizio impiegano un po' di tempo per iniziare e rispondere ai controlli sanitari, puoi specificare un periodo di tolleranza per il controllo sanitario fino a 2.147.483.647 secondi (circa 69 anni). durante i quali il pianificatore del servizio Amazon ECS ignora lo stato di questi controlli. Questo periodo di tolleranza può evitare che il pianificatore del servizio contrassegni le attività come non integre e le interrompa prima che abbiano il tempo di iniziare.
È possibile modificare questo parametro per le distribuzioni in sequenza e le distribuzioni blu/verdi.
- Sistemi di load balancer
-
È necessario utilizzare un ruolo collegato al servizio quando si aggiorna un sistema di bilanciamento del carico.
Un elenco di oggetti del load balancer Elastic Load Balancing. Contiene il nome del load balancer, il nome del container e la porta del container a cui accedere dal load balancer. Il nome del contenitore è quello che appare in una definizione del contenitore.
Amazon ECS non aggiorna automaticamente i gruppi di sicurezza associati ai sistemi di bilanciamento del carico Elastic Load Balancing o alle istanze di container di Amazon ECS.
Quando aggiungi, aggiorni o rimuovi una configurazione del load balancer, Amazon ECS avvia nuove attività con la configurazione Elastic Load Balancing aggiornata, quindi interrompe le vecchie attività quando le nuove attività sono in esecuzione.
Per i servizi che utilizzano aggiornamenti continui, puoi aggiungere, aggiornare o rimuovere i gruppi target Elastic Load Balancing. È possibile eseguire l'aggiornamento da un singolo gruppo target a più gruppi target e da più gruppi target a un unico gruppo target.
Per i servizi che utilizzano blue/green distribuzioni, puoi aggiornare i gruppi target Elastic Load Balancing utilizzando through.
CreateDeployment
CodeDeploy Tieni presente che non sono supportati più gruppi target per le distribuzioni. blue/green Per ulteriori informazioni, consulta Registrare più gruppi target con un servizio.Per i servizi che utilizzano il controller di distribuzione esterno, è possibile aggiungere, aggiornare o rimuovere i sistemi di bilanciamento del carico utilizzando. CreateTaskSet Tieni presente che non sono supportati più gruppi di destinazione per le distribuzioni esterne. Per ulteriori informazioni, consulta Registrare più gruppi target con un servizio.
Passa un elenco vuoto per rimuovere i sistemi di bilanciamento del carico.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Configurazione della rete
-
La configurazione della rete di servizio.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Vincoli di posizionamento
-
Una serie di oggetti con vincoli di posizionamento delle attività per aggiornare il servizio da utilizzare. Se non viene specificato alcun valore, i vincoli di posizionamento esistenti per il servizio rimarranno invariati. Se questo valore viene specificato, sostituirà tutti i vincoli di posizionamento esistenti definiti per il servizio. Per rimuovere tutti i vincoli di posizionamento esistenti, specificate un array vuoto.
Puoi specificare un massimo di 10 vincoli per ogni attività. Questo limite include i vincoli nella definizione di attività e quelli specificati in fase di runtime.
È possibile modificare questo parametro per le distribuzioni in sequenza e le distribuzioni blu/verdi.
- Strategia di posizionamento
-
La strategia di posizionamento delle attività si riferisce all'aggiornamento del servizio da utilizzare. Se non viene specificato alcun valore, la strategia di posizionamento esistente per il servizio rimarrà invariata. Se questo valore viene specificato, sostituirà la strategia di posizionamento esistente definita per il servizio. Per rimuovere una strategia di posizionamento esistente, specificate un oggetto vuoto.
È possibile modificare questo parametro per le distribuzioni in sequenza e le distribuzioni blu/verdi.
- Versione della piattaforma
-
La versione della piattaforma Fargate su cui funziona il tuo servizio.
Un servizio che utilizza una versione della piattaforma Linux non può essere aggiornato per utilizzare una versione della piattaforma Windows e viceversa.
È possibile modificare questo parametro per le distribuzioni continue.
- Propaga i tag
-
Determina se propagare i tag dalla definizione dell'attività o dal servizio all'attività. Se non viene specificato alcun valore, i tag non vengono propagati.
Solo le attività avviate dopo l'aggiornamento rifletteranno l'aggiornamento. Per aggiornare i tag su tutte le attività, imposta
forceNewDeployment
sutrue
, in modo che Amazon ECS avvii nuove attività con i tag aggiornati.Puoi modificare questo parametro per le distribuzioni continue e le distribuzioni blu/verdi.
- Configurazione Service Connect
-
La configurazione per Amazon ECS Service Connect. Questo parametro determina il modo in cui il servizio si connette ad altri servizi all'interno dell'applicazione.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Registri di servizio
-
È necessario utilizzare un ruolo collegato al servizio quando si aggiornano i registri dei servizi.
I dettagli dei registri di rilevamento dei servizi da assegnare a questo servizio. Per ulteriori informazioni, consulta Individuazione dei servizi.
Quando aggiungi, aggiorni o rimuovi la configurazione dei registri di servizio, Amazon ECS avvia nuove attività con la configurazione aggiornata dei registri di servizio, quindi interrompe le vecchie attività quando le nuove attività sono in esecuzione.
Passa un elenco vuoto per rimuovere i registri di servizio.
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Definizione dell'attività
-
La definizione e la revisione dell'attività da utilizzare per il servizio.
Se si modificano le porte utilizzate dai container in una definizione di attività, potrebbe essere necessario aggiornare i gruppi di sicurezza per le istanze del contenitore in modo che funzionino con le porte aggiornate.
Se aggiorni la definizione di attività per il servizio, il nome e la porta del container specificati nella configurazione del sistema di bilanciamento del carico devono rimanere nella definizione di attività.
Il comportamento di estrazione dell'immagine del contenitore è diverso a seconda dei tipi di avvio. Per ulteriori informazioni, consultare uno dei seguenti argomenti:
È possibile modificare questo parametro per le distribuzioni in sequenza.
- Configurazione del volume
-
I dettagli del volume che era
configuredAtLaunch
. QuandoconfiguredAtLaunch
è impostato sutrue
nella definizione dell'attività, questo parametro di servizio configura un volume Amazon EBS per ogni attività del servizio da creare e allegare durante la distribuzione. Puoi configurare dimensioni, VolumeType, IOPS, throughput, snapshot e crittografia in Configuration. ServiceManaged EBSVolume Ilname
volume deve corrispondere a quello indicato nella definizione dell'attività.name
Se impostato su null, non viene attivata alcuna nuova distribuzione. Altrimenti, se questa configurazione è diversa da quella esistente, attiva una nuova distribuzione.È possibile modificare questo parametro per le distribuzioni continue.
- Configurazione VPC Lattice
-
La configurazione VPC Lattice per il tuo servizio. Questo definisce il modo in cui il servizio si integra con VPC service-to-service Lattice per la comunicazione.
È possibile modificare questo parametro per le distribuzioni in sequenza.
AWS CDK considerazioni
AWS CDK Non tiene traccia degli stati delle risorse. Non sa se stai creando o aggiornando un servizio. I clienti devono utilizzare il portello di fuga per accedere direttamente al costrutto ecs Service
L1.
Per informazioni sugli escape hatch, consulta Personalizza i costrutti della AWS Construct Library nella Guida per sviluppatori v2.AWS Cloud Development Kit (AWS CDK)
Per migrare il servizio esistente al costrutto, procedi come segueecs.Service
:
-
Utilizzate la botola di fuga per accedere al costrutto L1.
Service
-
Impostate manualmente le seguenti proprietà nel costrutto L1.
Service
Se il tuo servizio utilizza la EC2 capacità di Amazon:
-
daemon?
-
placementConstraints?
-
placementStrategies?
-
Se utilizzi la modalità
awsvpc
di rete, devi impostare isecurityGroups?
costruttivpcSubnets?
e.
Se il tuo servizio utilizza Fargate:
-
FargatePlatformVersion
-
I
vpcSubnets?
e isecurityGroups?
costrutti.
-
-
Imposta
launchType
come segue:const cfnEcsService = service.node.findChild('Service') as ecs.CfnService; cfnEcsService.launchType = "FARGATE";
Per migrare da un tipo di avvio a un provider di capacità, procedi come segue:
-
Utilizzate la porta di fuga per accedere al costrutto
Service
L1. -
Aggiungi il costrutto.
capacityProviderStrategies?
-
Distribuire il servizio.