Parametri di definizione di attività Amazon ECS per Amazon EC2 - Amazon Elastic Container Service

Parametri di definizione di attività Amazon ECS per Amazon EC2

Le definizioni di attività sono suddivise in parti separate: la famiglia del processo, il ruolo del processo AWS Identity and Access Management (IAM), la modalità di rete, le definizioni di container, i volumi, i vincoli di posizionamento dei processi e la capacità. Le definizioni della famiglia e del container sono richieste in una definizione di attività. Al contrario, il ruolo dell'attività, la modalità di rete, i volumi, i vincoli di posizionamento delle attività e il tipo di avvio sono facoltativi.

Puoi utilizzare questi parametri in un file JSON per configurare la definizione del processo.

Di seguito sono riportate descrizioni più dettagliate per ogni parametro di definizione di attività per Amazon EC2

Famiglia

family

Tipo: string

Campo obbligatorio: sì

Quando registri una definizione di attività, le assegni una famiglia, ovvero una sorta di nome per più versioni della definizione di attività, specificando un numero di revisione. Alla prima definizione di attività registrata in una determinata famiglia viene assegnato il numero di revisione 1 e a qualsiasi definizione di attività registrata successivamente viene assegnato un numero di revisione sequenziale.

Capacità

Quando si registra una definizione di attività, è possibile specificare la capacità che Amazon ECS deve convalidare per tale definizione. Se la definizione di attività non viene convalidata in base alle compatibilità specificate, viene restituita un'eccezione client.

Il parametro seguente è permesso in una definizione di attività.

requiresCompatibilities

Tipo: array di stringhe

Campo obbligatorio: no

Valori validi: EC2

La capacità per la quale è stata convalidata la definizione di attività. In questo modo viene avviato un controllo per garantire che tutti i parametri utilizzati nella definizione di attività soddisfino i requisiti di Amazon EC2.

Ruolo del processo

taskRoleArn

Tipo: string

Campo obbligatorio: no

Quando registri una definizione di attività, puoi specificare un ruolo di processo per un ruolo IAM che conceda ai container nel processo l'autorizzazione per chiamare le API AWS specificate nelle relative policy associate per tuo conto. Per ulteriori informazioni, consulta Ruolo IAM dell'attività Amazon ECS.

All'avvio dell'AMI Windows Server ottimizzata per Amazon ECS, i ruoli IAM per le attività su Windows richiedono che l'opzione -EnableTaskIAMRole sia impostata. I container devono anche eseguire un codice di configurazione per utilizzare la funzionalità. Per ulteriori informazioni, consulta Configurazione aggiuntiva delle istanze Windows di Amazon EC2.

Ruolo per l'esecuzione del processo

executionRoleArn

Tipo: string

Obbligatorio: condizionale

L'Amazon Resource Name (ARN) del ruolo di esecuzione del processo che concede all'agente del container Amazon ECS l'autorizzazione a effettuare chiamate API AWS per tuo conto.

Nota

Il ruolo IAM di esecuzione del processo è richiesto in base ai requisiti del processo. Per ulteriori informazioni, consulta Ruolo IAM di esecuzione di attività Amazon ECS.

Modalità di rete

networkMode

Tipo: string

Campo obbligatorio: no

La modalità di rete Docker da utilizzare per i container nel processo. Per le attività Amazon ECS ospitate su istanze Linux di Amazon EC2, i valori validi sono none, bridge, awsvpc e host. Se non viene specificata alcuna modalità di rete, la modalità di rete di default è bridge. Per i processi Amazon ECS ospitati su istanze Windows di Amazon EC2, i valori validi sono default e awsvpc. Se non viene specificata alcuna modalità di rete, viene utilizzata la modalità default.

Se la modalità di rete è impostata su none, i container dell'attività non dispongono di connettività esterna e non è possibile specificare le mappature delle porte nella definizione del container.

Se la modalità di rete è bridge, l'attività utilizza la rete virtuale integrata di Docker su Linux che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Linux utilizza il driver di rete bridge Docker.

Se la modalità di rete è host, l'attività utilizza la rete dell'host che ignora la rete virtuale integrata di Docker e mappa le porte del container direttamente all'interfaccia di rete elastica (ENI) dell'istanza Amazon EC2 che ospita l'attività. Le mappature dinamiche delle porte non possono essere utilizzate in questa modalità di rete. Un container in una definizione di attività che utilizza questa modalità deve specificare un numero di hostPort specifico. Un numero di porta su un host non può essere utilizzato da più attività. Di conseguenza, non sarà possibile eseguire più attività con la stessa definizione di attività su una singola istanza Amazon EC2.

Importante

Quando si eseguono attività che utilizzano la modalità di rete host, per una maggiore sicurezza, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.

Se la modalità di rete è awsvpc, al processo viene assegnata un'interfaccia di rete elastica e, quando crei un servizio o esegui un processo con la definizione di attività, devi specificare NetworkConfiguration. Per ulteriori informazioni, consulta Opzioni di rete di attività di Amazon ECS per EC2.

Se la modalità di rete è default, l'attività utilizza la rete virtuale integrata di Docker su Windows che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Windows utilizza il driver di rete nat Docker.

Le modalità di rete host e awsvpc offrono le massime prestazioni di rete per i container perché utilizzano lo stack di rete di Amazon EC2. Con le modalità di rete host e awsvpc, le porte dei container esposte sono mappate direttamente alla porta host corrispondente (per la modalità di rete host) o alla porta dell'interfaccia di rete elastica collegata (per la modalità di rete awsvpc). Pertanto, non puoi utilizzare le mappature delle porte host dinamiche.

La modalità di rete consentita dipende dal sistema operativo dell'istanza EC2 sottostante. Con Linux, può essere utilizzata qualsiasi modalità di rete. Se Windows, possono essere utilizzate le modalità default e awsvpc.

Piattaforma di runtime

operatingSystemFamily

Tipo: string

Obbligatorio: condizionale

Di default: LINUX

Quando registri una definizione di attività, devi specificare la famiglia del sistema operativo.

I valori validi sono LINUX, WINDOWS_SERVER_2025_FULL, WINDOWS_SERVER_2025_CORE, WINDOWS_SERVER_2022_CORE, WINDOWS_SERVER_2022_FULL, WINDOWS_SERVER_2019_FULL, WINDOWS_SERVER_2019_CORE, WINDOWS_SERVER_2016_FULL, WINDOWS_SERVER_2004_CORE eWINDOWS_SERVER_20H2_CORE.

Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.

Quando una definizione di attività fa parte di un servizio, questo valore deve corrispondere al valore platformFamily del servizio.

cpuArchitecture

Tipo: string

Obbligatorio: condizionale

Valore di default: X86_64

Quando registri una definizione di attività, devi specificare l'architettura della CPU. I valori validi sono X86_64 e ARM64.

Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.

Quando si dispone di attività Linux, è possibile impostare il valore su ARM64. Per ulteriori informazioni, consulta Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit.

Dimensioni processo

Quando registri una definizione di attività, puoi specificare la quantità totale di CPU e memoria utilizzata per l'attività. Questo valore è separato dai valori cpu e memory a livello di definizione del container. Per le attività ospitate su istanze Amazon EC2, questi campi sono facoltativi.

Nota

I parametri della CPU e della memoria a livello di processo vengono ignorati per i container Windows. Ti consigliamo di specificare risorse a livello di container per i container Windows.

cpu

Tipo: string

Obbligatorio: condizionale

Nota

Questo parametro non è supportato per i container Windows.

Il limite rigido di unità CPU da presentare per il processo. È possibile specificare i valori della CPU nel file JSON come stringa in unità CPU o CPU virtuali (vCPU). Ad esempio, è possibile specificare un valore CPU come 1024 in unità CPU o 1 vCPU in vCPU. Quando la definizione di attività è registrata, un valore vCPU viene convertito in un numero intero che indica le unità CPU.

Questo campo è facoltativo. Se il cluster non dispone di istanze di container registrate con le unità CPU richieste disponibili, l'attività non va a buon fine. I valori supportati sono compresi tra 0.125 vCPU e 192 vCPU.

memory

Tipo: string

Obbligatorio: condizionale

Nota

Questo parametro non è supportato per i container Windows.

Il limite rigido di memoria da presentare al processo. È possibile specificare i valori di memoria nella definizione dell'attività come stringa in mebibytes (MiB) o gigabytes (GB). Ad esempio, è possibile specificare un valore di memoria 3072 in MiB o 3 GB in GB. Quando la definizione di attività è registrata, un valore GB viene convertito in un numero intero che indica il MiB.

Questo campo è facoltativo e può essere utilizzato qualsiasi valore. Se viene specificato un valore di memoria a livello di attività, il valore di memoria a livello di container è facoltativo. Se il cluster non dispone di istanze di container registrate con la memoria richiesta disponibile, l'attività non va a buon fine. Puoi ottimizzare l'utilizzo delle risorse assegnando alle attività quanta più memoria possibile per un determinato tipo di istanza. Per ulteriori informazioni, consulta Allocazione della memoria di un'istanza di container Amazon ECS Linux.

Definizioni del container

Quando registri una definizione di attività, devi specificare un elenco di definizioni del container che vengono trasmesse al daemon Docker in un'istanza di container. I seguenti parametri sono consentiti in una definizione del container.

Parametri standard di definizione del container

I seguenti parametri di definizione di attività sono obbligatori o utilizzati nella maggior parte delle definizioni del container.

Nome

name

Tipo: string

Campo obbligatorio: sì

Il nome di un container. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e caratteri di sottolineatura. Se colleghi più container in una definizione di attività, il parametro name di uno dei container può essere inserito nel parametro links di un altro container. Questo per collegare i container.

Immagine

image

Tipo: string

Campo obbligatorio: sì

L'immagine utilizzata per avviare un container. Questa stringa viene trasmessa direttamente al daemon Docker. Per impostazione predefinita, le immagini nel registro Docker Hub sono disponibili. Puoi anche specificare altri repository con repository-url/image:tag o repository-url/image@digest. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole); sono consentiti numeri, trattini, caratteri di sottolineatura, due punti, punti, barre e cancelletti. Questo parametro è mappato su Image nel comando creazione container e nel parametro IMAGE del docker di esecuzione del comando.

  • Quando viene avviato un nuovo processo, l'agente del container Amazon ECS esegue il pull della versione più recente dell'immagine e del tag specificati per il container da utilizzare. Tuttavia, gli aggiornamenti successivi a un'immagine del repository non vengono propagate alle attività già in esecuzione.

  • Quando non viene specificato un tag o un digest nel percorso dell'immagine nella definizione dell'attività, l'agente di container Amazon ECS recupera la versione più recente dell'immagine specificata.

  • Tuttavia, gli aggiornamenti successivi a un'immagine del repository non vengono propagate alle attività già in esecuzione.

  • Le immagini nei registri privati sono supportate. Per ulteriori informazioni, consulta Utilizzo di immagini di container non AWS in Amazon ECS.

  • Le immagini nei repository Amazon ECR possono essere specificate utilizzando la convenzione di denominazione registry/repository:tag o registry/repository@digest, ad esempio, aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest o aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE.

  • Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio ubuntu o mongo).

  • Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempio, amazon/amazon-ecs-agent).

  • Le immagini in altri repository online vengono ulteriormente qualificate tramite un nome di dominio (ad esempio quay.io/assemblyline/ubuntu).

versionConsistency

Tipo: string

Valori validi: enabled|disabled

Campo obbligatorio: no

Specificare se Amazon ECS risolverà il tag dell'immagine del container fornito nella definizione del container in un digest di immagini. Per impostazione predefinita, questo comportamento è enabled. Se si imposta il valore per un container come disabled, Amazon ECS non risolverà il tag dell'immagine del container in un digest e utilizzerà l'URI dell'immagine originale specificato nella definizione del container per l'implementazione. Per ulteriori informazioni sulla risoluzione dell'immagine del container, consultare Risoluzione dell'immagine del container.

Memoria

memory

Tipo: integer

Campo obbligatorio: no

La quantità (in MiB) della memoria da presentare al container. Se il container tenta di superare la memoria specificata qui, viene terminato. La quantità totale di memoria prenotata per tutti i container all'interno di un processo deve essere inferiore al valore memory del processo, se specificato. Questo parametro è mappato a Memory nella creazione container del comando del docker e l'opzione --memory per docker run.

È necessario specificare un valore di memoria a livello di attività o uno a livello di container. Se specifichi sia un valore di memory a livello di container che un valore di memoryReservation, memory deve essere maggiore del valore di memoryReservation. Se specifichi memoryReservation, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore memory.

Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.

Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.

Nota

Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta Allocazione della memoria di un'istanza di container Amazon ECS Linux.

memoryReservation

Tipo: integer

Campo obbligatorio: no

Il limite flessibile (in MiB) della memoria da prenotare per il container. Quando la memoria di sistema è in conflitto, Docker tenta di conservare la memoria del container entro questo limite flessibile. Tuttavia, il container può utilizzare una quantità maggiore di memoria, se necessario. Il container può utilizzare memoria fino al limite rigido specificato con il parametro memory (se applicabile) o tutta la memoria disponibile sull'istanza di container, a seconda di quale evento si verifica prima. Questo parametro è mappato a MemoryReservation nella creazione container del comando del docker e l'opzione --memory-reservation per docker run.

Se non viene specificato un valore di memoria a livello di attività, è necessario specificare un numero intero diverso da zero per uno o entrambi i codici memory o memoryReservation in una definizione del container. Se specifichi entrambe, memory deve essere superiore a memoryReservation. Se specifichi memoryReservation, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore memory.

Ad esempio, supponiamo che il container normalmente utilizza 128 MiB di memoria, ma con picchi occasionali di 256 MiB di memoria per brevi periodi di tempo. Puoi impostare un valore di memoryReservation di 128 MiB e un limite rigido memory di 300 MiB. Questa configurazione consente al container di riservare 128 MiB di memoria solo dalle risorse restanti nell'istanza di container. Allo stesso tempo, questa configurazione consente al container di utilizzare più risorse di memoria quando necessario.

Nota

Questo parametro non è supportato per i container Windows.

Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.

Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.

Nota

Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta Allocazione della memoria di un'istanza di container Amazon ECS Linux.

Mappature di porte

portMappings

Tipo: array di oggetti

Campo obbligatorio: no

Le mappature delle porte espongono le porte di rete del container al mondo esterno. Ciò consente ai client di accedere all'applicazione. Viene anche utilizzato per la comunicazione tra container all'interno della stessa attività.

Per le definizioni di attività che utilizzano la modalità di rete awsvpc, specifica solo il parametro containerPort. hostPort viene sempre ignorato e la porta del container viene mappata automaticamente su una casuale con numero alto sull'host.

La mappatura delle porte su Windows usa l'indirizzo gateway NetNAT anziché localhost. Non vi è alcun loopback per le mappature delle porte su Windows, perciò non è possibile accedere alla porta mappata di un container dall'host stesso.

La maggior parte dei campi di questo parametro (inclusi containerPort, hostPort e protocol) è associata a PortBindings nella sezione creazione container del comando e l'opzione --publish per docker run. Se la modalità di rete di una definizione di attività è impostata su host, le porte host devono essere non definite o devono corrispondere alla porta del container nella mappatura della porta.

Nota

Dopo che un processo raggiunge lo stato RUNNING, gli incarichi manuali e automatici relativi alle porte del container e dell'host sono visibili nelle posizioni seguenti:

  • Console: sezione Binding di rete della descrizione di un container per un processo selezionato.

  • AWS CLI: la sezione networkBindings dell'output del comando describe-tasks.

  • API: risposta DescribeTasks.

  • Metadati: l'endpoint dei metadati dell'attività.

appProtocol

Tipo: string

Campo obbligatorio: no

Il protocollo dell'applicazione utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect. Ti consigliamo di impostare questo parametro in maniera coerente con il protocollo utilizzato dall'applicazione. Se imposti questo parametro, Amazon ECS aggiunge la gestione delle connessioni specifica del protocollo al proxy Service Connect. Se imposti questo parametro, Amazon ECS aggiunge la telemetria specifica del protocollo nella console Amazon ECS e in CloudWatch.

Se non imposti un valore per questo parametro, viene utilizzato TCP. Amazon ECS, tuttavia, non aggiunge la telemetria specifica del protocollo TCP.

Per ulteriori informazioni, consulta Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi.

Valori di protocollo validi: "http" | "http2" | "grpc"

containerPort

Tipo: integer

Obbligatorio: sì, quando si utilizzano portMappings

Il numero di porta nel container associato alla porta dell'host definito dall'utente o assegnata automaticamente.

Per le attività che utilizzano la modalità di rete awsvpc, utilizzare containerPort per specificare le porte esposte.

Supponiamo di utilizzare i container in un'attività con i provider di capacità EC2 e di specificare una porta di container ma non una porta dell'host. Il container riceve quindi automaticamente una porta dell'host nell'intervallo delle porte temporanee. Per ulteriori informazioni, consulta hostPort. La mappatura delle porte che sono assegnate automaticamente in questo modo non contano ai fini della quota di 100 porte riservate di un'istanza di container.

containerPortRange

Tipo: string

Campo obbligatorio: no

L'intervallo dei numeri di porta nel container associato all'intervallo di porte host mappato in maniera dinamica.

È possibile impostare questo parametro solo utilizzando l'API register-task-definition. L'opzione è disponibile nel parametro portMappings. Per ulteriori informazioni, consulta register-task-definition nella Documentazione di riferimento sull'AWS Command Line Interface.

Quando specifichi un containerPortRange, si applicano le seguenti regole:

  • Devi utilizzare la modalità di rete bridge o la modalità di rete awsvpc.

  • Questo parametro è disponibile per sistemi operativi sia Linux che Windows.

  • L'istanza di container deve avere almeno la versione 1.67.0 dell'agente del container e almeno la versione 1.67.0-1 del pacchetto ecs-init.

  • Puoi specificare fino a 100 intervalli di porte per container.

  • Non specificare un hostPortRange. Il valore dell'hostPortRange è impostato come indicato di seguito:

    • Per i container in un'attività con la modalità di rete awsvpc, la hostPort è impostata sullo stesso valore della containerPort. Questa è una strategia di mappatura statica.

    • Per i container in un'attività con la modalità di rete bridge, l'agente Amazon ECS trova le porte host aperte dall'intervallo effimero predefinito e lo passa a docker per associarle alle porte del container.

  • I valori validi di containerPortRange sono compresi tra 1 e 65535.

  • Una porta può essere inclusa solo in una sola mappatura delle porte per ogni container.

  • Non puoi specificare intervalli di porte sovrapposti.

  • La prima porta nell'intervallo deve essere minore dell'ultima porta nell'intervallo.

  • Docker consiglia di disattivare il proxy docker nel file di configurazione del daemon Docker quando disponi di un numero elevato di porte.

    Per ulteriori informazioni, consultare Issue #11185 su GitHub.

    Per informazioni sulla modalità di disattivazione del proxy docker nel file di configurazione del daemon Docker, consulta Daemon Docker nella Guida per lo sviluppatore di Amazon ECS.

È possibile effettuare la chiamata DescribeTasks per visualizzare hostPortRange, cioè le porte dell'host associate a quelle del container.

Gli intervalli di porte non sono inclusi negli eventi delle attività di Amazon ECS inviati a EventBridge. Per ulteriori informazioni, consulta Automatizza le risposte agli errori di Amazon ECS utilizzando EventBridge.

hostPortRange

Tipo: string

Campo obbligatorio: no

L'intervallo di numeri di porta sull'host utilizzato con il collegamento di rete. Questo viene assegnato da Docker e consegnato dall'agente Amazon ECS.

hostPort

Tipo: integer

Campo obbligatorio: no

Il numero di porta nell'istanza di container per prenotare per il container.

Puoi specificare una porta dell'host non riservata per la mappatura delle porte del container. Questa operazione viene definita mappatura statica delle porte dell'host. In alternativa, puoi omettere hostPort (o impostarlo su 0) specificando containerPort. Il container riceve automaticamente una porta nell'intervallo di porte temporanee per il sistema operativo dell'istanza di container e la versione Docker. Questa operazione viene definita mappatura dinamica delle porte dell'host.

L'intervallo di porte temporanee predefinite per Docker versione 1.6.0 e successive è elencato nell'istanza in /proc/sys/net/ipv4/ip_local_port_range. Se questo parametro kernel non è disponibile, viene utilizzato l'intervallo delle porte temporaneo di default da 49153–65535. Non tentare di specificare una porta dell'host nell'intervallo di porte effimere. Questo perché sono riservate per l'assegnazione automatica. In generale, le porte al di sotto di 32768 non rientrano nell'intervallo delle porte temporanee.

Le porte prenotate di default sono 22 per SSH, le porte Docker 2375 e 2376 e le porte 51678-51680 dell'agente del container di Amazon ECS. Qualsiasi porta dell'host precedentemente specificata dall'utente per un'attività in esecuzione viene prenotata anche mentre tale attività è in esecuzione. Dopo l'arresto di un'attività, la porta dell'host viene rilasciata. Le porte attualmente prenotate vengono visualizzate nel parametro remainingResources dell'output describe-container-instances. Un'istanza di container può contenere fino a 100 porte prenotate alla volta, incluse quelle predefinite. Le porte assegnate automaticamente non vengono conteggiate ai fini della quota di 100 porte prenotate.

name

Tipo: string

Obbligatorio: no, necessario per configurare Service Connect e VPC Lattice in un servizio

Il nome utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect e VPC Lattice. Questo parametro è il nome utilizzato nella configurazione di Service Connect e VPC Lattice di un servizio.

Per ulteriori informazioni, consulta Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi.

Nell'esempio seguente, vengono visualizzati entrambi i campi obbligatori per Service Connect e VPC Lattice.

"portMappings": [ { "name": string, "containerPort": integer } ]
protocol

Tipo: string

Campo obbligatorio: no

Il protocollo utilizzato per la mappatura delle porte. I valori validi sono tcp e udp. Il valore predefinito è tcp.

Importante

È supportato solo tcp per Service Connect. Ricorda che tcp è implicito se questo campo non è impostato.

Importante

Il supporto UDP è disponibile solo nelle istanze di container che sono state avviate con la versione 1.2.0 dell'agente del container Amazon ECS (ad esempio l'AMI amzn-ami-2015.03.c-amazon-ecs-optimized) o successiva o con agenti del container che sono stati aggiornati alla versione 1.3.0 o successiva. Per passare all'ultima versione dell'agente del container, consulta Aggiornamento dell'agente del container Amazon ECS.

Se specifichi una porta dell'host, utilizza la seguente sintassi.

"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]

Se desideri una porta dell'host assegnata automaticamente, utilizza la seguente sintassi.

"portMappings": [ { "containerPort": integer } ... ]

Credenziali del repository privato

repositoryCredentials

Tipo: oggetto RepositoryCredentials

Campo obbligatorio: no

Le credenziali dell'archivio per l'autenticazione di un registro privato.

Per ulteriori informazioni, consulta Utilizzo di immagini di container non AWS in Amazon ECS.

credentialsParameter

Tipo: string

Obbligatorio: sì, quando si utilizzano repositoryCredentials

L'Amazon Resource Name (ARN) del segreto contenente le credenziali dell'archivio privato.

Per ulteriori informazioni, consulta Utilizzo di immagini di container non AWS in Amazon ECS.

Nota

Quando utilizzi l'API Amazon ECS, la AWS CLI, o gli SDK AWS, se il segreto è presente nella stessa regione dell'attività in fase di avvio, puoi utilizzare l'ARN completo o il nome del segreto. Quando utilizzi la AWS Management Console, devi specificare l'ARN completo del segreto.

Di seguito viene riportato un frammento di una definizione di attività che mostra i parametri obbligatori:

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]

Parametri avanzati di definizione del container

I seguenti parametri avanzati di definizione del container forniscono funzionalità estese al comando di esecuzione del docker che viene utilizzato per lanciare container nelle istanze di container di Amazon ECS.

Politica di riavvio

restartPolicy

La politica di riavvio del container e i parametri di configurazione associati. Quando configuri una politica di riavvio per un container, Amazon ECS può riavviare il container senza dover sostituire l'attività. Per ulteriori informazioni, consulta Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container.

enabled

Tipo: Booleano

Campo obbligatorio: sì

Specificare se è abilitata una politica di riavvio per il container.

ignoredExitCodes

Tipo: array di numeri interi

Campo obbligatorio: no

Un elenco di codici di uscita che Amazon ECS ignorerà e non tenterà di riavviare. È possibile specificare fino a 50 codici di uscita dei container. Per impostazione predefinita, Amazon ECS non ignora alcun codice di uscita.

restartAttemptPeriod

Tipo: integer

Campo obbligatorio: no

Un periodo di tempo (in secondi) durante il quale il container deve essere eseguito prima che venga tentato un riavvio. Un container può essere riavviato solo una volta ogni restartAttemptPeriod secondi. Se un container non è in grado di funzionare per questo periodo di tempo ed esce in anticipo, non verrà riavviato. È possibile specificare un restartAttemptPeriod minimo di 60 secondi e un restartAttemptPeriod massimo di 1.800 secondi. Per impostazione predefinita, un container deve funzionare per 300 secondi prima di poter essere riavviato.

Controllo dell'integrità

healthCheck

Comando di controllo dell'integrità del container e parametri di configurazione associati per il container. Per ulteriori informazioni, consulta Determina lo stato delle attività di Amazon ECS utilizzando i controlli dell'integrità dei container.

command

Matrice di stringhe che rappresenta il comando eseguito dal container per determinare l'integrità. La matrice di stringhe può iniziare con CMD per eseguire direttamente gli argomenti del comando oppure con CMD-SHELL per eseguire il comando con la shell predefinita del container. Se non è specificato nessuno dei due, viene utilizzato CMD.

Durante la registrazione di una definizione di attività nella AWS Management Console, utilizza un elenco di comandi separati da virgole. Questi comandi vengono convertiti in stringa dopo la creazione della definizione delle attività. Di seguito è riportato un esempio di input per il controllo dell'integrità.

CMD-SHELL, curl -f http://localhost/ || exit 1

Durante la registrazione di una definizione delle attività utilizzando il pannello JSON della AWS Management Console, l'AWS CLI, oppure le API, racchiudi l'elenco di comandi tra parentesi. Di seguito è riportato un esempio di input per il controllo dell'integrità.

[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]

Un codice di uscita 0, senza output stderr, indica l'esito positivo, mentre un codice di uscita diverso da zero indica un errore.

interval

Intervallo di tempo (in secondi) tra ogni controllo dell'integrità. Puoi specificare un valore compreso tra 5 e 300 secondi. Il valore di predefinito è 30 secondi.

timeout

Periodo di tempo in secondi per cui attendere che un controllo dell'integrità venga superato prima di considerarlo un errore. Puoi specificare un valore compreso tra 2 e 60 secondi. Il valore di default è 5 secondi.

retries

Numero di tentativi per cui riprovare un controllo dello stato non riuscito prima che il container venga considerato non integro. Puoi specificare un valore compreso tra 1 e 10 tentativi. Il valore predefinito è tre tentativi.

startPeriod

Periodo di tolleranza facoltativo entro il quale concedere ai container il tempo necessario per il bootstrap prima che i controlli dell'integrità non riusciti vengano conteggiati rispetto al numero massimo di nuovi tentativi. Puoi specificare un valore compreso tra 0 e 300 secondi. Per impostazione predefinita, startPeriod è disabilitato.

Se un controllo dello stato va a buon fine all'interno di startPeriod, il container è considerato integro e gli errori successivi vengono conteggiati rispetto al numero massimo di nuovi tentativi.

Ambiente

cpu

Tipo: integer

Campo obbligatorio: no

Il numero di unità cpu che l'agente del container Amazon ECS riserverà per il container. Su Linux, questo parametro è mappato a CpuShares nella sezione Create a container.

Nota

Puoi determinare il numero di unità CPU disponibili per ciascun tipo di istanza Amazon EC2. A tale scopo, moltiplica il numero di vCPU elencate per il tipo di istanza nella pagina di dettaglio delle istanze Amazon EC2 per 1.024.

I container Linux condividono unità CPU non assegnate con altri container nell'istanza di container con lo stesso rapporto della quantità assegnata. Ad esempio, supponiamo di eseguire un'attività di container singolo in un tipo di istanza single core con 512 unità di CPU specificate per tale container. Inoltre, tale attività è l'unica in esecuzione sull'istanza di container. In questo esempio, il container può utilizzare la condivisione completa di 1.024 unità CPU in qualsiasi momento. Tuttavia, si supponga di aver avviato un'altra copia della stessa attività su quell'istanza di container. A ogni attività viene garantito un minimo di 512 unità CPU quando necessario. Analogamente, se l'altro container non utilizza la CPU rimanente, ogni container può passare a un maggiore utilizzo della CPU. Tuttavia, se entrambe le attività sono sempre attive al 100%, sono limitate a 512 unità CPU.

Sulle istanze di container Linux, il daemon Docker nell'istanza di container utilizza il valore CPU per calcolare i relativi rapporti di quote di CPU per i container in esecuzione. Il valore minimo valido per la quota di CPU ammesso dal kernel Linux è 2, mentre quello massimo valido per la quota di CPU ammesso dal kernel Linux è 262.144. Tuttavia, il parametro CPU non è obbligatorio e puoi usare valori di CPU minori di 2 e superiori a 262.144 nelle definizioni del container. Per i valori di CPU minori di 2 (incluso un valore null) e superiori a 262.144, il comportamento varia in base alla versione dell'agente del container Amazon ECS:

  • Versioni dell'agente <= 1.1.0: i valori di CPU null e zero vengono trasmessi a Docker come 0, che Docker successivamente converte in 1.024 quote di CPU. I valori di CPU di 1 vengono trasmessi a Docker come 1 e il kernel Linux li converte in due quote di CPU.

  • Versioni dell'agente >= 1.2.0: i valori di CPU null, zero e 1 vengono trasmessi a Docker come due quote di CPU.

  • Versioni dell'agente >= 1.84.0: i valori della CPU superiori a 256 vCPU vengono passati a Docker come 256, il che equivale a 262.144 condivisioni CPU.

Sulle istanze di container Windows, la quota di CPU viene applicata come assoluta. I container Windows hanno accesso solo alla quantità di CPU specificata nella definizione delle attività. Un valore di CPU null o zero viene trasmesso a Docker come 0, che Windows interpreta come l'1% di una CPU.

Per ulteriori esempi, consulta Modalità di gestione delle risorse di CPU e memoria di Amazon ECS.

gpu

Tipo: oggetto ResourceRequirement

Campo obbligatorio: no

Il numero di GPUs fisiche che l'agente del container Amazon ECS riserva per il container. Il numero di GPU riservate per tutti i container in un'attività non deve superare il numero di GPU disponibili nell'istanza di container in cui viene avviata l'attività. Per ulteriori informazioni, consulta Definizioni di attività Amazon ECS per carichi di lavoro GPU.

Nota

Questo parametro non è supportato per i container Windows.

Elastic Inference accelerator

Tipo: oggetto ResourceRequirement

Campo obbligatorio: no

Per il tipo InferenceAccelerator, il value corrisponde a deviceName per un InferenceAccelerator specificato in una definizione di attività. Per ulteriori informazioni, consulta Nome dell'acceleratore di inferenza elastica.

Nota

Questo parametro non è supportato per i container Windows.

essential

Tipo: Booleano

Campo obbligatorio: no

Si supponga che il parametro essential di un container sia contrassegnato come true e che tale container abbia esito negativo o si arresti per qualsiasi motivo. Di conseguenza, tutti gli altri container che fanno parte dell'attività vengono arrestati. Se il parametro essential di un container è contrassegnato come false, il suo esito negativo non influenza il resto dei container in un'attività. Se questo parametro viene omesso, un container si considera essenziale.

Tutti i processi devono avere almeno un container essenziale. Supponiamo di avere un'applicazione composta da più container. In questo caso, si raggruppano i container utilizzati per uno scopo comune in componenti e si separano i diversi componenti in più definizioni delle attività. Per ulteriori informazioni, consulta Progetta la tua applicazione per Amazon ECS.

"essential": true|false
entryPoint
Importante

Le versioni precedenti dell'agente del container Amazon ECS non gestiscono correttamente i parametri entryPoint. In caso di problemi durante l'utilizzo entryPoint, aggiorna l'agente del container o inserisci i comandi e gli argomenti come elementi di matrice command.

Tipo: array di stringhe

Campo obbligatorio: no

Il punto di ingresso che viene trasmesso al container.

"entryPoint": ["string", ...]
command

Tipo: array di stringhe

Campo obbligatorio: no

Il comando che viene inviato al container. Questo parametro è mappato a Cmd nella creazione container del comando e il parametro COMMAND per docker run. In caso di più argomenti, ognuno di questi deve essere una stringa separata nella matrice.

"command": ["string", ...]
workingDirectory

Tipo: string

Campo obbligatorio: no

La directory di lavoro nel container in cui eseguire i comandi. Questo parametro è mappato a WorkingDir nella sezione Create a container di Docker Remote API e l'opzione --workdir a docker run.

"workingDirectory": "string"
environmentFiles

Tipo: array di oggetti

Campo obbligatorio: no

Un elenco di file contenenti le variabili di ambiente da passare a un container. Questo parametro è mappato all'opzione --env-file al comando esecuzione del docker.

Quando FIPS è abilitato, i nomi dei bucket con punti (.) (ad esempio, amzn-s3-demo-bucket1.name.example) non sono supportati. La presenza di punti (.) nel nome del bucket impedisce l'avvio dell'attività perché l'agente non può estrarre il file della variabile di ambiente da Amazon S3.

Questa funzionalità non è disponibile per i container Windows.

Puoi specificare fino a 10 file di ambiente. Il file deve avere un'estensione .env. Ogni riga di un file di ambiente deve contenere una variabile di ambiente nel formato VARIABLE=VALUE. Le righe che iniziano con # vengono trattate come commenti e vengono ignorate.

Se nella definizione del container sono specificate singole variabili di ambiente, hanno la precedenza sulle variabili contenute in un file di ambiente. Se vengono specificati più file di ambiente che contengono la stessa variabile, vengono elaborati dall'alto verso il basso. Consigliamo di utilizzare nomi di variabili univoci. Per ulteriori informazioni, consulta Passare una singola variabile di ambiente a un container Amazon ECS.

value

Tipo: string

Campo obbligatorio: sì

L'Amazon Resource Name (ARN) dell'oggetto Amazon S3 contenente il file della variabile di ambiente.

type

Tipo: string

Campo obbligatorio: sì

Il tipo di file da utilizzare L'unico valore supportato è s3.

environment

Tipo: array di oggetti

Campo obbligatorio: no

Le variabili di ambiente da passare a un container. Questo parametro è mappato a Env nella creazione container del comando del docker e l'opzione --env al comando per docker run.

Importante

Non è consigliabile utilizzare variabili di ambiente non crittografate per informazioni sensibili, ad esempio dati di credenziali.

name

Tipo: string

Obbligatorio: sì, quando viene utilizzato environment

Il nome della variabile di ambiente.

value

Tipo: string

Obbligatorio: sì, quando viene utilizzato environment

Il valore della variabile di ambiente.

"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
secrets

Tipo: array di oggetti

Campo obbligatorio: no

Un oggetto che rappresenta il segreto da esporre al container. Per ulteriori informazioni, consulta Trasferimento di dati sensibili a un container Amazon ECS.

name

Tipo: string

Campo obbligatorio: sì

Il valore da impostare come variabile di ambiente sul container.

valueFrom

Tipo: string

Campo obbligatorio: sì

Il segreto da esporre al container. I valori supportati sono il nome della risorsa Amazon (ARN) completo del segreto di AWS Secrets Manager o l'ARN completo del parametro nell'archivio parametri di AWS Systems Manager.

Nota

Se il parametro dell'archivio parametri di Systems Manager o quello di Secrets Manager esiste nella stessa Regione AWS dell'attività che si sta avviando, è possibile utilizzare l'ARN completo o il nome del segreto. Se il parametro esiste in una Regione diversa, deve essere specificato l'ARN completo.

"secrets": [ { "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" } ]

Impostazioni di rete

disableNetworking

Tipo: Booleano

Campo obbligatorio: no

Quando questo parametro è true, le reti sono disabilitate all'interno del container.

Nota

Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete awsvpc.

Il valore predefinito è false.

"disableNetworking": true|false

Tipo: array di stringhe

Campo obbligatorio: no

Il parametro link consente ai container di comunicare tra loro senza la necessità di mappatura delle porte. Questo parametro è supportato solo se la modalità di rete di una definizione delle attività è impostata su bridge. Il costrutto name:internalName è analogo a name:alias nei collegamenti Docker. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e trattini bassi.

Nota

Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete awsvpc.

Importante

I container che vengono posizionati nella stessa istanza di container potrebbero comunicare tra loro senza necessità di collegamenti o mappature delle porte dell'host. L'isolamento di rete su un'istanza di container è controllato da gruppi di sicurezza e impostazioni VPC.

"links": ["name:internalName", ...]
hostname

Tipo: string

Campo obbligatorio: no

Il nome host da utilizzare per il container. Questo parametro è mappato a Hostname nella creazione container del docker e l'opzione --hostname per docker run.

Nota

Se utilizzi la modalità di rete awsvpc, il parametro hostname non è supportato.

"hostname": "string"
dnsServers

Tipo: array di stringhe

Campo obbligatorio: no

Un elenco di server DNS presentato al container.

Nota

Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete awsvpc.

"dnsServers": ["string", ...]
dnsSearchDomains

Tipo: array di stringhe

Campo obbligatorio: no

Modello: ^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$

Un elenco di domini di ricerca DNS presentato al container. Questo parametro è mappato a DnsSearch nella creazione container del comando del docker e l'opzione --dns-search per docker run.

Nota

Questo parametro non è supportato per i container o le attività di Windows che utilizzano la modalità di rete awsvpc.

"dnsSearchDomains": ["string", ...]
extraHosts

Tipo: array di oggetti

Campo obbligatorio: no

Un elenco di nomi host e mappature di indirizzi IP da aggiungere al file /etc/hosts nel container.

Questo parametro è mappato a ExtraHosts nella creazione container del comando del docker e l'opzione --add-host per docker run.

Nota

Questo parametro non è supportato per i container o le attività di Windows che utilizzano la modalità di rete awsvpc.

"extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]
hostname

Tipo: string

Obbligatorio: sì, quando si utilizzano extraHosts

Il nome host da utilizzare nella voce /etc/hosts.

ipAddress

Tipo: string

Obbligatorio: sì, quando si utilizzano extraHosts

L'indirizzo IP da utilizzare nella voce /etc/hosts.

Archiviazione e registrazione

readonlyRootFilesystem

Tipo: Booleano

Campo obbligatorio: no

Se il parametro è true, al container viene assegnato l'accesso in sola lettura al file system radice. Questo parametro è mappato a ReadonlyRootfs nella creazione container del comando del docker e l'opzione --read-only per docker run.

Nota

Questo parametro non è supportato per i container Windows.

Il valore predefinito è false.

"readonlyRootFilesystem": true|false
mountPoints

Tipo: array di oggetti

Campo obbligatorio: no

I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai Volumes nella creazione container dell'API Docker e l'opzione --volume per docker run.

I container Windows possono montare intere directory sulla stessa unità di $env:ProgramData. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.

sourceVolume

Tipo: string

Obbligatorio: sì, quando si utilizzano mountPoints

Il nome del volume da montare.

containerPath

Tipo: string

Obbligatorio: sì, quando si utilizzano mountPoints

Il percorso nel container in cui verrà montato il volume.

readOnly

Tipo: Booleano

Campo obbligatorio: no

Se il valore è true, il container avrà accesso in sola lettura al volume. Se il valore è false, il container avrà accesso in scrittura al volume. Il valore predefinito è false.

Per le attività eseguite sul sistema operativo Windows, lasciare il valore predefinito di false.

volumesFrom

Tipo: array di oggetti

Campo obbligatorio: no

I volumi di dati da montare da un altro container. Questo parametro è mappato a VolumesFrom nella creazione container del comando del docker e l'opzione --volumes-from per docker run.

sourceContainer

Tipo: string

Obbligatorio: sì, quando viene utilizzato volumesFrom

Il nome del container da cui montare volumi.

readOnly

Tipo: Booleano

Campo obbligatorio: no

Se il valore è true, il container avrà accesso in sola lettura al volume. Se il valore è false, il container avrà accesso in scrittura al volume. Il valore predefinito è false.

"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ]
logConfiguration

Tipo: oggetto LogConfiguration

Campo obbligatorio: no

La specifica di configurazione dei log per il container.

Per definizioni dell'attività di esempio che utilizzano una configurazione di log, consulta Esempio di definizione di attività di Amazon ECS.

Questo parametro è mappato a LogConfig nella creazione container del comando del docker e l'opzione --log-driver per docker run. Per impostazione predefinita, i container utilizzano lo stesso driver di log utilizzato dal daemon Docker. Tuttavia, il container può utilizzare un driver di log diverso da quello del daemon Docker, specificando un driver di log con questo parametro nella definizione del container. Per utilizzare un altro driver di log per un container, il sistema di log deve essere configurato correttamente nell'istanza di container (o su un altro server di log per le opzioni di logging in remoto).

Si noti quanto segue quando si specifica una configurazione di log per i container:

  • Amazon ECS supporta un sottoinsieme dei driver di log disponibili per il daemon Docker.

  • Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.

  • L'agente del container Amazon ECS in esecuzione in un'istanza di container deve registrare i driver di log disponibili in tale istanza con la variabile di ambiente ECS_AVAILABLE_LOGGING_DRIVERS prima che i container posizionati sull'istanza possano utilizzare queste opzioni di configurazione di log. Per ulteriori informazioni, consulta Configurazione dell'agente del container Amazon ECS.

"logConfiguration": { "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens", "options": {"string": "string" ...}, "secretOptions": [{ "name": "string", "valueFrom": "string" }] }
logDriver

Tipo: string

Valori validi: "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"

Obbligatorio: sì, quando viene utilizzato logConfiguration

Il driver di log da utilizzare per il container. Per impostazione predefinita, i valori validi elencati in precedenza sono driver di log con i quali l'agente del container Amazon ECS può comunicare.

I driver di log supportati sono awslogs, fluentd, gelf, json-file, journald, syslog, splunk e awsfirelens.

Per ulteriori informazioni su come utilizzare il driver di log awslogs nelle definizioni di attività per inviare i log di container a CloudWatch Logs, consulta Invio di log Amazon ECS a CloudWatch .

Per ulteriori informazioni sull'utilizzo del driver di log awsfirelens, consulta Routing di log personalizzato.

Nota

Se disponi di un driver personalizzato non elencato in precedenza, puoi utilizzare l'agente del container Amazon ECS, che è disponibile su GitHub, e personalizzarlo affinché funzioni con questo driver. Ti consigliamo di inviare le richieste pull per le modifiche che desideri siano incluse. Tuttavia, attualmente non forniamo il supporto per eseguire copie modificate di questo software.

Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.

options

Tipo: mappatura stringa a stringa

Campo obbligatorio: no

La mappa chiave/valore delle opzioni di configurazione per inviare il driver di log.

Le opzioni che è possibile specificare dipendono dal driver di log. Alcune delle opzioni che è possibile specificare quando si usa il router awslogs per instradare i log verso Amazon CloudWatch includono:

awslogs-create-group

Campo obbligatorio: no

Specifica se desideri che il gruppo di log venga creato automaticamente. Se questa opzione non è specificata, viene impostata in modo predefinito su false.

Nota

La tua policy IAM deve includere l'autorizzazione logs:CreateLogGroupprima di provare a utilizzare awslogs-create-group.

awslogs-region

Campo obbligatorio: sì

Specifica la Regione AWS a cui il driver di log awslogs deve inviare i log Docker. Puoi scegliere di inviare tutti i log di cluster presenti in regioni diverse in una sola regione in CloudWatch Logs. In questo modo saranno tutti visibili in un'unica posizione. In caso contrario, puoi separarli per regione per una maggiore granularità. Assicurati che il gruppo di log specificato esista nella regione definita tramite questa opzione.

awslogs-group

Campo obbligatorio: sì

Assicurati di specificare un gruppo di log a cui il driver di log awslogs invia i flussi di log.

awslogs-stream-prefix

Obbligatorio: facoltativo

Utilizza l'opzione awslogs-stream-prefix per associare un flusso di log al prefisso selezionato, al nome del container e all'ID dell'attività Amazon ECS al quale appartiene il container. Se specifichi un prefisso con questa opzione, il flusso di log assume il formato seguente.

prefix-name/container-name/ecs-task-id

Se non specifichi un prefisso con questa opzione, il flusso di log viene denominato secondo l'ID del container assegnato dal daemon Docker nell'istanza di container. Poiché è difficile ricollegare i log al container che li ha inviati con il solo ID container Docker (disponibile solo sulle istanze di container), è consigliabile specificare un prefisso con questa opzione.

Per i servizi Amazon ECS, puoi utilizzare il nome del servizio come prefisso. In questo modo puoi ricollegare i flussi di log al servizio a cui appartiene il container, al nome del container che li ha inviati e all'ID dell'attività a cui appartiene il container.

Perché i log compaiano nell'apposito riquadro della console Amazon ECS, devi specificare un prefisso per il flusso dei log.

awslogs-datetime-format

Campo obbligatorio: no

Questa opzione definisce un modello di inizio multilinea nel formato strftime Python. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.

Un esempio di un caso d'uso per l'utilizzo di questo formato è per l'analisi di output, ad esempio uno dump dello stack, che potrebbe altrimenti essere registrato in più voci. Il modello corretto consente di acquisirlo in una sola voce.

Per ulteriori informazioni, consulta awslogs-datetime-format.

Non è possibile configurare entrambe le opzioni awslogs-datetime-format e awslogs-multiline-pattern.

Nota

Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.

awslogs-multiline-pattern

Campo obbligatorio: no

Questa opzione definisce un modello di inizio multilinea che utilizza un'espressione regolare. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.

Per ulteriori informazioni, consulta awslogs-multiline-pattern.

Questa opzione viene ignorata se anche awslogs-datetime-format è configurato.

Non è possibile configurare entrambe le opzioni awslogs-datetime-format e awslogs-multiline-pattern.

Nota

Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.

Le seguenti opzioni si applicano a tutti i driver di log supportati.

mode

Campo obbligatorio: no

Valori validi: non-blocking | blocking

Questa opzione definisce la modalità di consegna dei messaggi di log dal container al driver di log specificato utilizzando logDriver. La modalità di distribuzione scelta influisce sulla disponibilità dell'applicazione quando il flusso di log dal container viene interrotto.

Se si utilizza la modalità blocking e il flusso di log viene interrotto, le chiamate provenienti dal codice del container e utilizzate per la scrittura sui flussi stdout e stderr verranno bloccate. Di conseguenza, il thread di registrazione dell'applicazione si bloccherà. Ciò può causare la mancata risposta dell'applicazione e la presenza di errori nel controllo d'integrità del container.

Se utilizzi la modalità non-blocking, i log del container vengono invece archiviati in un buffer intermedio in memoria configurato con l'opzione max-buffer-size. In questo modo si evita la mancata risposta dell'applicazione quando non è possibile inviare i log. Ti consigliamo di utilizzare questa modalità se vuoi garantire la disponibilità del servizio nonostante una certa perdita di log. Per ulteriori informazioni, consultare Preventing log loss with non-blocking mode in the awslogs container log driver.

È possibile impostare un valore predefinito mode per tutti i container in un Regione AWS specifico utilizzando le impostazioni dell'account defaultLogDriverMode. Se non si specifica l'opzione mode in logConfiguration o non si configura l'impostazione dell'account, Amazon ECS utilizzerà per impostazione predefinita la modalità non-blocking. Per ulteriori informazioni sulle impostazioni dell'account, consultare Modalità driver log predefinita.

Quando viene utilizzata la modalità non-blocking, l'opzione di log max-buffer-size controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. La quantità totale di memoria allocata a livello di attività deve essere superiore a quella allocata per tutti i container oltre al driver di log del buffer di memoria.

Nota

Il 25 giugno 2025, Amazon ECS ha cambiato la modalità predefinita del driver di log da blocking a non-blocking per dare priorità alla disponibilità delle attività rispetto al logging. Per continuare a utilizzare la modalità blocking dopo questa modifica, procedere in uno dei seguenti modi:

  • Impostare l'opzione mode nella definizione del container logConfiguration come blocking.

  • Impostare le impostazioni dell'account defaultLogDriverMode su blocking.

max-buffer-size

Campo obbligatorio: no

Valore predefinito: 10 m

Quando viene utilizzata la modalità non-blocking, l'opzione di log max-buffer-size controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. Quando il buffer è pieno, non è possibile archiviare ulteriori log. I log che non possono essere archiviati vengono persi.

Per indirizzare i log utilizzando il router di log splunk, è necessario specificare splunk-token e splunk-url.

Quando si utilizza il router di log awsfirelens per instradare i log a un Servizio AWS o una destinazione AWS Partner Network per l'archiviazione e l'analisi dei log, è possibile impostare l'opzione log-driver-buffer-limit per limitare il numero di eventi che vengono inseriti in memoria, prima di essere inviati al container del router di log. Può aiutarti a risolvere potenziali problemi di perdita di log perché una velocità di trasmissione effettiva elevata potrebbe comportare l'esaurimento della memoria per il buffer all'interno di Docker. Per ulteriori informazioni, consulta Configurazione dei log di Amazon ECS per un throughput elevato.

Le altre opzioni che è possibile specificare quando si utilizza awsfirelens per indirizzare i log dipendono dalla destinazione. Quando si esportano i log in Amazon Data Firehose, è possibile specificare Regione AWS con region e un nome per il flusso di log con delivery_stream.

Quando si esportano i log in flusso di dati Amazon Kinesis, è possibile specificare Regione AWS con region e un nome per il flusso di dati con stream.

Quando si esportano i log in Servizio OpenSearch di Amazon, è possibile specificare opzioni come Name, Host (endpoint Servizio OpenSearch senza protocollo), Port, Index, Type, Aws_auth, Aws_region, Suppress_Type_Name e tls.

Quando si esportano i log in Amazon S3, è possibile specificare il bucket utilizzando l'opzione bucket. È possibile anche specificare region, total_file_size, upload_timeout e use_put_object come opzioni.

Questo parametro richiede la versione 1.19 o successiva di Docker Remote API sull'istanza di container.

secretOptions

Tipo: array di oggetti

Campo obbligatorio: no

Un oggetto che rappresenta il segreto da inviare alla configurazione di log. I segreti utilizzati nella configurazione di log possono includere un token di autenticazione, un certificato o una chiave di crittografia. Per ulteriori informazioni, consulta Trasferimento di dati sensibili a un container Amazon ECS.

name

Tipo: string

Campo obbligatorio: sì

Il valore da impostare come variabile di ambiente sul container.

valueFrom

Tipo: string

Campo obbligatorio: sì

Il segreto da esporre alla configurazione di log del container.

"logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080", "splunk-token": "...", "tag": "...", ... }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "/ecs/logconfig/splunkcred" }] }
firelensConfiguration

Tipo: oggetto FirelensConfiguration

Campo obbligatorio: no

La configurazione Firelens per il container. Si utilizza per specificare e configurare un router di log per i log del container. Per ulteriori informazioni, consulta Inviare i log di Amazon ECS a un servizio AWS o AWS Partner.

{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }
options

Tipo: mappatura stringa a stringa

Campo obbligatorio: no

La mappa chiave/valore delle opzioni da utilizzare durante la configurazione del router di log. Questo campo è facoltativo e può essere utilizzato per aggiungere ulteriori metadati, ad esempio il processo, la definizione di attività, il cluster e i dettagli dell'istanza di container all'evento di log. Se specificato, la sintassi da utilizzare è "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}. Per ulteriori informazioni, consulta Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens.

type

Tipo: string

Campo obbligatorio: sì

Il router di log da utilizzare. I valori validi sono fluentd o fluentbit.

Sicurezza

Per ulteriori informazioni sulla sicurezza di container, consultare Best practice per la sicurezza delle attività e dei container di Amazon ECS.

credentialSpecs

Tipo: array di stringhe

Campo obbligatorio: no

Un elenco di ARN in SSM o Amazon S3 per un file di specifica delle credenziali (CredSpec) che configura il container per l'autenticazione Active Directory. Consigliamo di utilizzare questo parametro anziché dockerSecurityOptions. Il numero massimo di ARN è 1.

Esistono due formati per ogni ARN.

credentialspecdomainless:MyARN

Utilizza credentialspecdomainless:MyARN per fornire un file CredSpec con una sezione aggiuntiva per un segreto in Secrets Manager. Specifica le credenziali di accesso al dominio nel campo segreto.

Ogni attività eseguita su qualsiasi istanza di container può aggiungere domini diversi.

Puoi utilizzare questo formato senza aggiungere l'istanza di container a un dominio.

credentialspec:MyARN

Utilizza credentialspec:MyARN per fornire un nome a un file CredSpec per un singolo dominio.

Devi aggiungere l'istanza di container al dominio prima di iniziare qualsiasi attività che utilizzi questa definizione delle attività.

In entrambi i formati, sostituisci MyARN con l'ARN in SSM o Amazon S3.

Il file credspec deve fornire un ARN in Secrets Manager per un segreto contenente il nome utente, la password e il dominio a cui collegarsi. Per una maggiore sicurezza, l'istanza non viene aggiunta al dominio per l'autenticazione senza dominio. Le altre applicazioni sull'istanza non possono utilizzare le credenziali senza dominio. Puoi utilizzare questo parametro per eseguire attività sulla stessa istanza, anche se le attività devono aggiungere domini diversi. Per ulteriori informazioni, consulta Utilizzo di gMSA per i container Windows e Utilizzo di gMSA per i container Linux.

privileged

Tipo: Booleano

Campo obbligatorio: no

Se il parametro è true, al container vengono assegnati privilegi elevati nell'istanza di container host (simile all'utente root). Si consiglia di non far funzionare i container con privileged. Nella maggior parte dei casi, puoi specificare i privilegi esatti necessari utilizzando i parametri specifici anziché privileged.

Questo parametro è mappato a Privileged nella creazione container del comando del docker e l'opzione --privileged per docker run.

Nota

Questo parametro non è supportato per i container o le attività Windows che utilizzano il tipo di avvio Fargate.

Il valore predefinito è false.

"privileged": true|false
user

Tipo: string

Campo obbligatorio: no

L'utente da usare all'interno del container. Questo parametro è mappato a User nella creazione container del comando del docker e l'opzione --user per docker run.

Importante

Quando esegui attività che utilizzano la modalità di rete host, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.

È possibile specificare user utilizzando i seguenti formati. Un eventuale UID o GID deve essere specificato come numero intero positivo.

  • user

  • user:group

  • uid

  • uid:gid

  • user:gid

  • uid:group

Nota

Questo parametro non è supportato per i container Windows.

"user": "string"
dockerSecurityOptions

Tipo: array di stringhe

Valori validi: "no-new-privileges" | "apparmor:PROFILE" | "label:value" | "credentialspec:CredentialSpecFilePath"

Campo obbligatorio: no

Un elenco di stringhe per fornire una configurazione personalizzata per più sistemi di sicurezza.

Per le attività Linux, questo parametro può essere utilizzato per fare riferimento a etichette personalizzate per i sistemi di sicurezza su più livelli SELinux e AppArmor .

Questo parametro può essere utilizzato per fare riferimento a un file di specifica delle credenziali che configura un container per l'autenticazione di Active Directory. Per ulteriori informazioni, consultare Informazioni su come utilizzare i gMSA per i container Windows EC2 per Amazon ECS e Utilizzo del gMSA per container EC2 Linux su Amazon ECS.

Questo parametro è mappato a SecurityOpt nella creazione container del comando del docker e l'opzione --security-opt per docker run.

"dockerSecurityOptions": ["string", ...]
Nota

L'agente del container Amazon ECS che viene eseguito su un'istanza di container deve registrarsi con le variabili di ambiente ECS_SELINUX_CAPABLE=true o ECS_APPARMOR_CAPABLE=true prima che i container posizionati su tale istanza possano utilizzare queste opzioni di sicurezza. Per ulteriori informazioni, consulta Configurazione dell'agente del container Amazon ECS.

Limiti delle risorse

ulimits

Tipo: array di oggetti

Campo obbligatorio: no

Un elenco di valori ulimit da definire per un container. Questo valore sovrascrive l'impostazione della quota di risorse predefinite per il sistema operativo. Questo parametro è mappato a Ulimits nella creazione container del comando del docker e l'opzione --ulimit per docker run.

Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.

Nota

Questo parametro non è supportato per i container Windows.

"ulimits": [ { "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack", "softLimit": integer, "hardLimit": integer } ... ]
name

Tipo: string

Valori validi: "core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"

Obbligatorio: sì, quando si utilizzano ulimits

type di ulimit.

hardLimit

Tipo: integer

Obbligatorio: sì, quando si utilizzano ulimits

Il limite rigido per il tipo ulimit. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del type di ulimit.

softLimit

Tipo: integer

Obbligatorio: sì, quando si utilizzano ulimits

Il limite flessibile per il tipo ulimit. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del type di ulimit.

Etichette Docker

dockerLabels

Tipo: mappatura stringa a stringa

Campo obbligatorio: no

Una mappa chiave/valore di etichette da aggiungere al container. Questo parametro è mappato a Labels nella creazione container del comando del docker e l'opzione --label per docker run.

Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.

"dockerLabels": {"string": "string" ...}

Altri parametri di definizione del container

I seguenti parametri di definizione del container possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS utilizzando l'opzione Configure via JSON (Configura tramite JSON). Per ulteriori informazioni, consulta Creazione di una definizione di attività di Amazon ECS attraverso la nuova console.

Parametri Linux

linuxParameters

Tipo: oggetto LinuxParameters

Campo obbligatorio: no

Le opzioni specifiche di Linux che vengono applicate al container, ad esempio KernelCapabilities.

Nota

Questo parametro non è supportato per i container Windows.

"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities

Tipo: oggetto KernelCapabilities

Campo obbligatorio: no

Le funzionalità di Linux per il container che vengono aggiunte o eliminate dalla configurazione predefinita fornita da Docker. Per ulteriori informazioni su queste funzionalità di Linux, consulta la pagina del manuale Linux capabilities(7).

add

Tipo: array di stringhe

Valori validi: "ALL" | "AUDIT_CONTROL" | "AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"

Campo obbligatorio: no

Le funzionalità di Linux per il container da aggiungere alla configurazione predefinita fornita da Docker. Questo parametro è mappato a CapAdd nella creazione container del comando del docker e l'opzione --cap-add per docker run.

add

Tipo: array di stringhe

Valori validi: "SYS_PTRACE"

Campo obbligatorio: no

Le funzionalità di Linux per il container da aggiungere alla configurazione predefinita fornita da Docker. Questo parametro è mappato a CapAdd nella creazione container del comando del docker e l'opzione --cap-add per docker run.

drop

Tipo: array di stringhe

Valori validi: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"

Campo obbligatorio: no

Le funzionalità di Linux per il container da eliminare dalla configurazione predefinita fornita da Docker. Questo parametro è mappato a CapDrop nella creazione container del comando del docker e l'opzione --cap-drop per docker run.

devices

Qualsiasi dispositivi host da esporre nel container. Questo parametro è mappato a Devices nella creazione container del comando del docker e l'opzione --device per docker run.

Tipo: matrice di oggetti Device

Campo obbligatorio: no

hostPath

Il percorso per il dispositivo nell'istanza di container dell'host.

Tipo: string

Campo obbligatorio: sì

containerPath

Il percorso nel container in cui esporre il dispositivo dell'host.

Tipo: string

Campo obbligatorio: no

permissions

Le autorizzazioni esplicite da fornire al container per il dispositivo. Di default, il container dispone di autorizzazioni per read, write e mknod sul dispositivo.

Tipo: matrice di stringhe

Valori validi: read | write | mknod

initProcessEnabled

Esegui un processo init nel container che inoltra segnali e raccoglie i processi. Questo parametro è mappato all'opzione --init su docker run.

Questo parametro richiede la versione 1.25 o successiva di Docker Remote API sull'istanza di container.

maxSwap

La quantità totale di memoria di swap (in MiB) che un container può utilizzare. Questo parametro viene convertito nell'opzione --memory-swap in docker run dove il valore sarebbe la somma della memoria del container più il valore maxSwap.

Se viene specificato il valore maxSwap di 0, il container non utilizzerà lo swap. I valori accettati sono 0 o qualsiasi numero intero positivo. Se il parametro maxSwap viene omesso, il container utilizza la configurazione di swap per l'istanza di container su cui è in esecuzione. È necessario impostare un valore maxSwap per il parametro swappiness da utilizzare.

sharedMemorySize

Valore per le dimensioni (in MiB) del volume /dev/shm. Questo parametro è mappato all'opzione --shm-size su docker run.

Tipo: integer

swappiness

Puoi utilizzare questo parametro per ottimizzare il funzionamento swappiness della memoria di un container. Un valore swappiness di 0 impedisce che si verifichi lo scambio, a meno che non sia necessario. Un valore swappiness di 100 fa sì che le pagine vengano scambiate frequentemente. I valori accettati sono numeri interi compresi tra 0 e 100. Se non specifichi un valore, viene utilizzato il valore predefinito di 60. Inoltre, se non specifichi un valore per maxSwap, questo parametro verrà ignorato. Questo parametro è mappato all'opzione --memory-swappiness su docker run.

Nota

Se utilizzi le attività su Amazon Linux 2023, il parametro swappiness non è supportato.

tmpfs

Il percorso del container, le opzioni di montaggio e le dimensioni massime (in MiB) del montaggio tmpfs. Questo parametro è mappato all'opzione --tmpfs su docker run.

Tipo: matrice di oggetti Tmpfs

Campo obbligatorio: no

containerPath

Percorso assoluto in cui deve essere montato il volume tmpfs.

Tipo: string

Campo obbligatorio: sì

mountOptions

L'elenco delle opzioni di montaggio del volume tmpfs.

Tipo: matrice di stringhe

Campo obbligatorio: no

Valori validi: "defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"

size

Le dimensioni massime (in MiB) del volume tmpfs.

Tipo: integer

Campo obbligatorio: sì

Dipendenze per i container

dependsOn

Tipo: matrice di oggetti ContainerDependency

Campo obbligatorio: no

Le dipendenze definite per l'avvio e la chiusura dei container. Un container può contenere più dipendenze. Se una dipendenza è definita per l'avvio del container, per la sua chiusura è invertita. Per un esempio, consulta Dipendenze per i container.

Nota

Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.

Le istanze richiedono almeno la versione 1.26.0 dell'agente del container per abilitare le dipendenze del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Aggiornamento dell'agente del container Amazon ECS. Se utilizzi l'AMI Amazon Linux ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione 1.26.0-1 del pacchetto ecs-init. Le istanze di container avviate dalla versione 20190301 o successive contengono già le versioni richieste dell'agente del container e di ecs-init. Per ulteriori informazioni, consulta AMI Linux ottimizzate per Amazon ECS.

"dependsOn": [ { "containerName": "string", "condition": "string" } ]
containerName

Tipo: string

Campo obbligatorio: sì

Il nome del container che deve soddisfare la condizione specificata.

condition

Tipo: string

Campo obbligatorio: sì

La condizione di dipendenza del container. Di seguito sono elencate le condizioni disponibili e il loro comportamento:

  • START: questa condizione emula il comportamento dei collegamenti e dei volumi. La condizione convalida l'avvio di un container dipendente prima di consentire l'avvio di altri container.

  • COMPLETE: questa condizione verifica l'esecuzione fino al completamento (uscita) di un container dipendente prima di consentire l'avvio di altri container. Può rivelarsi utile per container non essenziali che eseguono uno script e quindi escono. Questa condizione non può essere impostata su un container essenziale.

  • SUCCESS: questa condizione è uguale a COMPLETE, ma richiede anche che il container esca con stato zero. Questa condizione non può essere configurata su un container essenziale.

  • HEALTHY: questa condizione verifica che il container dipendente superi il controllo dell'integrità del container prima di consentire l'avvio di altri container. Ciò richiede che per il container dipendente siano configurati i controlli dell'integrità nella definizione di attività. Questa condizione viene confermata solo all'avvio dell'attività.

Timeout del container

startTimeout

Tipo: integer

Campo obbligatorio: no

Valori di esempio: 120

Tempo di attesa (in secondi) prima di rinunciare a risolvere le dipendenze per un container.

Ad esempio, vengono specificati due container in una definizione di attività: containerA ha una dipendenza sul containerB quando raggiunge lo stato COMPLETE, SUCCESS o HEALTHY. Se per containerB è specificato un valore startTimeout e non raggiunge lo stato desiderato entro tale periodo di tempo, allora containerA non viene avviato.

Nota

Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.

Il valore massimo è 120 secondi.

stopTimeout

Tipo: integer

Campo obbligatorio: no

Valori di esempio: 120

Durata (in secondi) di attesa prima che sia forzata la chiusura se il container non si arresta da solo normalmente.

Se il parametro stopTimeout non è specificato, viene utilizzato il valore impostato per la variabile di configurazione dell'agente del container Amazon ECS ECS_CONTAINER_STOP_TIMEOUT. Se non sono impostati né il parametro stopTimeout né la variabile di configurazione dell'agente ECS_CONTAINER_STOP_TIMEOUT, vengono utilizzati i valori predefiniti di 30 secondi per i container Linux e 30 secondi per quelli Windows. Per consentire il valore di timeout di arresto per un container, le istanze di container richiedono almeno la versione 1.26.0 dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta Aggiornamento dell'agente del container Amazon ECS. Se utilizzi l'AMI Amazon Linux ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione 1.26.0-1 del pacchetto ecs-init. Le istanze di container avviate dalla versione 20190301 o successive contengono già le versioni richieste dell'agente del container e di ecs-init. Per ulteriori informazioni, consulta AMI Linux ottimizzate per Amazon ECS.

Controlli di sistema

systemControls

Tipo: oggetto SystemControl

Campo obbligatorio: no

Un elenco di parametri kernel associati a un namespace da impostare nel container. Questo parametro è mappato a Sysctls nella creazione container del comando del docker e l'opzione --sysctl per docker run. Ad esempio, puoi configurare l'impostazione net.ipv4.tcp_keepalive_time per mantenere le connessioni di lunga durata.

Non è consigliabile specificare i parametri systemControls correlati alla rete per più container in un'unica attività che utilizza anche la modalità di rete awsvpc o host. Ciò comporta i seguenti svantaggi:

  • Per le attività che utilizzano la modalità di rete awsvpc, se hai impostato systemControls per qualsiasi container, si applica a tutti i container nell'attività. Se hai impostato diversi systemControls per più container in un'unica attività, il container che viene avviato per ultimo determina quale systemControls diventa effettivo.

  • Per attività che utilizzano la modalità di rete host, lo spazio dei nomi della rete systemControls non è supportato.

Se stai impostando uno spazio dei nomi della risorsa IPC per utilizzare i container nell'attività, ai controlli di sistema si applicano le seguenti condizioni. Per ulteriori informazioni, consulta Modalità IPC.

  • Per le attività che utilizzano la modalità host IPC, i valori systemControls dello spazio dei nomi IPC non sono supportati.

  • Per le attività che utilizzano la modalità IPC task, i valori di systemControls dello spazio dei nomi IPC si applicano a tutti i container all'interno di un'attività.

Nota

Questo parametro non è supportato per i container Windows.

"systemControls": [ { "namespace":"string", "value":"string" } ]
namespace

Tipo: string

Campo obbligatorio: no

Il parametro kernel associato a un namespace per il quale impostare un parametro value.

Valori dello spazio dei nomi IPC validi: "kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced" e Sysctls che iniziano con "fs.mqueue.*"

Valori dello spazio dei nomi di rete validi: Sysctls che iniziano con "net.*"

value

Tipo: string

Campo obbligatorio: no

Il valore per il parametro kernel associato a un namespace specificato in namespace.

Interactive

interactive

Tipo: Booleano

Campo obbligatorio: no

Quando questo parametro è true, puoi implementare le applicazioni containerizzate che richiedono l'allocazione di stdin o tty. Questo parametro è mappato a OpenStdin nella creazione container del comando del docker e l'opzione --interactive per docker run.

Il valore predefinito è false.

Pseudoterminale

pseudoTerminal

Tipo: Booleano

Campo obbligatorio: no

Quando il parametro è true, è allocato un TTY. Questo parametro è mappato a Tty nella creazione container del comando del docker e l'opzione --tty per docker run.

Il valore predefinito è false.

Nome dell'acceleratore di inferenza elastica

Il requisito della risorsa dell'acceleratore di Elastic Inference per la definizione di attività.

Nota

Amazon Elastic Inference (EI) non è più disponibile per i clienti.

I parametri seguenti sono permessi nella definizione di un processo:

deviceName

Tipo: string

Campo obbligatorio: sì

Il nome del dispositivo dell'acceleratore di inferenza elastica. Il deviceName deve anche essere riferito in una definizione del container; consulta Elastic Inference accelerator.

deviceType

Tipo: string

Campo obbligatorio: sì

L'acceleratore di inferenza elastica da utilizzare.

Vincoli di posizionamento delle attività

Quando registri una definizione di attività, puoi specificare vincoli di posizionamento dei processi che definiscono il modo in cui Amazon ECS posiziona i processi.

È possibile utilizzare i vincoli per posizionare le attività in base alla zona di disponibilità, al tipo di istanza o agli attributi personalizzati. Per ulteriori informazioni, consulta Definisci quali istanze di container utilizza Amazon ECS per le attività.

I seguenti parametri sono consentiti in una definizione del container:

expression

Tipo: string

Campo obbligatorio: no

Un'espressione del linguaggio di query del cluster da applicare al vincolo. Per ulteriori informazioni, consulta Creare espressioni per definire istanze di container per le attività di Amazon ECS.

type

Tipo: string

Campo obbligatorio: sì

Il tipo di vincolo. Utilizza memberOf per limitare la selezione a un gruppo di candidati validi.

Configurazione del proxy

proxyConfiguration

Tipo: oggetto ProxyConfiguration

Campo obbligatorio: no

I dettagli di configurazione del proxy App Mesh.

Per le attività che utilizzano EC2, per abilitare una configurazione proxy le istanze di container richiedono almeno la versione 1.26.0 dell'agente del container e almeno la versione 1.26.0-1 del pacchetto ecs-init. Se le istanze di container sono avviate dall'AMI ottimizzata per Amazon ECS versione 20190301 o successiva, contengono le versioni richieste dell'agente container e di ecs-init. Per ulteriori informazioni, consulta AMI Linux ottimizzate per Amazon ECS.

Nota

Questo parametro non è supportato per i container Windows.

"proxyConfiguration": { "type": "APPMESH", "containerName": "string", "properties": [ { "name": "string", "value": "string" } ] }
type

Tipo: string

Valori del valore: APPMESH

Campo obbligatorio: no

Il tipo di proxy. L'unico valore supportato è APPMESH.

containerName

Tipo: string

Campo obbligatorio: sì

Il nome del container che agirà come proxy App Mesh.

properties

Tipo: matrice di oggetti KeyValuePair

Campo obbligatorio: no

Il set di parametri di configurazione di rete per il plug-in Container Network Interface (CNI), specificati come coppie chiave-valore.

  • IgnoredUID: (obbligatorio) l'ID utente (UID) del container proxy come definito dal parametro user in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato IgnoredGID, questo campo può rimanere vuoto.

  • IgnoredGID: (obbligatorio) l'ID gruppo (GID) del container proxy come definito dal parametro user in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato IgnoredUID, questo campo può rimanere vuoto.

  • AppPorts (obbligatorio): l'elenco delle porte utilizzate dall'applicazione. Il traffico di rete per queste porte viene inoltrato alle porte ProxyIngressPort e ProxyEgressPort.

  • ProxyIngressPort (obbligatorio): specifica la porta a cui è diretto il traffico in entrata per le AppPorts.

  • ProxyEgressPort (obbligatorio): specifica la porta a cui è diretto il traffico in uscita da AppPorts.

  • EgressIgnoredPorts: (obbligatorio) il traffico in uscita diretto verso le porte specificate viene ignorato e non reindirizzato alla ProxyEgressPort. Può essere un elenco vuoto.

  • EgressIgnoredIPs: (obbligatorio) il traffico in uscita diretto verso gli indirizzi IP specificati viene ignorato e non reindirizzato alla ProxyEgressPort. Può essere un elenco vuoto.

name

Tipo: string

Campo obbligatorio: no

Nome della coppia chiave-valore.

value

Tipo: string

Campo obbligatorio: no

Valore della coppia chiave-valore.

Volumi

Quando si registra una definizione di attività, è possibile eventualmente specificare un elenco di volumi da trasferire al daemon Docker su un'istanza di container, che diventerà poi accessibile ad altri container nella stessa istanza.

Di seguito sono elencati i tipi di volumi di dati che è possibile utilizzare:

  • Volumi Amazon EBS: forniscono un'archiviazione a blocchi conveniente, durevole e ad alte prestazioni per carichi di lavoro containerizzati a uso intensivo di dati. È possibile collegare 1 volume Amazon EBS a ogni attività Amazon ECS durante l'esecuzione di un'attività isolata oppure durante la creazione o l'aggiornamento di un servizio. I volumi Amazon EBS sono supportati per le attività Linux. Per ulteriori informazioni, consulta Usare i volumi Amazon EBS con Amazon ECS.

  • Volumi Amazon EFS: fornisce uno storage di file semplice, scalabile e persistente da utilizzare con le attività Amazon ECS. Con Amazon EFS, la capacità di storage è elastica. La capacità di storage aumenta e si riduce automaticamente quando si aggiungono e si rimuovono i file. Le tue applicazioni hanno lo storage di cui hanno bisogno, quando serve. I volumi Amazon EFS sono supportati. Per ulteriori informazioni, consulta Usare i volumi Amazon EFS con Amazon ECS.

  • Volumi FSx for Windows File Server: fornisce server di file di Microsoft Windows completamente gestiti. Questi server di file sono supportati da un file system Windows. Quando utilizzi FSx for Windows File Server insieme ad Amazon ECS, puoi eseguire il provisioning delle attività di Windows con storage dei file persistente, distribuito, condiviso e statico. Per ulteriori informazioni, consulta Utilizzo di volumi FSx per Windows File Server con Amazon ECS.

    Questa opzione non è supportata per i container Windows su Fargate.

  • Volumi docker: un volume gestito da Docker creato in /var/lib/docker/volumes sull'istanza host Amazon EC2. I driver del volume Docker (detti anche plug-in) vengono utilizzati per integrare i volumi ai sistemi di archiviazione esterni, ad esempio Amazon EBS. È possibile utilizzare il driver del volume local integrato o un driver di volume di terza parte. I volumi Docker sono supportati solo quando si eseguono attività su istanze Amazon EC2. I container Windows supportano solo l'uso del driver local. Per usare i volumi Docker, specifica dockerVolumeConfiguration nella definizione di attività.

  • Montaggi vincolati: un file o una directory sulla macchina host montato in un container. I volumi host di montaggio vincolato sono supportati. Per usare i volumi host di montaggi vincolati, specifica un valore host e un valore opzionale sourcePath nella definizione di attività.

Per ulteriori informazioni, consulta Opzioni di archiviazione per le attività di Amazon ECS.

I seguenti parametri sono consentiti in una definizione del container.

name

Tipo: string

Campo obbligatorio: no

Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (-) e trattini bassi (_). Nel parametro sourceVolume dell'oggetto mountPoints della definizione del container viene fatto riferimento a questo nome.

host

Campo obbligatorio: no

Il parametro host viene utilizzato per legare il ciclo di vita del montaggio vincolato all'istanza host di Amazon EC2 anziché al processo, dove invece è archiviato. Se il parametro host è vuoto, il daemon Docker assegna un percorso host per il tuo volume di dati, ma non è garantito che i dati vengano mantenuti dopo che viene interrotta l'esecuzione del container a essi associato.

I container Windows possono montare intere directory sulla stessa unità di $env:ProgramData.

Nota

Il parametro sourcePath è supportato solo quando si utilizzano attività ospitate su istanze Amazon EC2.

sourcePath

Tipo: string

Campo obbligatorio: no

Quando viene utilizzato il parametro host, specifica un sourcePath per dichiarare il percorso sull'istanza Amazon EC2 dell'host presentata al container. Se questo parametro è vuoto, il daemon Docker assegna automaticamente un percorso host. Se il parametro host contiene una posizione del file sourcePath, il volume di dati rimane nella posizione specificata sull'istanza Amazon EC2 dell'host finché non viene eliminato manualmente. Se il valore sourcePath non esiste nell'istanza Amazon EC2 dell'host, viene creato automaticamente dal daemon Docker. Se la posizione è presente, i contenuti della cartella del percorso di origine vengono esportati.

configuredAtLaunch

Tipo: Booleano

Campo obbligatorio: no

Specificare se un volume è configurabile all'avvio. Se impostato su true, è possibile configurare il volume quando si esegue un'attività autonoma o quando si crea o si aggiorna un servizio. Se impostato su true, non sarà possibile fornire un'altra configurazione di volume nella definizione dell'attività. Questo parametro deve essere impostato su true per configurare un volume Amazon EBS da allegare a un'attività. L'impostazione di configuredAtLaunch su true e il rinvio della configurazione del volume alla fase di avvio consentono di creare definizioni di attività che non sono limitate a un tipo di volume o a impostazioni di volume specifiche. In questo modo, la definizione dell'attività è riutilizzabile in diversi ambienti di esecuzione. Per ulteriori informazioni consulta Amazon EBS volumes.

dockerVolumeConfiguration

Tipo: oggetto DockerVolumeConfiguration

Campo obbligatorio: no

Questo parametro viene specificato quando si utilizzano volumi docker. I volumi Docker sono supportati solo se i processi vengono eseguiti su istanze EC2. I container Windows supportano solo l'uso del driver local. Per utilizzare i montaggi vincolati, specifica invece un host.

scope

Tipo: string

Valori validi: task | shared

Campo obbligatorio: no

L'ambito del volume Docker che determina il suo ciclo di vita. I volumi Docker che rientrano nell'ambito task vengono automaticamente assegnati all'avvio del processo e distrutti quando il processo viene arrestato. I volumi Docker che vengono definiti come shared vengono mantenuti dopo l'arresto del processo.

autoprovision

Tipo: Booleano

Valore predefinito: false

Campo obbligatorio: no

Se questo valore è true, viene creato il volume Docker, se non è già presente. Questo campo è utilizzato solo se scope è shared. Se scope è task, questo parametro deve essere omesso.

driver

Tipo: string

Campo obbligatorio: no

Il driver del volume Docker da utilizzare. Il valore del driver deve corrispondere al nome del driver fornito da Docker perché questo nome è utilizzato per il posizionamento dell'attività. Se il driver è stato installato utilizzando la CLI del plugin Docker, utilizzare docker plugin ls per richiamare il nome del driver dall'istanza di container. Se il driver è stato installato utilizzando un altro metodo, utilizzare il rilevamento del plugin Docker per richiamare il nome del driver.

driverOpts

Tipo: string

Campo obbligatorio: no

Una mappa delle opzioni specifiche del driver Docker da inviare. Questo parametro fa riferimento a DriverOpts nella sezione Crea un volume di Docker.

labels

Tipo: string

Campo obbligatorio: no

Metadati personalizzati da aggiungere al volume Docker.

efsVolumeConfiguration

Tipo: oggetto EFSVolumeConfiguration

Campo obbligatorio: no

Questo parametro viene specificato quando si utilizzano volumi Amazon EFS.

fileSystemId

Tipo: string

Campo obbligatorio: sì

L'ID del file system Amazon EFS da utilizzare.

rootDirectory

Tipo: string

Campo obbligatorio: no

La directory all'interno del file system Amazon EFS da montare come directory principale all'interno dell'host. Se questo parametro viene omesso, verrà utilizzata la radice del volume Amazon EFS. La specifica di / avrà lo stesso effetto dell'omissione di questo parametro.

Importante

Se un punto di accesso EFS è specificato in authorizationConfig, il parametro della directory radice deve essere omesso o impostato su / per applicare il percorso impostato sul punto di accesso EFS.

transitEncryption

Tipo: string

Valori validi: ENABLED | DISABLED

Campo obbligatorio: no

Specifica se abilitare o meno la crittografia per i dati Amazon EFS in transito tra l'host Amazon ECS e il server Amazon EFS. Se si utilizza l'autorizzazione IAM di Amazon EFS, è necessario abilitare la crittografia di transito. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di DISABLED. Per ulteriori informazioni, consulta Crittografia dei dati in transito nella Guida per l'utente di Amazon Elastic File System.

transitEncryptionPort

Tipo: integer

Campo obbligatorio: no

La porta da utilizzare per l'invio di dati crittografati tra l'host Amazon ECS e il server Amazon EFS. Se non si specifica una porta di crittografia di transito, l'attività utilizzerà la strategia di selezione della porta usata dall'helper per il montaggio di Amazon EFS. Per ulteriori informazioni, consulta Assistente per il montaggio di EFS nella Guida per l'utente di Amazon Elastic File System.

authorizationConfig

Tipo: oggetto EFSAuthorizationConfig

Campo obbligatorio: no

I dettagli di configurazione dell'autorizzazione per il file system Amazon EFS.

accessPointId

Tipo: string

Campo obbligatorio: no

L'ID del punto di accesso da utilizzare. Se viene specificato un punto di accesso, il valore della directory root specificato in efsVolumeConfiguration deve essere omesso o impostato su / per applicare il percorso impostato sul punto di accesso EFS. Se si utilizza un punto di accesso, la crittografia di transito deve essere abilitata in EFSVolumeConfiguration. Per ulteriori informazioni, consulta Utilizzo dei punti di accesso Amazon EFS nella Guida per l'utente di Amazon Elastic File System.

iam

Tipo: string

Valori validi: ENABLED | DISABLED

Campo obbligatorio: no

Specificare se utilizzare o meno il ruolo IAM dell'attività Amazon ECS riportato in una definizione di attività durante il montaggio del file system Amazon EFS. Se abilitato, la crittografia di transito deve essere abilitata nella casella EFSVolumeConfiguration. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di DISABLED. Per ulteriori informazioni consulta Ruoli IAM per le attività.

FSxWindowsFileServerVolumeConfiguration

Tipo: oggetto FSxWindowsFileServerVolumeConfiguration

Campo obbligatorio: sì

Questo parametro viene specificato quando si utilizza il file system Amazon FSx for Windows File Server per l'archiviazione delle attività.

fileSystemId

Tipo: string

Campo obbligatorio: sì

L'ID del file system FSx for Windows File Server da utilizzare.

rootDirectory

Tipo: string

Campo obbligatorio: sì

La directory all'interno del file system FSx for Windows File Server da montare come directory root all'interno dell'host.

authorizationConfig
credentialsParameter

Tipo: string

Campo obbligatorio: sì

Le opzioni delle credenziali di autorizzazione.

opzioni:
domain

Tipo: string

Campo obbligatorio: sì

Un nome di dominio completo ospitato da una directory AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) o da una directory EC2 Active autonoma.

Tag

Quando registri una definizione di attività, puoi facoltativamente specificare tag di metadati applicati alla definizione di attività. I tag consentono di suddividere in categorie e organizzare la definizione di attività. Ciascun tag è formato da una chiave e da un valore opzionale. Li definisci entrambi. Per ulteriori informazioni, consulta Aggiunta di tag alle risorse Amazon ECS.

Importante

Non aggiungere Informazioni personali di identificazione o altre informazioni riservate o sensibili nei tag. I tag sono accessibili a molti servizi AWS, inclusa la fatturazione. I tag non sono destinati a essere utilizzati per dati privati o sensibili.

I seguenti parametri sono consentiti in un oggetto di tag.

key

Tipo: string

Campo obbligatorio: no

Una parte di una coppia chiave-valore che costituisce un tag. Una chiave è un'etichetta generale che funge da categoria per più valori di tag specifici.

value

Tipo: string

Campo obbligatorio: no

La parte facoltativa di una coppia chiave-valore che costituisce un tag. Un valore agisce come descrittore all'interno di una categoria di tag (chiave).

Altri parametri di definizione di attività

I seguenti parametri di definizione di attività possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS con l'opzione Configure via JSON (Configura tramite JSON). Per ulteriori informazioni, consulta Creazione di una definizione di attività di Amazon ECS attraverso la nuova console.

Modalità IPC

ipcMode

Tipo: string

Campo obbligatorio: no

Lo spazio dei nomi della risorsa IPC da utilizzare per i container nell'attività. I valori validi sono host, task o none. Se è specificato host, tutti i container all'interno delle attività che hanno specificato la modalità host IPC sulla stessa istanza di container condividono le stesse risorse IPC con l'istanza host Amazon EC2. Se è stato specificato task, tutti i container all'interno dell'attività specificata condividono le stesse risorse IPC. Se è stato specificato none, le risorse IPC all'interno dei container di un'attività sono private e non condivise con altri container in un'attività o sull'istanza di container. Se non è stato specificato alcun valore, la condivisione dello spazio dei nomi della risorsa IPC dipende dalle impostazioni del daemon Docker sull'istanza del container.

Se viene utilizzata la modalità host IPC, tieni presente che esiste un maggiore rischio di esposizione a spazi dei nomi IPC indesiderati.

Se stai impostando parametri kernel associati a uno spazio dei nomi utilizzando systemControls per i container nell'attività, allo spazio dei nomi della risorsa IPC si applica quanto segue.

  • Per le attività che utilizzano la modalità host IPC, spazi dei nomi IPC correlati a systemControls non sono supportati.

  • Per le attività che utilizzano la modalità task IPC, systemControls correlati allo spazio dei nomi IPC vengono applicati a tutti i container all'interno di un'attività.

Modalità PID

pidMode

Tipo: string

Valori validi: host | task

Campo obbligatorio: no

Lo spazio dei nomi del processo da utilizzare per i container nell'attività. I valori validi sono host o task. Ad esempio, i sidecar di monitoraggio potrebbero aver bisogno di pidMode per accedere a informazioni su altri container in esecuzione nella stessa attività.

Se è specificato host, tutti i container all'interno delle attività che hanno specificato la modalità host PID sulla stessa istanza di container condividono lo stesso spazio dei nomi dell'attività con l'istanza host Amazon EC2.

Se è stato specificato task, tutti i container all'interno dell'attività specificata condividono lo stesso spazio dei nomi del processo.

Se non è stato specificato alcun valore, l'impostazione predefinita è uno spazio dei nomi privato per ogni container.

Se viene utilizzata la modalità host PID, esiste un maggiore rischio di esposizione a spazi dei nomi di attività indesiderati.

Nota

Questo parametro non è supportato per i container Windows.

Iniezione di guasti

enableFaultInjection

Tipo: Booleano

Valori validi: true | false

Campo obbligatorio: no

Se questo parametro è impostato su true, nel payload di un'attività, Amazon ECS accetta richieste di iniezione di guasti dai container della stessa. Questo parametro è impostato su false per impostazione predefinita.