Aufgabendefinitionsparameter - Amazon Elastic Container Service

Aufgabendefinitionsparameter

Task-Definitionen werden in separate Teile untergliedert: die Aufgabenfamilie, die IAM-Aufgabenrolle, den Netzwerkmodus, Container-Definitionen, Volumes, Aufgaben-Platzierungsbedingungen und Starttypen. Die Familien- und Containerdefinitionen sind in einer Aufgabendefinition obligatorisch, während Aufgabenrolle, Netzwerkmodus, Volumes, Aufgabenplatzierungseinschränkungen und Starttyp optional sind.

Im Folgenden finden Sie weitere detaillierte Beschreibungen die einzelnen Aufgabendefinitionsparameter.

Family

family

Typ: Zeichenfolge

Erforderlich: Ja

Wenn Sie eine Aufgabendefinition registrieren, vergeben Sie eine Familie, ähnlich einem Namen für mehrere Versionen der Aufgabendefinition, die mit einer Revisionsnummer angegeben ist. Die erste Aufgabendefinition, die in einer bestimmten Familie registriert wird, erhält die Revision 1 und alle danach registrierten Definitionen erhalten eine sequenzielle Revisionsnummer.

Starttypen

Wenn Sie eine Aufgabendefinition registrieren, können Sie einen Starttyp angeben, an dem Amazon ECS die Aufgabendefinition überprüfen soll. Eine Client-Ausnahme wird zurückgegeben, wenn die Aufgabendefinition nicht anhand der angegebenen Kompatibilitäten validiert. Weitere Informationen finden Sie unter Amazon ECS-Starttypen.

Der folgende Parameter ist in einer Aufgabendefinition zulässig:

requiresCompatibilities

Typ: Zeichenfolgen-Array

Erforderlich: nein

Zulässige Werte: EC2 | FARGATE | EXTERNAL

Der Starttyp, der die Aufgabendefinition validiert. Dadurch kann überprüft werden, ob alle in der Aufgabendefinition verwendeten Parameter den Anforderungen des Starttyps entsprechen.

Aufgabenrolle

taskRoleArn

Typ: Zeichenfolge

Erforderlich: nein

Wenn Sie eine Aufgabedefinition registrieren, können Sie eine Aufgabenrolle für eine AMI-Rolle bereitstellen, über die die Container in der Aufgabe die AWS-APIs aufrufen können, die in den zugehörigen Richtlinien in Ihrem Namen festgelegt sind. Weitere Informationen finden Sie unter IAM-Rollen für Aufgaben.

IAM-Rollen für Aufgaben unter Windows erfordern, dass die Option -EnableTaskIAMRole beim Starten des Amazon ECS-optimierten Windows Server-AMI festgelegt ist. Ihre Container müssen außerdem bestimmten Konfigurationscode ausführen, damit diese Funktion genutzt werden kann. Weitere Informationen finden Sie unter Windows-IAM-Rollen für Aufgaben.

Aufgabenausführungsrolle

executionRoleArn

Typ: Zeichenfolge

Erforderlich: nein

Der Amazon-Ressourcenname (ARN) der Aufgabenausführungsrolle, die dem Amazon ECS-Containeragenten die Berechtigung erteilt, AWS-API-Aufrufe in Ihrem Namen durchzuführen. Die IAM-Rolle für die Aufgabenausführung ist je nach den Anforderungen Ihrer Aufgabe erforderlich. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

Netzwerkmodus

networkMode

Typ: Zeichenfolge

Erforderlich: nein

Der Docker-Netzwerkmodus, der für die Container in der Aufgabe verwendet werden soll. Für Amazon ECS-Aufgaben, die auf Amazon EC2 Linux-Instances gehostet werden, sind die gültigen Werte none, bridge, awsvpc und host. Wenn kein Netzwerkmodus angegeben ist, ist der Standardnetzwerkmodus bridge. Für Amazon ECS-Aufgaben, die auf Amazon EC2 Windows-Instances gehostet werden, sind die gültigen Werte default undawsvpc. Wenn kein Netzwerkmodus angegeben wird, wird der Netzwerkmodus default benutzt.

Wenn der Netzwerkmodus auf none festgelegt ist, verfügen die Container der Aufgabe über keine externe Konnektivität und Port-Zuweisungen können nicht in der Containerdefinition angegeben werden.

Wenn der Netzwerkmodus auf bridge festgelegt ist, nutzt die Aufgabe das integrierte virtuelle Netzwerk von Docker, welches innerhalb jeder Container-Instance ausgeführt wird.

Wenn der Netzwerkmodus auf host festgelegt ist, umgeht die Aufgabe das integrierte virtuelle Netzwerk von Docker und weist Container-Ports direkt der Netzwerkschnittstelle der Amazon-EC2-Instance zu. In diesem Modus können Sie nicht mehrere Instanziierungen derselben Aufgabe auf einer einzelnen Container-Instance ausführen, wenn Port-Zuweisungen verwendet werden.

Wichtig

Wenn Sie den Netzwerkmodus host nutzen, sollten Sie Container nicht über den Root-Benutzer (UID 0) ausführen. Es wird als Best Practice angesehen, einen Nicht-Root-Benutzer zu verwenden.

Für den Netzwerkmodus awsvpc wird die Aufgabe einer Elastic-Network-Schnittstelle zugeordnet und Sie müssen eine NetworkConfiguration angeben, wenn Sie mit der Aufgabendefinition einen Service erstellen oder eine Aufgabe ausführen wollen. Weitere Informationen finden Sie unter Amazon ECS-Aufgabenvernetzung. Derzeit unterstützen nur das Amazon ECS-optimierte AMI, andere Amazon Linux-Varianten mit dem Paket ecs-init oder die AWS-Fargate-Infrastruktur den Netzwerkmodus awsvpc.

Die Netzwerkmodi host und awsvpc bieten die höchste Netzwerkleistung für Container, da sie den Amazon EC2-Netzwerk-Stack anstelle des virtualisierten Netzwerk-Stacks des bridge-Modus verwenden. Für die Netzwerkmodi host und awsvpc sind die freigegebenen Container-Ports direkt auf den entsprechenden Host-Port (für den Netzwerkmodus host) oder den angehängten Elastic-Network-Schnittstellenanschluss (für den Netzwerkmodus awsvpc) abgebildet. Sie können also keine dynamischen Host-Port-Zuordnungen nutzen.

Wenn Sie den Fargate-Starttyp verwenden, ist der Netzwerkmodus awsvpc erforderlich. Wenn Sie den Starttyp EC2 verwenden, hängt der zulässige Netzwerkmodus vom zugrunde liegenden EC2-Instance-Betriebssystem ab. Unter Linux können beliebige Netzwerkmodi verwendet werden. Falls Windows, können Modi default und awsvpc verwendet werden.

Aufgabengröße

Wenn Sie eine Aufgabendefinition registrieren, können Sie den gesamten CPU- und Arbeitsspeicher für die Aufgabe angeben. Dies erfolgt separat von den Werten cpu und memory bei der Containerdefinition. Für Aufgaben, die auf Amazon-EC2-Instances gehostet werden, sind diese Felder optional. Für Aufgaben, die auf Fargate gehostet werden, sind diese Felder erforderlich und es gibt für spezifische Werte für cpu und memory, die unterstützt werden.

Anmerkung

CPU- und Speicherparameter auf Aufgabenebene werden für Windows-Container ignoriert. Es wird empfohlen, für Windows-Container Ressourcen auf Container-Ebene festzulegen.

Der folgende Parameter ist in einer Aufgabendefinition zulässig:

cpu

Typ: Zeichenfolge

Erforderlich: Bedingt

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

Das harte Limit der CPU-Einheiten, die für die Aufgabe vorhanden sind. Dies kann in einer Aufgabendefinition als Ganzzahl mit CPU-Einheiten ausgedrückt werden, z. b. 1024, oder als Zeichenfolge mit vCPUs, z. B. 1 vCPU oder 1 vcpu. Wenn die Aufgabendefinition registriert ist, wird ein vCPU-Wert in eine Ganzzahl umgewandelt, die die CPU-Einheiten angibt.

Für Aufgaben, die auf Amazon-EC2-Instances gehostet werden, ist dieses Feld optional. Wenn Ihr Cluster keine registrierten Container-Instances mit den entsprechenden CPU-Einheiten hat, schlägt die Aufgabe fehl. Unterstützte Werte liegen zwischen 128 CPU-Einheiten (0.125 vCPUs) und 10240 CPU-Einheiten (10 vCPUs).

Wenn Ihre Aufgaben auf Fargate ausgeführt werden, muss dieses Feld ausgefüllt werden und Sie müssen einen der folgenden Werte verwenden, die die unterstützten Werte für den Parameter memory bestimmen:

CPU-Wert

Speicherwert (MiB)

256 (0,25 vCPU)

512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)

512 (0,5 vCPU)

1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)

1024 (1 vCPU)

2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)

2048 (2 vCPU)

Zwischen 4096 (4 GB) und 16384 (16 GB) in Schritten von 1024 (1 GB)

4096 (4 vCPU)

Zwischen 8192 (8 GB) und 30720 (30 GB) in Schritten von 1024 (1 GB)

memory

Typ: Zeichenfolge

Erforderlich: Bedingt

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

Die harte Arbeitsspeichergrenze (in MiB), die für die Aufgabe zur Verfügung steht. Dies kann in einer Aufgabendefinition als Ganzzahl mit MiB ausgedrückt werden, z. b. 1024, oder als Zeichenfolge mit GB, z. B. 1GB oder 1 GB. Wenn die Aufgabendefinition registriert ist, wird ein GB-Wert in eine Ganzzahl umgewandelt, die die MiB angibt.

Für Aufgaben, die auf Amazon-EC2-Instances gehostet werden, ist dieses Feld optional und jeder Wert kann verwendet werden. Wenn ein Speicherwert auf Aufgabenebene angegeben wird, ist der Speicherwert auf Container-Ebene optional. Wenn Ihr Cluster keine registrierten Container-Instances mit dem erforderlichen Arbeitsspeicher hat, schlägt die Aufgabe fehl. Wenn Sie versuchen, Ihre Ressourcennutzung zu maximieren, indem Sie Ihren Aufgaben so viel Arbeitsspeicher wie möglich für einen bestimmten Instance-Typ zuweisen, lesen Sie nach unter Container-InstanceSpeicherverwaltung.

Wenn Ihre Aufgaben auf Fargate ausgeführt werden, muss dieses Feld ausgefüllt werden und Sie müssen einen der folgenden Werte verwenden, die die unterstützten Werte für den Parameter cpu bestimmen:

Speicherwert (MiB)

CPU-Wert

512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)

256 (0,25 vCPU)

1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)

512 (0,5 vCPU)

2048 (2 GB), 3072 (3 GB), 4096 (4GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)

1024 (1 vCPU)

Zwischen 4096 (4 GB) und 16384 (16 GB) in Schritten von 1024 (1 GB)

2048 (2 vCPU)

Zwischen 8192 (8 GB) und 30720 (30 GB) in Schritten von 1024 (1 GB)

4096 (4 vCPU)

Containerdefinitionen

Wenn Sie eine Aufgabendefinition registrieren, müssen Sie eine Liste der Containerdefinitionen angeben, die an den Docker-Daemon auf einer Container-Instance übergeben werden. Die folgenden Parameter sind in einer Containerdefinition zulässig.

Standardparameter für Containerdefinition

Die folgenden Aufgabendefinitionsparameter sind in Containerdefinitionen entweder erforderlich oder werden meistens verwendet.

Name

name

Typ: Zeichenfolge

Erforderlich: Ja

Der Name eines Containers. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig. Wenn Sie mehrere Container in einer Aufgabedefinition verknüpfen, kann der name eines Containers in die links eines anderen Containers eingefügt werden, um die Container zu verbinden.

Image

image

Typ: Zeichenfolge

Erforderlich: Ja

Das Image zum Starten eines Containers. Diese Zeichenfolge wird direkt an den Docker-Daemon übergeben. Images in der Docker Hub-Registrierung sind standardmäßig verfügbar. Sie können entweder mit repository-url/image:tag oder mit repository-url/image@digest auch andere Repositorys angeben. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche, Unterstriche, Doppelpunkte, Punkte und Schrägstriche sind zulässig. Dieser Parameter ist Image im Abschnitt Erstellen eines Containers der Docker Remote-API und dem Parameter IMAGE von docker run zugeordnet.

  • Wenn eine neue Aufgabe gestartet wird, ruft der Amazon ECS-Container-Agent die neueste Version des angegebenen Abbilds und das Tag für den Container ab, der verwendet werden soll. Allerdings werden nachfolgende Aktualisierungen eines Repository-Abbilds nicht an Aufgaben übertragen, die bereits ausgeführt werden.

  • Abbilder in privaten Registrierungen werden unterstützt. Weitere Informationen finden Sie unter Private Registrierungsauthentifizierung für Aufgaben.

  • Images in Amazon ECR-Repositorys können entweder mit der vollständigen registry/repository:tag- oder der registry/repository@digest-Namenskonvention angegeben werden. Zum Beispiel aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest oder aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE

  • Abbilder in offiziellen Repositorys in Docker Hub verwenden einen einzelnen Namen (z. B. ubuntu oder mongo).

  • Images in anderen Repositorys in Docker Hub sind mit einem Organisationsnamen qualifiziert (z. B, amazon/amazon-ecs-agent).

  • Abbilder in anderen Online-Repositorys sind durch einen Domänennamen zusätzlich qualifiziert (z. B, quay.io/assemblyline/ubuntu).

Memory

memory

Typ: Ganzzahl

Erforderlich: nein

Die Menge des Arbeitsspeichers (in MiB), die dem Container bereitgestellt wird. Wenn Ihr Container versucht, das hier angegebene Limit zu überschreiten, wird der Container beendet. Die gesamte Speicherkapazität, die für alle Container reserviert ist, muss niedriger sein als der Aufgabenwert memory, sofern angegeben. Dieser Parameter ordnet zu Memory im Bereich Create a container der Docker Remote API und der Option --memory für die docker run zu.

Wenn Sie den Fargate-Starttyp verwenden, ist dieser Parameter optional.

Wenn Sie den EC2-Starttyp verwenden, müssen Sie entweder einen Speicherwert auf Aufgabenebene oder einen Speicherwert auf Container-Ebene angeben. Wenn Sie sowohl ein Wert für memory als auch für memoryReservation auf Containerebene angeben, muss memory größer als memoryReservation sein. Wenn Sie memoryReservation angeben, wird dieser Wert von den verfügbaren Speicherressourcen für die Container-Instance abgezogen, auf der der Container platziert ist. Andernfalls wird der Wert memory verwendet.

Der Docker-Daemon reserviert mindestens 4 MiB Arbeitsspeicher für einen Container, deshalb sollten Sie nicht weniger als 4 MiB Arbeitsspeicher für Ihre Container angeben.

Anmerkung

Wenn Sie versuchen, Ihre Ressourcennutzung zu maximieren, indem Sie Ihren Aufgaben so viel Arbeitsspeicher wie möglich für einen bestimmten Instance-Typ zuweisen, lesen Sie nach unter Container-InstanceSpeicherverwaltung.

memoryReservation

Typ: Ganzzahl

Erforderlich: nein

Die weiche Arbeitsspeichergrenze (in MiB) für die Reservierung für den Container. Wenn der Systemspeicher strittig ist, versucht Docker den Speicher des Containers auf dieses weiche Limit zu begrenzen. Ihr Container kann jedoch mehr Speicher nutzen, wenn dies erforderlich ist, und zwar entweder bis zum harten Limit, das im Parameter memory (falls zutreffend) angegeben ist, oder bis zum gesamten verfügbaren Speicher auf der Container-Instance, je nachdem, was zuerst auftritt. Dieser Parameter ordnet zu MemoryReservation im Bereich Create a container der Docker Remote API und der Option --memory-reservation für die docker run zu.

Wenn kein Speicherwert auf Aufgabenebene angegeben ist, müssen Sie eine Ganzzahl ungleich Null für einen oder beide Werte von memory oder memoryReservation in einer Containerdefinition angeben. Wenn Sie beide angeben, muss memory größer als memoryReservation sein. Wenn Sie memoryReservation angeben, wird dieser Wert von den verfügbaren Speicherressourcen für die Container-Instance abgezogen, auf der der Container platziert ist. Andernfalls wird der Wert memory verwendet.

Wenn Ihr Container z. B. normalerweise 128 MiB Arbeitsspeicher verbraucht, dieser Wert gelegentlich und kurzzeitig jedoch 256 MiB Arbeitsspeicher erreicht, können Sie eine memoryReservation in Höhe von 128 MiB und ein hartes Limit für memory von 300 MiB einrichten. Mit dieser Konfiguration könnte der Container zwar nur 128 MiB Arbeitsspeicher von den verbleibenden Ressourcen auf der Container-Instance reservieren, der Container könnte bei Bedarf aber auch mehr Speicherressourcen verwenden.

Der Docker-Daemon reserviert mindestens 4 MiB Arbeitsspeicher für einen Container, deshalb sollten Sie nicht weniger als 4 MiB Arbeitsspeicher für Ihre Container angeben.

Port-Zuweisungen

portMappings

Typ: Objekt-Array

Erforderlich: nein

Port-Zuweisungen ermöglichen Containern den Zugriff auf Ports der Host-Container-Instance, um Datenverkehr zu senden oder zu empfangen.

Für Aufgabendefinitionen, die den Netzwerkmodus awsvpc verwenden, sollten Sie nur das containerPort festlegen. hostPort kann leer bleiben oder muss denselben Wert wie containerPort haben.

Die Port-Zuweisungen unter Windows verwenden die Gateway-Adresse NetNAT und nicht localhost. Für Port-Zuweisungen unter Windows gibt es kein Loopback, daher können Sie auch nicht vom Host selbst auf den zugewiesenen Port eines Containers zugreifen.

Dieser Parameter ordnet zu PortBindings im Bereich Create a container der Docker Remote API und der Option --publish für die docker run zu. Wenn der Netzwerkmodus einer Aufgabendefinition auf host festgelegt ist, müssen die Host-Ports entweder undefiniert sein oder mit dem Container-Port in der Port-Zuweisung übereinstimmen.

Anmerkung

Nachdem eine Aufgabe den Status RUNNING erreicht hat, sind manuelle und automatische Host- und Container-Port-Zuordnungen an den folgenden Orten sichtbar:

  • Konsole: Abschnitt Network Bindings (Netzwerk-Bindungen) einer Container-Beschreibung für eine bestimmte Aufgabe.

  • AWS CLI: Der Abschnitt networkBindings der Befehlsausgabe describe-tasks.

  • API: DescribeTasks-Antwort.

containerPort

Typ: Ganzzahl

Erforderlich: ja, wenn portMappings verwendet werden

Die Port-Nummer auf dem Container, der an den vom Benutzer angegebenen oder automatisch zugewiesenen Host-Port gebunden ist.

Wenn Sie Container in einer Aufgabe mit dem Starttyp Fargate verwenden, müssen offengelegte Ports mit containerPort spezifiziert werden.

Wenn Sie Container in einer Aufgabe mit dem Starttyp EC2 verwenden und einen Container-Port und keinen Host-Port angeben, erhält Ihr Container automatisch einen Host-Port im flüchtigen Port-Bereich. Weitere Informationen finden Sie unter hostPort. Port-Zuweisungen, die auf diese Weise automatisch zugewiesen werden, werden beim Limit der 100 reservierten Ports für eine Container-Instance nicht mitgezählt.

hostPort

Typ: Ganzzahl

Erforderlich: nein

Die Port-Nummer auf der Container-Instance, die für Ihren Container reserviert werden soll.

Wenn Sie Container in einer Aufgabe mit dem Starttyp Fargate verwenden, kann hostPort entweder leer bleiben oder muss denselben Wert wie containerPort haben.

Wenn Sie Container in einer Aufgabe mit dem Starttyp EC2 verwenden, können Sie einen nicht reservierten Host-Port für Ihre Container-Port-Zuweisung festlegen (dies wird als statische Host-Port-Zuweisung bezeichnet) oder den hostPort auslassen (bzw. auf 0 setzen), während Sie einen containerPort angeben – Ihr Container erhält dann automatisch einen Port (dies wird als dynamische Host-Port-Zuweisung bezeichnet) im flüchtigen Port-Bereich für das Betriebssystem Ihrer Container-Instance und die Docker-Version.

Der standardmäßige flüchtige Port-Bereich für Docker-Version 1.6.0 und später wird in der Instance unter aufgelistet /proc/sys/net/ipv4/ip_local_port_range. Wenn dieser Kernel-Parameter nicht verfügbar ist, wird der standardmäßige flüchtige Port-Bereich von 49153–65535 verwendet. Versuchen Sie nicht, einen Host-Port innerhalb des flüchtigen Port-Bereichs anzugeben, da diese für die automatische Zuweisung reserviert sind. Im Allgemeinen zählen Ports unter 32768 nicht zum flüchtigen Port-Bereich.

Die standardmäßigen reservierten Ports sind 22 für SSH, die Docker-Ports 2375 und 2376 und der Amazon ECS-Container-Agenten-Port 51678-51680. Ein Host-Port, der zuvor für eine laufende Aufgabe vom Benutzer angegeben wurde, wird ebenfalls reserviert, während die Aufgabe ausgeführt wird (nach Beenden einer Aufgabe wird der Host-Port wieder freigegeben). Die aktuell reservierten Ports werden in remainingResources der describe-container-instances-Ausgabe angezeigt, und eine Container-Instance kann bis zu 100 reservierte Ports gleichzeitig haben, einschließlich der standardmäßig reservierten Ports. Automatisch zugewiesene Ports werden nicht auf die 100 reservierten Ports angerechnet.

protocol

Typ: Zeichenfolge

Erforderlich: nein

Das für die Port-Zuweisung verwendete Protokoll. Gültige Werte sind tcp und udp. Der Standardwert ist tcp.

Wichtig

UDP-Unterstützung ist nur auf Container-Instances verfügbar, die mit Version 1.2.0 des Amazon ECS-Container-Agenten (z. B. amzn-ami-2015.03.c-amazon-ecs-optimized-AMI) oder höher gestartet wurden – oder mit Container-Agenten, die auf Version 1.3.0 oder höher aktualisiert wurden. Die neueste Version für Ihren Container-Agenten finden Sie unter Überprüfen des Amazon ECS-Container-Agenten.

Verwenden Sie die folgende Syntax, um einen Host-Port anzugeben:

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

Verwenden Sie die folgende Syntax, um einen Host-Port automatisch zuzuweisen:

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

Erweiterte Parameter für Containerdefinitionen

Die folgenden erweiterten Parameter für Containerdefinitionen bieten erweiterte Funktionen für den docker run-Befehl , der verwendet wird, um Container auf Ihren Amazon ECS-Container-Instances zu starten.

Zustandsprüfung

healthCheck

Der Befehl für die Container-Zustandsprüfung und die zugehörigen Konfigurationsparameter für den Container. Dieser Parameter ist HealthCheck im Abschnitt Erstellen eines Containers der Docker Remote-API und dem Parameter HEALTHCHECK der Docker-Ausführung zugeordnet.

Anmerkung

Der Amazon ECS-Container-Agent überwacht die in der Aufgabendefinition angegebenen Zustandsprüfungen und erstellt Berichte darüber. Amazon ECS überwacht keine Docker-Zustandsprüfungen, die in ein Container-Image eingebettet und nicht in der Container-Definition angegeben sind. Parameter für die Zustandsprüfung, die in einer Container-Definition angegeben sind, überschreiben Docker-Zustandsprüfungen, die im Container-Image vorhanden sind.

Sie können den Integritätsstatus einzelner Container und einer Aufgabe mit der DescribeTasks-API-Operation oder beim Anzeigen der Aufgabendetails in der Konsole anzeigen.

Im Folgenden werden die möglichen healthStatus-Werte für einen Container beschrieben:

  • HEALTHY: Die Containerintegritätsprüfung wurde erfolgreich bestanden.

  • UNHEALTHY: Die Containerintegritätsprüfung ist fehlgeschlagen.

  • UNKNOWN: Die Containerintegritätsprüfung wird ausgewertet, oder es ist keine Containerintegritätsprüfung definiert.

Im Folgenden werden die möglichen healthStatus-Werte für eine Aufgabe beschrieben. Der Status der Container-Zustandsprüfung von nicht entscheidenden Containern hat keine Auswirkungen auf den Integritätsstatus einer Aufgabe.

  • HEALTHY: Alle wichtigen Container innerhalb der Aufgabe haben ihre Integritätsprüfungen bestanden.

  • UNHEALTHY: Ein oder mehrere wesentliche Container haben ihre Integritätsprüfung nicht abgeschlossen.

  • UNKNOWN: Für die wesentlichen Container innerhalb der Aufgabe werden die Integritätsprüfungen weiterhin ausgewertet oder es sind keine Containerintegritätsprüfungen definiert.

Wenn eine Aufgabe manuell und nicht als Teil eines Service ausgeführt wird, wird der Lebenszyklus der Aufgabe fortgesetzt, unabhängig vom Integritätsstatus. Bei Aufgaben, die Teil eines Service sind, wird die Aufgabe gestoppt und vom Serviceplaner ersetzt, wenn sie als fehlerhaft gemeldet wird.

Im Folgenden finden Sie Hinweise zur Unterstützung von Container-Zustandsprüfungen:

  • Container Zustandsprüfungen erfordern Version 1.17.0 oder höher des Amazon ECS-Container-Agenten. Weitere Informationen finden Sie unter Überprüfen des Amazon ECS-Container-Agenten.

  • Container-Zustandsprüfungen werden für Aufgaben vom Typ Fargate unterstützt, wenn Sie die Plattform-Version 1.1.0 oder höher verwenden. Weitere Informationen finden Sie unter AWS Fargate-Plattformversionen.

  • Container-Zustandsprüfungen werden nicht für Aufgaben unterstützt, die Teil eines Services sind, der für die Nutzung eines Classic Load Balancers konfiguriert ist.

command

Ein Zeichenfolgen-Array, das den vom Container ausgeführten Befehl darstellt, um zu bestimmen, ob er fehlerfrei ist. Das Zeichenfolge-Array kann mit CMD beginnen, um die Befehlsargumente direkt auszuführen, oder mit CMD-SHELL, um den Befehl mit der Standard-Shell des Containers auszuführen. Ist nichts davon angegeben, wird standardmäßig CMD verwendet.

Wenn Sie eine Aufgabendefinition in der AWS Management Console registrieren, verwenden Sie eine durch Kommas getrennte Liste von Befehlen, die automatisch in eine Zeichenfolge konvertiert werden, nachdem die Aufgabendefinition erstellt wurde. Eine Beispieleingabe für eine Zustandsprüfung kann folgendermaßen lauten:

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

Bei der Registrierung einer Aufgabendefinition mithilfe der JSON-Panel-AWS Management Console, der AWS CLI, oder den APIs sollten Sie die Liste der Befehle in eckigen Klammern einschließen. Eine Beispieleingabe für eine Zustandsprüfung kann folgendermaßen lauten:

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

Der Beendigungscode 0 bedeutet eine erfolgreiche Ausführung und ein Beendigungscode ungleich Null bedeutet, dass ein Fehler aufgetreten ist. Weitere Informationen finden Sie unter HealthCheck im Bereich Create a container der Docker Remote API.

interval

Der Zeitraum in Sekunden zwischen den Ausführungen der Zustandsprüfung. Sie können zwischen 5 und 300 Sekunden angeben. Der Standardwert liegt bei 30 Sekunden.

timeout

Der Zeitraum in Sekunden, wie lange gewartet wird, bis eine Zustandsprüfung erfolgreich ist, bevor sie als fehlerhaft betrachtet wird. Sie können zwischen 2 und 60 Sekuden angeben. Der Standardwert liegt bei 5 Sekunden.

retries

Die Anzahl, wie oft eine fehlgeschlagene Zustandsprüfung wiederholt wird, bevor der Container als fehlerhaft betrachtet wird. Sie können zwischen 1 und 10 Wiederholungen angeben. Der Standardwert ist drei Wiederholungsversuche.

startPeriod

Der optionale Übergangszeitraum, wie lange der Container Zeit für einen Bootstrap hat, bevor fehlgeschlagene Zustandsprüfungen der maximalen Anzahl an Wiederholungen angerechnet werden. Sie können zwischen 0 und 300 Sekunden angeben. Die startPeriod ist standardmäßig deaktiviert.

Environment

cpu

Typ: Ganzzahl

Erforderlich: nein

Die Anzahl der physischen cpu-Einheiten, die der Amazon ECS-Containeragent für den Container reserviert. Dieser Parameter ordnet zu CpuShares im Bereich Create a container der Docker Remote API und der Option --cpu-shares für die docker run zu.

Dieses Feld ist für Aufgaben mit dem Starttyp Fargate optional. Die einzige Anforderung ist, dass die gesamte reservierte CPU-Kapazität für alle Container in einer Aufgabe auf Aufgabenebene unter dem Wert cpu liegt.

Anmerkung

Sie können die Anzahl der CPU-Einheiten ermitteln, die pro Amazon-EC2-Instance-Typ verfügbar sind, indem Sie die Anzahl vCPUs, die für den jeweiligen Instance-Typ auf der Detailseite Amazon-EC2-Instances aufgeführt sind, mit 1,024 multiplizieren.

Linux-Container teilen sich nicht zugewiesene CPU-Einheiten mit anderen Containern auf der Container-Instance im gleichen Verhältnis wie die ihnen zugewiesene Menge. Wenn Sie z. B. eine Aufgabe für einen einzelnen Container auf einem Instance-Typ mit einem Kern ausführen, für den 512 CPU-Einheiten angegeben sind, und dies die einzige Aufgabe ist, die auf der Container-Instance ausgeführt wird, könnte dieser Container jederzeit die gesamte Menge von 1 024 CPU-Einheiten nutzen. Wenn Sie jedoch auf dieser Container-Instance eine weitere Kopie der gleichen Aufgabe gestartet haben, würde jede Aufgabe bei Bedarf eine garantierte Menge von mindestens 512 CPU-Einheiten erhalten. Jeder der Container könnte automatisch mehr CPU-Einheiten nutzen, wenn diese vom anderen Container nicht verwendet werden. Wenn jedoch beide Aufgaben die ganze Zeit 100 % aktiv sind, stünden ihnen jeweils nur 512 CPU-Einheiten zur Verfügung.

Auf Linux-Container-Instances verwendet der Docker-Daemon auf der Container-Instance den CPU-Wert, um das relative CPU-Anteilsverhältnis für die laufenden Container zu berechnen. Weitere Informationen finden Sie unter CPU share constraint in der Docker-Dokumentation. Der kleinste gültige CPU-Freigabe wert, den der Linux-Kernel zulässt, ist 2. Der CPU-Parameter ist jedoch nicht erforderlich, und Sie können CPU-Werte unter 2 in Ihren Container-Definitionen verwenden. Bei CPU-Werten unter 2 (einschließlich 0) variiert das Verhalten je nach Version Ihres Amazon ECS-Container-Agenten:

  • Agentenversionen <= 1.1.0: Null-CPU-Werte werden an Docker als 0 übergeben, die von Docker dann in 1.024 CPU-Anteile konvertiert werden. CPU-Werte von 1 werden an Docker als 1 übergeben, die der Linux-Kernel in zwei CPU-Freigaben konvertiert.

  • Agentenversionen >= 1.2.0: Null-CPU-Werte und CPU-Werte von 1 werden an Docker als zwei CPU-Anteile übergeben.

Auf Windows-Container-Instances wird der CPU-Grenzwert als absolutes Limit oder als Kontingent festgelegt. Windows-Container haben nur auf die angegebene CPU-Menge Zugriff, die in der Aufgabendefinition definiert wird. Ein CPU-Wert mit dem Wert „NULL“ oder „null“ wird als 0 an Docker übergeben, die von Windows als 1 % einer CPU interpretiert wird.

gpu

Geben Sie Folgendes ein: Objekt ResourceRequirement

Erforderlich: nein

Die Anzahl der physischen GPUs, die der Amazon ECS-Containeragent für den Container reserviert. Die Anzahl der für alle Container in einer Aufgabe reservierten GPUs darf nicht größer sein als die Anzahl der verfügbaren GPUs für die Container-Instance, für die die Aufgabe gestartet wird. Weitere Informationen finden Sie unter Arbeiten mit GPUs auf Amazon ECS.

Anmerkung

Dieser Parameter wird nicht für Windows-Container oder Container unterstützt, die auf Fargate gehostet werden.

essential

Typ: Boolesch

Erforderlich: nein

Wenn der Parameter essential eines Containers als true gekennzeichnet ist und dieser Container ausfällt oder aus irgendeinem Grund beendet wird, werden auch alle anderen Container in der Aufgabe beendet. Wenn der Parameter essential eines Containers als false gekennzeichnet ist, wirkt sich ein Ausfall dieses Containers nicht auf die anderen Container in der Aufgabe aus. Wenn dieser Parameter ausgelassen wird, wird davon ausgegangen, dass ein Container „essential“ (entscheidend) ist.

Alle Aufgaben müssen über mindestens einen entscheidenden Container verfügen. Wenn eine Anwendung aus mehreren Containern besteht, sollten Sie die Container, die für einen gemeinsamen Zweck verwendet werden, in Komponenten gruppieren und die verschiedenen Komponenten in mehrere Aufgabendefinitionen trennen. Weitere Informationen finden Sie unter Anwendungsarchitektur.

"essential": true|false
entryPoint
Wichtig

Von frühen Versionen des Amazon ECS-Container-Agenten werden die entryPoint-Parameter nicht korrekt verarbeitet. Wenn Sie Probleme bei der Verwendung von entryPoint haben, aktualisieren Sie Ihren Container-Agenten oder geben Sie Ihre Befehle und Argumente stattdessen als command-Array-Objekte an.

Typ: Zeichenfolgen-Array

Erforderlich: nein

Der Eintrittspunkt, der an den Container übergeben wird. Dieser Parameter ordnet zu Entrypoint im Bereich Create a container der Docker Remote API und der Option --entrypoint für die docker run zu. Weitere Informationen zum Docker-Parameter ENTRYPOINT finden Sie unter https://docs.docker.com/engine/reference/builder/#entrypoint.

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

Typ: Zeichenfolgen-Array

Erforderlich: nein

Der Befehl, der an den Container übergeben wird. Dieser Parameter ist Cmd im Abschnitt Erstellen eines Containers der Docker Remote-API und dem Parameter COMMAND von docker run zugeordnet. Weitere Informationen zum Docker-Parameter CMD finden Sie unter https://docs.docker.com/engine/reference/builder/#cmd. Wenn mehrere Argumente vorhanden sind, sollte jedes Argument eine getrennte Zeichenfolge im Array sein.

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

Typ: Zeichenfolge

Erforderlich: nein

Das Arbeitsverzeichnis, in dem Befehle innerhalb des Containers ausgeführt werden. Dieser Parameter ordnet zu WorkingDir im Bereich Create a container der Docker Remote API und der Option --workdir für die docker run zu.

"workingDirectory": "string"
environmentFiles

Typ: Objekt-Array

Erforderlich: nein

Eine Liste von Dateien, die die Umgebungsvariablen enthalten, die an einen Container übergeben werden sollen. Dieser Parameter wird auf die Option --env-file abgebildet, um auf die docker run zu verweisen.

Sie können bis zu zehn Umgebungsdateien angeben. Die Datei muss eine .env Dateierweiterung haben. Jede Zeile in einer Umgebungsdatei sollte eine Umgebungsvariable im VARIABLE=VALUE Format enthalten. Zeilen, die mit # beginnen, werden als Kommentare behandelt und ignoriert. Weitere Informationen zur Syntax der Umgebungsvariablen finden Sie unter Deklarieren von Standardumgebungsvariablen in Datei.

Wenn in der Containerdefinition einzelne Umgebungsvariablen angegeben sind, haben sie Vorrang vor den Variablen, die in einer Umgebungsdatei enthalten sind. Wenn mehrere Umgebungsdateien angegeben werden, die dieselbe Variable enthalten, werden sie von oben nach unten verarbeitet. Es wird empfohlen, eindeutige Variablennamen zu verwenden. Weitere Informationen finden Sie unter Verwenden von Umgebungsvariablen.

value

Typ: Zeichenfolge

Erforderlich: Ja

Der Amazon-Ressourcenname (ARN) des Amazon S3-Objekts, das die Umgebungsvariablendatei enthält.

type

Typ: Zeichenfolge

Erforderlich: Ja

Dateityp, der verwendet werden muss. Der einzige unterstützte Wert ist s3.

environment

Typ: Objekt-Array

Erforderlich: nein

Die Umgebungsvariablen, die an einen Container übergeben werden. Dieser Parameter ordnet zu Env im Bereich Create a container der Docker Remote API und der Option --env für die docker run zu.

Wichtig

Die Verwendung von Klartext-Umgebungsvariablen für sensitive Informationen (wie etwa Zugangsdaten) wird nicht empfohlen.

name

Typ: Zeichenfolge

Erforderlich: ja, wenn environment verwendet wird

Der Name der Umgebungsvariable.

value

Typ: Zeichenfolge

Erforderlich: ja, wenn environment verwendet wird

Der Wert der Umgebungsvariable.

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

Typ: Objekt-Array

Erforderlich: Nein

Ein Objekt, durch das das Geheimnis dargestellt wird, das dem Container zur Verfügung gestellt werden soll. Weitere Informationen finden Sie unter Angabe sensibler Daten.

name

Typ: Zeichenfolge

Erforderlich: Ja

Der Wert, der als Umgebungsvariable auf dem Container eingestellt werden soll.

valueFrom

Typ: Zeichenfolge

Erforderlich: Ja

Das Geheimnis, das dem Container exponiert werden muss. Die unterstützten Werte sind entweder der vollständige ARN des AWS Secrets Manager-Geheimnisses oder der vollständige ARN des Parameters im AWS Systems Manager-Parameterspeicher.

Anmerkung

Wenn der Parameter Systems Manager-Parameterspeicher in der gleichen Region wie die Aufgabe existiert, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Geheimnisses verwenden. Wenn der Parameter in einer anderen Region existiert, muss der volle ARN angegeben werden.

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

Network settings (Netzwerkeinstellungen)

disableNetworking

Typ: Boolesch

Erforderlich: nein

Wenn dieser Parameter den Wert „true“ aufweist, ist die Netzwerkfunktion innerhalb des Containers deaktiviert. Dieser Parameter ist im Bereich Create a container der Docker Remote API der Option NetworkDisabled zugeordnet.

Anmerkung

Dieser Parameter wird nicht für Windows-Container oder Aufgaben unterstützt, die den Netzwerkmodus awsvpc verwenden.

"disableNetworking": true|false
links

Typ: Zeichenfolgen-Array

Erforderlich: nein

Über den Parameter link können Container miteinander kommunizieren, ohne dass Port-Zuweisungen nötig sind. Wird nur unterstützt, wenn der Netzwerkmodus einer Aufgabendefinition auf gesetzt ist bridge. Das Konstrukt name:internalName ist analog zu name:alias in Docker-Verbindungen. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig. Weitere Informationen zur Verbindung von Docker-Containern finden Sie unter https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/. Dieser Parameter ordnet zu Links im Bereich Create a container der Docker Remote API und der Option --link für die docker run zu.

Anmerkung

Dieser Parameter wird nicht für Windows-Container oder Aufgaben unterstützt, die den Netzwerkmodus awsvpc verwenden.

Wichtig

Container, die sich auf derselben Container-Instance befinden, können miteinander kommunizieren, ohne dass Verbindungen oder Host-Port-Zuweisungen erforderlich sind. Die Netzwerkisolierung auf einer Container-Instance wird durch Sicherheitsgruppen und VPC-Einstellungen gesteuert.

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

Typ: Zeichenfolge

Erforderlich: nein

Der Hostname, der für Ihren Container verwendet werden soll. Dieser Parameter ordnet zu Hostname im Bereich Create a container der Docker Remote API und der Option --hostname für die docker run zu.

Anmerkung

Der Parameter hostname wird nicht unterstützt, wenn Sie den Netzwerkmodus awsvpc verwenden.

"hostname": "string"
dnsServers

Typ: Zeichenfolgen-Array

Erforderlich: nein

Eine List der DNS-Server, die dem Container bereitgestellt werden. Dieser Parameter ordnet zu Dns im Bereich Create a container der Docker Remote API und der Option --dns für die docker run zu.

Anmerkung

Dieser Parameter wird nicht für Windows-Container oder Aufgaben unterstützt, die den Netzwerkmodus awsvpc verwenden.

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

Typ: Zeichenfolgen-Array

Erforderlich: nein

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

Eine List der DNS-Suchdomänen, die dem Container bereitgestellt werden. Dieser Parameter ordnet zu DnsSearch im Bereich Create a container der Docker Remote API und der Option --dns-search für die docker run zu.

Anmerkung

Dieser Parameter wird nicht für Windows-Container oder Aufgaben unterstützt, die den Netzwerkmodus awsvpc verwenden.

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

Typ: Objekt-Array

Erforderlich: nein

Eine Liste der Hostnamen und IP-Adresszuordnungen, die an die Datei /etc/hosts auf dem Container angefügt werden.

Dieser Parameter ordnet zu ExtraHosts im Bereich Create a container der Docker Remote API und der Option --add-host für die docker run zu.

Anmerkung

Dieser Parameter wird für Windows-Container oder -Aufgaben, die den Netzwerkmodus awsvpc verwenden, nicht unterstützt.

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

Typ: Zeichenfolge

Erforderlich: ja, wenn extraHosts verwendet werden

Der Hostname, der im Eintrag /etc/hosts verwendet werden soll.

ipAddress

Typ: Zeichenfolge

Erforderlich: ja, wenn extraHosts verwendet werden

Die IP-Adresse, die im Eintrag /etc/hosts verwendet werden soll.

Speicher und Protokollierung

readonlyRootFilesystem

Typ: Boolesch

Erforderlich: nein

Wenn dieser Parameter den Wert „true“ aufweist, erhält der Container Lesezugriff auf das Root-Dateisystem. Dieser Parameter ordnet zu ReadonlyRootfs im Bereich Create a container der Docker Remote API und der Option --read-only für die docker run zu.

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

"readonlyRootFilesystem": true|false
mountPoints

Typ: Objekt-Array

Erforderlich: Nein

Die Mountingpunkte für Daten-Volumes in Ihrem Container.

Dieser Parameter ordnet zu Volumes im Bereich Create a container der Docker Remote API und der Option --volume für die docker run zu.

Windows-Container können ganze Verzeichnisse auf dem gleichen Laufwerk wie mounten $env:ProgramData. Windows-Container können keine Verzeichnisse auf einem anderen Laufwerk mounten, und es ist kein laufwerksübergreifender Mountingpunkt möglich.

sourceVolume

Typ: Zeichenfolge

Erforderlich: Ja, wenn mountPoints verwendet werden

Der Name des zu mountenden Volumes.

containerPath

Typ: Zeichenfolge

Erforderlich: Ja, wenn mountPoints verwendet werden

Der Pfad auf dem Container, auf dem das Volume gemountet werden soll.

readOnly

Typ: Boolesch

Erforderlich: Nein

Wenn dieser Wert true lautet, verfügt der Container über schreibgeschützten Zugriff auf das Volume. Lautet der Wert false, dann verfügt der Container über Schreibzugriff auf das Volume. Der Standardwert ist false.

volumesFrom

Typ: Objekt-Array

Erforderlich: Nein

Die Daten-Volumens, die von einem anderen Container gemountet werden sollen. Dieser Parameter ordnet zu VolumesFrom im Bereich Create a container der Docker Remote API und der Option --volumes-from für die docker run zu.

sourceContainer

Typ: Zeichenfolge

Erforderlich: ja, wenn volumesFrom verwendet wird

Der Name des Containers, von dem die Volumes gemountet werden.

readOnly

Typ: Boolesch

Erforderlich: nein

Wenn dieser Wert true lautet, verfügt der Container über schreibgeschützten Zugriff auf das Volume. Lautet der Wert false, dann verfügt der Container über Schreibzugriff auf das Volume. Der Standardwert ist false.

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

Typ: LogConfiguration-Objekt

Erforderlich: nein

Die Angabe der Protokollkonfiguration für den Container.

Beispiele für Aufgabendefinitionen, die eine Protokollkonfiguration verwenden, finden Sie unter Beispiel für Aufgabendefinitionen.

Dieser Parameter ordnet zu LogConfig im Bereich Create a container der Docker Remote API und der Option --log-driver für die docker run zu. Standardmäßig verwenden Container den gleichen Protokolltreiber wie der Docker-Daemon. Wenn mit diesem Parameter in der Containerdefinition jedoch ein Protokolltreiber angegeben ist, kann der Container aber auch einen anderen Protokolltreiber als der Docker-Daemon verwenden. Um für einen Container einen anderen Protokolltreiber zu verwenden, muss das Protokollsystem auf der Container-Instance (oder einem anderen Protokollserver für die Remote-Protokollierung) ordnungsgemäß konfiguriert sein. Weitere Informationen zu den Optionen für die verschiedenen unterstützten Protokolltreiber finden Sie unter Configure logging drivers in der Docker-Dokumentation.

Beachten Sie unbedingt die folgenden Punkte, wenn eine Protokollkonfiguration für Ihre Container angegeben ist:

  • Aktuell unterstützt Amazon ECS einen Teil der Protokolltreiber, die für den Docker-Daemon verfügbar sind (siehe gültige Werte unten). Es ist möglich, dass in zukünftigen Releases des Amazon ECS-Container-Agenten weitere Protokolltreiber zur Verfügung stehen.

  • Für diesen Parameter muss Ihre Docker Remote API Version 1.18 oder höher in Ihrer Container-Instance verwenden.

  • Bei Aufgaben mit dem EC2-Starttyp muss der auf einer Container-Instance ausgeführte Amazon ECS-Container-Agent die auf dieser Instance verfügbaren Protokolltreiber mit der Umgebungsvariablen ECS_AVAILABLE_LOGGING_DRIVERS registrieren, bevor in der Instance platzierte Container diese Protokollkonfigurationsoptionen verwenden können. Weitere Informationen finden Sie unter Konfiguration des Amazon ECS-Container-Agenten.

  • Für Aufgaben mit dem Fargate-Starttyp muss jegliche zusätzliche erforderliche Software außerhalb der Aufgabe installiert werden, da Sie keinen Zugriff auf die zugrunde liegende Infrastruktur haben, auf der Ihre Aufgaben gehostet werden. Beispiel: Die Fluentd-Ausgangsaggregatoren oder ein Remote-Host, auf dem Logstash ausgeführt wird, um Gelf-Protokolle dorthin zu senden.

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

Typ: Zeichenfolge

Zulässige Werte: "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"

Erforderlich: ja, wenn logConfiguration verwendet wird

Der für den Container zu verwendende Protokolltreiber. Die zuvor aufgeführten gültigen Werte sind Protokolltreiber, mit denen der Amazon ECS-Container-Agent standardmäßig kommunizieren kann.

Für Aufgaben mit dem Fargate-Starttyp lauten die unterstützten Protokolltreiber awslogs, splunk und awsfirelens.

Für Aufgaben mit dem EC2-Starttyp lauten die unterstützten Protokolltreiber awslogs, fluentd, gelf, json-file, journald, logentries, syslog, splunk und awsfirelens.

Weitere Informationen zur Verwendung des Protokolltreibers awslogs in Aufgabendefinitionen zum Senden Ihrer Containerprotokolle an CloudWatch Logs finden Sie unter Verwenden des awslogs-Protokolltreibers.

Weitere Informationen zur Verwendung des Protokolltreibers awsfirelens finden Sie unter Weiterleitung benutzerdefinierter Protokolle.

Anmerkung

Wenn Sie einen benutzerdefinierten Treiber haben, der nicht aufgeführt ist, können Sie das Amazon ECS-Container-Agent-Projekt, das auf GitHub verfügbar ist, aufteilen und an die Arbeit mit diesem Treiber anpassen. Wir möchten Sie bitten, uns eventuelle Änderungswünsche mitzuteilen. Derzeit bieten wir jedoch keinen Support für die Ausführung von modifizierten Kopien dieser Software an.

Für diesen Parameter muss Ihre Docker Remote API Version 1.18 oder höher in Ihrer Container-Instance verwenden.

options

Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge

Erforderlich: nein

Die Konfigurationsoptionen zum Senden an den Protokolltreiber.

Für diesen Parameter muss Ihre Docker Remote API Version 1.19 oder höher in Ihrer Container-Instance verwenden.

secretOptions

Typ: Objekt-Array

Erforderlich: nein

Ein Objekt, das den geheimen Schlüssel darstellt, der an die Protokollkonfiguration übergeben werden soll. Weitere Informationen finden Sie unter Angabe sensibler Daten.

name

Typ: Zeichenfolge

Erforderlich: Ja

Der Wert, der als Umgebungsvariable auf dem Container eingestellt werden soll.

valueFrom

Typ: Zeichenfolge

Erforderlich: Ja

Das Geheimnis zur Bereitstellung der Protokollkonfiguration des Containers.

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

Typ: Objekt FirelensConfiguration

Erforderlich: Nein

Die FireLens-Konfiguration für den Container. Dies wird verwendet, um einen Protokollrouter für Container-Protokolle anzugeben und zu konfigurieren. Weitere Informationen finden Sie unter Weiterleitung benutzerdefinierter Protokolle.

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

Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge

Erforderlich: Nein

Die Optionen, die bei der Konfiguration des Protokollrouters verwendet werden sollen. Dieses Feld ist optional und kann verwendet werden, um eine benutzerdefinierte Konfigurationsdatei anzugeben oder dem Protokollereignis zusätzliche Metadaten hinzuzufügen, z. B. Aufgaben-, Aufgabendefinitions-, Cluster- und Container-Instance-Details. Wenn angegeben, ist die zu verwendende Syntax "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"}. Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition, die eine FireLens-Konfiguration verwendet.

type

Typ: Zeichenfolge

Erforderlich: Ja

Der zu verwendende Protokollrouter. Die gültigen Werte sind fluentd und fluentbit.

Security

privileged

Typ: Boolesch

Erforderlich: nein

Wenn dieser Parameter den Wert „true“ aufweist, erhält der Container erhöhte Berechtigungen auf der Host-Container-Instance (ähnlich wie der root-Benutzer).

Dieser Parameter ordnet zu Privileged im Bereich Create a container der Docker Remote API und der Option --privileged für die docker run zu.

Anmerkung

Dieser Parameter wird für Windows-Container oder -Aufgaben mit dem Starttyp Fargate nicht unterstützt.

"privileged": true|false
user

Typ: Zeichenfolge

Erforderlich: nein

Der Benutzer, der im Container verwendet werden soll. Dieser Parameter ordnet zu User im Bereich Create a container der Docker Remote API und der Option --user für die docker run zu.

Wichtig

Wenn Sie Aufgaben im Netzwerkmodus host ausführen, sollten Sie Container nicht über den Root-Benutzer (UID 0) ausführen. Es wird als Best Practice angesehen, einen Nicht-Root-Benutzer zu verwenden.

Sie können den user mit den folgenden Formaten angeben. Wenn Sie eine UID oder GID angeben, müssen Sie sie als positive Ganzzahl angeben.

  • user

  • user:group

  • uid

  • uid:gid

  • user:gid

  • uid:group

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

"user": "string"
dockerSecurityOptions

Typ: Zeichenfolgen-Array

Gültige Werte: „no-new-privileges“ | „apparmor:PROFILE“ | „label:value" | „credentialspec:CredentialSpecFilePath

Erforderlich: nein

Eine Liste der Zeichenfolgen für die Bereitstellung benutzerdefinierter Kennzeichnungen für mehrschichtige SELinux- und AppArmor-Sicherheitssysteme. Weitere Informationen zu gültigen Werten finden Sie unter Sicherheitskonfiguration für die Docker-Ausführung. Dieses Feld ist für Container in Aufgaben mit dem Starttyp Fargate nicht gültig.

Bei Windows-Containern kann dieser Parameter verwendet werden, um auf eine Anmeldeinformationsspezifikationsdatei zu verweisen, wenn ein Container für die Active Directory-Authentifizierung konfiguriert wird. Weitere Informationen finden Sie unter Verwenden von gMSAs für Windows-Container.

Dieser Parameter ordnet zu SecurityOpt im Bereich Create a container der Docker Remote API und der Option --security-opt für die docker zu.

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

Der auf einer Container-Instance ausgeführte Amazon ECS-Container-Agent muss mit der Umgebungsvariablen ECS_SELINUX_CAPABLE=true oder ECS_APPARMOR_CAPABLE=true registriert werden, bevor in der Instance platzierte Container diese Sicherheitsoptionen verwenden können. Weitere Informationen finden Sie unter Konfiguration des Amazon ECS-Container-Agenten.

Ressourcenlimits

ulimits

Typ: Objekt-Array

Erforderlich: nein

Eine Liste von ulimit-Werten, die für einen Container definiert werden sollen. Dieser Wert würde die Standardeinstellung für die Ressourcenbegrenzung für das Betriebssystem überschreiben. Dieser Parameter ordnet zu Ulimits im Bereich Create a container der Docker Remote API und der Option --ulimit für die docker run zu.

Amazon ECS-Aufgaben, die auf Fargate gehosted werden, verwenden die Standardwerte für Ressourcenlimits, die vom Betriebssystem gesetzt wurden. Ausgenommen ist der Ressourcenlimitparameter nofile, den Fargate überschreibt. Das Ressourcenlimit nofile beschränkt die Anzahl der geöffneten Dateien, die ein Container verwenden kann. Das weiche nofile-Standardlimit ist 1024, das harte Limit 4096. Weitere Informationen finden Sie unter Aufgabenressourcenlimits.

Für diesen Parameter muss Ihre Docker Remote API Version 1.18 oder höher in Ihrer Container-Instance verwenden.

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

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

Typ: Zeichenfolge

Zulässige Werte: "core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"

Erforderlich: ja, wenn ulimits verwendet werden

Der type des ulimit-Werts.

hardLimit

Typ: Ganzzahl

Erforderlich: ja, wenn ulimits verwendet werden

Das harte Limit für den ulimit-Typ.

softLimit

Typ: Ganzzahl

Erforderlich: ja, wenn ulimits verwendet werden

Das weiche Limit für den ulimit-Typ.

Docker-Bezeichnungen

dockerLabels

Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge

Erforderlich: nein

Eine Schlüssel-/Wertzuordnung von Bezeichnungen, die dem Container hinzugefügt werden sollen. Dieser Parameter ordnet zu Labels im Bereich Create a container der Docker Remote API und der Option --label für die docker run zu.

Für diesen Parameter muss Ihre Docker Remote API Version 1.18 oder höher in Ihrer Container-Instance verwenden.

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

Andere Parameter für die Containerdefinition

Die folgenden Parameter für die Containerdefinition können beim Registrieren von Aufgabendefinitionen in der Amazon ECS-Konsole mit der Option Configure via JSON (Über JSON konfigurieren) verwendet werden. Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition.

Linux-Parameter

linuxParameters

Typ: LinuxParameters-Objekt

Erforderlich: nein

Linux-spezifische Optionen für den Container, wie z. B. KernelCapabilities.

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

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

Typ: KernelCapabilities-Objekt

Erforderlich: nein

Die Linux-Funktionen für den Container, die zur von Docker bereitgestellten Standardkonfiguration hinzugefügt oder daraus entfernt werden. Weitere Informationen zu den Standardfunktionen und nicht standardmäßigen verfügbaren Funktionen finden Sie unter Runtime-Berechtigungen und Linux-Funktionen in der Referenz zu docker run. Weitere Informationen zu diesen Linux-Funktionen finden Sie auf der Linux-Handbuchseite Funktionen (7).

add

Typ: Zeichenfolgen-Array

Zulässige Werte: "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"

Erforderlich: nein

Die Linux-Funktionen für den Container, die zu der von Docker bereitgestellten Standardkonfiguration hinzugefügt werden sollen. Dieser Parameter ist CapAdd im Abschnitt Erstellen eines Containers der Docker Remote-API und der Option --cap-add für die Docker-Ausführung zugeordnet.

Anmerkung

Aufgaben, die auf Fargate gestartet werden, unterstützen lediglich das Hinzufügen der SYS_PTRACE-Kernelfunktion.

drop

Typ: Zeichenfolgen-Array

Zulässige Werte: "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"

Erforderlich: nein

Die Linux-Funktionen für den Container, die aus der von Docker bereitgestellten Standardkonfiguration entfernt werden sollen. Dieser Parameter ist CapDrop im Abschnitt Erstellen eines Containers der Docker Remote-API und der Option --cap-drop für die Docker-Ausführung zugeordnet.

devices

Alle Host-Geräte, die dem Container zur Verfügung gestellt werden sollen. Dieser Parameter ist Devices im Abschnitt Erstellen eines Containers der Docker Remote-API und der Option --device für die Docker-Ausführung zugeordnet.

Anmerkung

Wenn Sie Aufgaben verwenden, die den Starttyp Fargate nutzen, wird der Parameter devices nicht unterstützt.

Typ: Array von Device-Objekten

Erforderlich: Nein

hostPath

Der Gerätepfad auf der Hostcontainer-Instance.

Typ: Zeichenfolge

Erforderlich: Ja

containerPath

Der Pfad im Container, für den das Host-Gerät offengelegt werden soll.

Typ: Zeichenfolge

Erforderlich: Nein

permissions

Die expliziten Berechtigungen, die dem Container für das Gerät bereitgestellt werden sollen. Standardmäßig hat der Container Berechtigungen für read, writeund mknod auf dem Gerät.

Typ: Zeichenfolge-Array

Zulässige Werte: read | write | mknod

initProcessEnabled

Führen Sie einen init-Prozess innerhalb des Containers aus, der Signalen weiterleitet und Prozesse aufnimmt. Dieser Parameter wird der Option --init für die Docker-Ausführung zugeordnet.

Für diesen Parameter muss Ihre Docker Remote API Version 1.25 oder höher in Ihrer Container-Instance verwenden.

maxSwap

Die Gesamtmenge des Auslagerungsspeichers (in MiB), den ein Container verwenden kann. Dieser Parameter wird in die Option --memory-swap zur Docker-Ausführung übersetzt, wobei der Wert die Summe aus dem Container-Speicher und dem Wert maxSwap wäre.

Wenn als maxSwap-Wert 0 angegeben wird, verwendet der Container keine Auslagerung. Zulässige Werte sind 0 oder eine beliebige positive Ganzzahl. Wenn der Parameter maxSwap weggelassen wird, verwendet der Container die Swap-Konfiguration für die Container-Instance, auf der er ausgeführt wird. Es muss ein Wert für maxSwap festgelegt werden, damit der Parameter swappiness verwendet werden kann.

Anmerkung

Wenn Sie Aufgaben verwenden, die den Starttyp Fargate nutzen, wird der Parameter maxSwap nicht unterstützt.

sharedMemorySize

Der Wert für die Größe des /dev/shm-Volumes (in MiB). Dieser Parameter wird der Option --shm-size für die Docker-Ausführung zugeordnet.

Anmerkung

Wenn Sie Aufgaben verwenden, die den Starttyp Fargate nutzen, wird der Parameter sharedMemorySize nicht unterstützt.

Typ: Ganzzahl

swappiness

Auf diese Weise können Sie das Speicherauslagerungsverhalten eines Containers optimieren. Ein swappiness-Wert von 0 führt dazu, dass kein Austausch stattfindet, es sei denn, dies ist absolut notwendig. Ein swappiness-Wert von 100 führt dazu, dass Seiten sehr aggressiv ausgelagert werden. Akzeptierte Werte sind Ganzzahlen zwischen 0 und 100. Wenn der Parameter swappiness nicht angegeben wird, wird der Standardwert 60 verwendet. Wenn kein Wert für maxSwap angegeben ist, wird dieser Parameter ignoriert. Dieser Parameter wird der Option --memory-swappiness für die Docker-Ausführung zugeordnet.

Anmerkung

Wenn Sie Aufgaben verwenden, die den Starttyp Fargate nutzen, wird der Parameter swappiness nicht unterstützt.

tmpfs

Der Container-Pfad, die Mount-Optionen und die Größe (in MiB) des tmpfs-Mounts. Dieser Parameter wird der Option --tmpfs für die Docker-Ausführung zugeordnet.

Anmerkung

Wenn Sie Aufgaben verwenden, die den Starttyp Fargate nutzen, wird der Parameter tmpfs nicht unterstützt.

Typ: Array von Tmpfs-Objekten

Erforderlich: Nein

containerPath

Der absolute Dateipfad, unter dem die tmpfs-Volumes gemountet werden.

Typ: Zeichenfolge

Erforderlich: Ja

mountOptions

Die Liste der Mount-Optionen für das tmpfs-Volume.

Typ: Zeichenfolge-Array

Erforderlich: Nein

Zulässige Werte: "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

Die maximale Größe (in MiB) des tmpfs-Volumes.

Typ: Ganzzahl

Erforderlich: Ja

Container-Abhängigkeit

dependsOn

Typ: Array von ContainerDependency-Objekten

Erforderlich: nein

Die für das Starten und Herunterfahren des Containers definierten Abhängigkeiten. Ein Container kann mehrere Abhängigkeiten enthalten. Wenn eine Abhängigkeit für das Starten und das Herunterfahren des Containers definiert ist, ist sie reserviert. Ein Beispiel finden Sie unter Beispiel: Container-Abhängigkeit.

Anmerkung

Wenn ein Container keine Abhängigkeitsbeschränkung erfüllt oder ein Timeout vor dem Erfüllen der Einschränkung erfüllt, führt Amazon ECS abhängige Container nicht in den nächsten Zustand.

Für Amazon ECS-Aufgaben, die auf Amazon-EC2-Instances gehostet werden, benötigen die Instances mindestens Version 1.26.0 des Container-Agents, um Container-Abhängigkeiten zu aktivieren. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. Informationen zum Überprüfen Ihrer Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon ECS-Container-Agenten. Wenn Sie das Amazon ECS-optimierte Amazon Linux-AMI verwenden, benötigt Ihre Instance mindestens Version 1.26.0-1 des ecs-init-Pakets. Wenn Ihre Container-Instances mit Version 20190301 oder höher gestartet werden, enthalten sie die erforderlichen Versionen des Container-Agenten und von ecs-init. Weitere Informationen finden Sie unter Amazon ECS-optimiertes AMI.

Für Amazon ECS-Aufgaben, die auf Fargate gehostet werden, erfordert dieser Parameter, dass die Aufgabe oder der Service Plattformversion 1.3.0 oder höher verwendet.

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

Typ: Zeichenfolge

Erforderlich: Ja

Der Container-Name, der die angegebene Bedingung erfüllen muss.

condition

Typ: Zeichenfolge

Erforderlich: Ja

Die Abhängigkeitsbedingung des Containers. Der folgenden Tabelle sind die verfügbaren Bedingungen und deren Verhalten zu entnehmen:

  • START – Diese Bedingung emuliert das heutige Verhalten von Links und Volumes. Sie überprüft, ob ein abhängiger Container gestartet wurde, bevor das Starten anderer Container zugelassen wird.

  • COMPLETE – Diese Bedingung überprüft, ob ein abhängiger Container vollständig ausgeführt (beendet) wurde, bevor das Starten anderer Container zugelassen wird. Dies kann für nicht benötigte Container hilfreich sein, die ein Skript ausführen und dann beendet werden. Diese Bedingung kann nicht für einen essentiellen Behälter festgelegt werden.

  • SUCCESS – Diese Bedingung ist mit COMPLETE identisch, erfordert aber auch, dass der Container mit dem Status zero beendet wird. Diese Bedingung kann nicht für einen essentiellen Behälter festgelegt werden.

  • HEALTHY – Diese Bedingung überprüft, ob der abhängige Container seine Docker-Zustandsprüfung bestanden hat, bevor das Starten anderer Container zugelassen wird. Dies setzt voraus, das für den abhängigen Container Zustandsprüfungen konfiguriert wurden. Diese Bedingung wird nur beim Start der Aufgabe bestätigt.

Container-Timeouts

startTimeout

Typ: Ganzzahl

Erforderlich: nein

Beispielwerte: 120

Zeitdauer (in Sekunden), die gewartet wird, bevor die Auflösung von Abhängigkeiten für einen Container aufgegeben wird.

Angenommen, Sie geben zwei Container in einer Aufgabendefinition an und containerA ist abhängig davon, dass containerB den Status COMPLETE, SUCCESS oder HEALTHY erreicht. Wenn ein startTimeout-Wert für containerB angegeben ist und es den gewünschten Status nicht innerhalb dieses Zeitraums erreicht, gibt containerA auf und wird nicht gestartet.

Anmerkung

Wenn ein Container keine Abhängigkeitsbeschränkung erfüllt oder ein Timeout vor dem Erfüllen der Einschränkung erfüllt, führt Amazon ECS abhängige Container nicht in den nächsten Zustand.

Für Amazon ECS-Aufgaben, die auf Fargate gehostet werden, erfordert dieser Parameter, dass die Aufgabe oder der Service Plattformversion 1.3.0 oder höher verwendet. Bei der Verwendung der Plattformversion 1.4.0, wenn dieser Parameter nicht angegeben wird, wird der Standardwert von 60 Sekunden verwendet.

stopTimeout

Typ: Ganzzahl

Erforderlich: nein

Beispielwerte: 120

Dauer (in Sekunden), die gewartet werden soll, bevor der Container zwangsweise beendet wird, wenn er nicht normal beendet wird.

Für Aufgaben, die den Starttyp Fargate verwenden, erfordert die Aufgabe oder der Service Plattformversion 1.3.0 oder höher. Der maximale Timeout-Wert für das Stoppen beträgt 120 Sekunden. Ist der Parameter nicht angegeben, wird der Standardwert von 30 Sekunden verwendet.

Bei Aufgaben, für die der EC2-Starttyp verwendet wird, wird, wenn der Parameter stopTimeout nicht angegeben ist, standardmäßig der für die Konfigurationsvariable ECS_CONTAINER_STOP_TIMEOUT des Amazon ECS-Container-Agenten festgelegte Wert verwendet. Wenn weder der Parameter stopTimeout noch die Agentenkonfigurationsvariable ECS_CONTAINER_STOP_TIMEOUT festgelegt sind, werden die Standardwerte von 30 Sekunden für Linux-Container und 30 Sekunden für Windows-Container verwendet. Container-Instances benötigen zur Aktivierung eines Timeout-Wertes für das Stoppen des Containers mindestens Version 1.26.0 des Container-Agenten. Wir empfehlen jedoch, die neueste Container-Agent-Version zu verwenden. Informationen zum Überprüfen Ihrer Agenten-Version und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon ECS-Container-Agenten. Wenn Sie das Amazon ECS-optimierte Amazon Linux-AMI verwenden, benötigt Ihre Instance mindestens Version 1.26.0-1 des ecs-init-Pakets. Wenn Ihre Container-Instances mit Version 20190301 oder höher gestartet werden, enthalten sie die erforderlichen Versionen des Container-Agenten und von ecs-init. Weitere Informationen finden Sie unter Amazon ECS-optimiertes AMI.

Systemkontrollen

systemControls

Typ: SystemControl-Objekt

Erforderlich: nein

Eine Liste der einem Namespace zugeordneten Kernel-Parameter, die im Container festgelegt werden Dieser Parameter ordnet zu Sysctls im Bereich Create a container der Docker Remote API und der Option --sysctl für die docker run zu.

Es wird nicht empfohlen, netzwerkbezogene systemControls-Parameter für mehrere Container in einer einzelnen Aufgabe festzulegen, die den Netzwerkmodus awsvpc oder host verwendet. Dies hat folgende Gründe:

  • Wenn Sie für Aufgaben mit dem Netzwerkmodus awsvpc systemControls für einen Container festlegen, werden diese auf alle Container in der Aufgabe angewendet. Wenn Sie unterschiedliche systemControls für mehrere Container innerhalb einer einzelnen Aufgabe festlegen, werden die systemControls des zuletzt gestarteten Containers für alle Container übernommen.

  • Für Aufgaben, die den Netzwerkmodus host verwenden, wird der Netzwerk-Namespace systemControls nicht unterstützt.

Wenn Sie einen IPC-Ressourcen-Namespace für die Container in der Aufgabe einrichten, gilt Folgendes für Ihre Systemsteuerungen. Weitere Informationen finden Sie unter IPC-Modus.

  • Für Aufgaben, die den IPC-Modus host verwenden, wird der IPC-Namespace systemControls nicht unterstützt.

  • Für Aufgaben, die den IPC-Modus task verwenden, gelten die Werte des IPC-Namespace systemControls für alle Container innerhalb einer Aufgabe.

Anmerkung

Dieser Parameter wird für Windows-Container oder -Aufgaben mit dem Starttyp Fargate nicht unterstützt.

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

Typ: Zeichenfolge

Erforderlich: nein

Der einem Namespace zugeordnete Kernel-Parameter, für den ein value festgelegt wird

Gültige IPC-Namespace-Werte: "kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced" sowie Sysctls, die mit "fs.mqueue.*" beginnen

Gültige Netzwerk-Namespace-Werte: Sysctls, die mit beginnen "net.*"

value

Typ: Zeichenfolge

Erforderlich: nein

Der Wert für den einem Namespace zugeordneten Kernel-Parameter, der in angegeben ist namespace.

Interactive

interactive

Typ: Boolesch

Erforderlich: nein

Wenn dieser Parameter true lautet, können Sie Container-Anwendungen bereitstellen, für die stdin oder tty zugeordnet werden muss. Dieser Parameter ordnet zu OpenStdin im Bereich Create a container der Docker Remote API und der Option --interactive für die docker run zu.

Pseudo-Terminal

pseudoTerminal

Typ: Boolesch

Erforderlich: nein

Wenn dieser Parameter true lautet, wird ein TTY zugeordnet. Dieser Parameter ordnet zu Tty im Bereich Create a container der Docker Remote API und der Option --tty für die docker run zu.

Aufgabenplatzierungbedingungen

Wenn Sie eine Aufgabendefinition registrieren, können Sie Aufgabenplatzierungsbedingungen angeben, die festlegen, wie Amazon ECS-Aufgaben platziert.

Wenn Sie den Starttyp Fargate verwenden, werden keine Platzierungsbedingungen für die Aufgaben unterstützt. Standardmäßig werden Fargate-Aufgaben über Availability Zones verteilt.

Für Aufgaben, die den Starttyp EC2 verwenden, können Sie Einschränkungen festlegen, um Tasks basierend auf Availability Zone, Instance-Typ oder benutzerdefinierten Attributen zu platzieren. Weitere Informationen finden Sie unter Amazon ECS-Aufgabenplatzierungseinschränkungen.

Die folgenden Parameter sind in einer Containerdefinition zulässig:

expression

Typ: Zeichenfolge

Erforderlich: nein

Ein Ausdruck in Cluster-Abfragesprache, der auf die Einschränkung anzuwenden ist. Weitere Informationen finden Sie unter Cluster-Abfragesprache.

type

Typ: Zeichenfolge

Erforderlich: Ja

Der Typ der Einschränkung. Verwenden Sie memberOf, um die Auswahl auf eine Gruppe gültiger Kandidaten zu beschränken.

Proxy-Konfiguration

proxyConfiguration

Typ: ProxyConfiguration-Objekt

Erforderlich: nein

Die Konfigurationsdetails für den App Mesh-Proxy.

Für Aufgaben mit dem Starttyp EC2 benötigen die Container-Instances mindestens Version 1.26.0 des Container-Agenten und mindestens Version 1.26.0-1 des ecs-init-Pakets zum Aktivieren einer Proxy-Konfiguration. Wenn Ihre Container-Instances über die Amazon ECS-optimierte AMI-Version 20190301 oder höher gestartet werden, enthalten sie die erforderlichen Versionen des Container-Agenten und von ecs-init. Weitere Informationen finden Sie unter Amazon ECS-optimiertes AMI.

Für Aufgaben mit dem Starttyp Fargate erfordert diese Funktion, dass die Aufgabe oder der Service von Plattformversion 1.3.0 oder höher Gebrauch macht.

Anmerkung

Dieser Parameter wird für Windows-Container nicht unterstützt.

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

Typ: Zeichenfolge

Gültige Werte: APPMESH

Erforderlich: Nein

Der Proxy-Typ. Der einzige unterstützte Wert ist APPMESH.

containerName

Typ: Zeichenfolge

Erforderlich: Ja

Der Name des Containers, der als App Mesh-Proxy dient.

properties

Typ: Array von KeyValuePair-Objekten

Erforderlich: Nein

Der dem Container Network Interface (CNI)-Plug-In bereitzustellende Satz von Netzwerkkonfigurationsparametern, die als Schlüssel-Wert-Paare angegeben werden.

  • IgnoredUID – (Erforderlich) Die Benutzer-ID (UID) des Proxy-Containers gemäß der Definition durch den user-Parameter in einer Containerdefinition. Dadurch wird sichergestellt, dass der Proxy eigenen Datenverkehr ignoriert. Wenn IgnoredGID angegeben wird, kann dieses Feld leer sein.

  • IgnoredGID – (Erforderlich) Die Gruppen-ID (GID) des Proxy-Containers gemäß der Definition durch den user-Parameter in einer Containerdefinition. Dadurch wird sichergestellt, dass der Proxy eigenen Datenverkehr ignoriert. Wenn IgnoredUID angegeben wird, kann dieses Feld leer sein.

  • AppPorts – (Erforderlich) Die Liste der Ports, welche die Anwendung verwendet. Der Netzwerkdatenverkehr zu diesen Ports wird an den ProxyIngressPort und den ProxyEgressPort weitergeleitet.

  • ProxyIngressPort – (Erforderlich) Gibt den Port an, an den eingehender Datenverkehr zu den AppPorts geleitet wird.

  • ProxyEgressPort – (Erforderlich) Gibt den Port an, an den ausgehender Datenverkehr von den AppPorts geleitet wird.

  • EgressIgnoredPorts – (Erforderlich) Der ausgehende Datenverkehr zu diesen angegebenen Ports wird ignoriert und nicht an den umgeleitet ProxyEgressPort. Es kann sich um eine leere Liste handeln.

  • EgressIgnoredIPs – (Erforderlich) Der ausgehende Datenverkehr zu diesen angegebenen IP-Adressen wird ignoriert und nicht an den umgeleitet ProxyEgressPort. Es kann sich um eine leere Liste handeln.

name

Typ: Zeichenfolge

Erforderlich: Nein

Der Name des Schlüssel-Wert-Paares.

value

Typ: Zeichenfolge

Erforderlich: Nein

Der Wert des Schlüssel-Wert-Paares.

Volumes

Wenn Sie eine Aufgabendefinition registrieren, können Sie optional eine Liste von Volumes angeben, die an den Docker-Daemon auf einer Container-Instance übergeben werden sollen, die dann für den Zugriff durch andere Container auf derselben Container-Instance verfügbar ist.

Im Folgenden werden die Daten-Volume-Typen aufgeführt, die verwendet werden können:

  • Docker-Volumes: Ein verwaltetes Docker-Volume, das unter /var/lib/docker/volumes auf der Amazon-EC2-Host-Instance erstellt wird. Mit Docker-Volume-Treibern (auch als Plug-Ins bezeichnet) werden die Volumes in externe Speichersysteme wie Amazon EBS integriert. Sie können den integrierten local-Volume-Treiber oder den Volume-Treiber eines Drittanbieters verwenden. Docker-Volumes werden nur unterstützt, wenn Aufgaben auf Amazon-EC2-Instances ausgeführt werden. Windows-Container unterstützen nur die Verwendung des local-Treibers. Um Docker-Volumes zu verwenden, geben Sie eine dockerVolumeConfiguration in Ihrer Aufgabendefinition an. Weitere Informationen finden Sie unter Verwenden von Volumes.

  • Bind-Mounts: Eine Datei oder ein Verzeichnis auf dem Hostcomputer wird in einem Container gemountet. Bind-Mount-Host-Volumes werden unterstützt, wenn Aufgaben entweder auf Instances von AWS-Fargate oder auf Amazon-EC2-Instances ausgeführt werden. Um Bind-Mount-Host-Volumes zu verwenden, geben Sie einen host und optionalen sourcePath-Wert in Ihrer Aufgabendefinition an. Weitere Informationen finden Sie unter Verwenden von Bind-Mounts.

Weitere Informationen finden Sie unter Verwendung von Daten-Volumes in Aufgaben.

Die folgenden Parameter sind in einer Containerdefinition zulässig:

name

Typ: Zeichenfolge

Erforderlich: Nein

Der Name des Volumes. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig. Auf diesen Namen wird im Parameter sourceVolume der Containerdefinitions-Objekt mountPoints verwiesen.

host

Erforderlich: Nein

Anmerkung

Der host-Parameter wird nur unterstützt, wenn Tasks verwendet werden, die auf Amazon-EC2-Instances gehostet werden.

Der host-Parameter wird verwendet, um den Lebenszyklus des Bind-Mounts an die Amazon-EC2-Host-Instance und nicht an die Aufgabe zu binden und dort zu speichern. Wenn der Parameter host leer ist, weist der Docker-Daemon einen Hostpfad für Ihr Daten-Volume zu, es wird aber nicht gewährleistet, dass die Daten beibehalten werden, nachdem die damit verknüpften Container nicht mehr ausgeführt werden.

Windows-Container können ganze Verzeichnisse auf dem gleichen Laufwerk wie mounten $env:ProgramData.

sourcePath

Typ: Zeichenfolge

Erforderlich: Nein

Wenn der Parameter host verwendet wird, geben Sie einen sourcePath an, um den Pfad auf der Amazon-EC2-Host-Instance zu deklarieren, die dem Container bereitgestellt wird. Wenn dieser Parameter leer ist, weist der Docker-Daemon einen Host-Pfad für Sie zu. Wenn der Parameter host den Speicherort sourcePath enthält, bleibt das Daten-Volume an der angegebenen Position der Amazon-EC2-Host-Instance erhalten, bis Sie es manuell löschen. Wenn der Wert sourcePath auf der Amazon-EC2-Host-Instance nicht vorhanden ist, wird er vom Docker-Daemon erstellt. Wenn der Speicherort nicht vorhanden ist, wird der Inhalt des Quellpfadordners exportiert.

dockerVolumeConfiguration

Typ: Objekt

Erforderlich: Nein

Dieser Parameter wird nur bei der Verwendung von Docker-Volumes angegeben. Docker-Volumes werden nur unterstützt, wenn Aufgaben auf EC2-Instances ausgeführt werden. Windows-Container unterstützen nur die Verwendung des local-Treibers. Um Bind-Mounts zu verwenden, geben Sie stattdessen einen host an.

scope

Typ: Zeichenfolge

Zulässige Werte: task | shared

Erforderlich: Nein

Der Bereich für das Docker-Volume, der den Lebenszyklus bestimmt. Docker-Volumes, die auf eine task beschränkt sind, werden automatisch beim Starten der Aufgabe bereitgestellt und beim Bereinigen dieser Aufgabe vernichtet. Docker-Volumes, die als shared angewendet werden, bleiben erhalten, nachdem die Aufgabe gestoppt wird.

autoprovision

Typ: Boolesch

Standardwer: false

Erforderlich: Nein

Wenn dieser Wert true lautet, wird das Docker-Volume erstellt, sofern es nicht bereits vorhanden ist. Dieses Feld wird nur verwendet, wenn scope den Wert shared aufweist. Wenn der scope task ist, muss dieser Parameter entweder weggelassen oder auf false gesetzt werden.

driver

Typ: Zeichenfolge

Erforderlich: Nein

Der zu verwendende Docker-Volume-Treiber. Der Treiberwert muss mit dem von Docker bereitgestellten Treibernamen übereinstimmen, da er für die Aufgabenplatzierung verwendet wird. Wenn der Treiber mit der Docker-Plug-In-CLI installiert wurde, rufen Sie mit docker plugin ls den Treibernamen aus der Container-Instance ab. Wenn der Treiber mit einem anderen Verfahren installiert wurde, rufen Sie den Treibernamen mit der Docker-Plug-In-Erkennung ab. Weitere Informationen finden Sie unter Docker-Plug-In-Erkennung. Dieser Parameter ordnet zu Driver im Bereich Create a volume der Docker Remote API und der Option --driver für die docker volume create zu.

driverOpts

Typ: Zeichenfolge

Erforderlich: Nein

Eine Zuordnung von Docker-Treiber-spezifischen Optionen für die Übergabe. Dieser Parameter ordnet zu DriverOpts im Bereich Create a volume der Docker Remote API und der Option --opt für die docker volume create zu.

labels

Typ: Zeichenfolge

Erforderlich: Nein

Benutzerdefinierte Metadaten, die Ihrem Docker-Volume hinzugefügt werden sollen. Dieser Parameter ordnet zu Labels im Bereich Create a volume der Docker Remote API und der Option --label für die docker volume create zu.

efsVolumeConfiguration

Typ: Objekt

Erforderlich: Nein

Dieser Parameter wird nur bei der Verwendung von Amazon EFS-Volumes angegeben.

fileSystemId

Typ: Zeichenfolge

Erforderlich: Ja

Die zu verwendende Amazon EFS-Dateisystem-ID.

rootDirectory

Typ: Zeichenfolge

Erforderlich: Nein

Das Verzeichnis im Amazon EFS-Dateisystem, das als Stammverzeichnis im Host bereitgestellt werden soll. Wenn dieser Parameter weggelassen wird, wird der Stamm des Amazon EFS-Volumes verwendet. Die Angabe / hat denselben Effekt wie das Weglassen dieses Parameters.

Wichtig

Wenn ein EFS-Zugriffspunkt in der authorizationConfig angegeben ist, muss der Stammverzeichnis-Parameter entweder weggelassen oder auf / festgelegt werden, was erzwingt, dass der Pfad für den EFS-Zugriffspunkt festgelegt wird.

transitEncryption

Typ: Zeichenfolge

Zulässige Werte: ENABLED | DISABLED

Erforderlich: Nein

Gibt an, ob die Verschlüsselung für Amazon EFS-Daten bei der Übertragung zwischen dem Amazon ECS-Host und dem Amazon EFS-Server aktiviert werden soll oder nicht. Die Transit-Verschlüsselung muss aktiviert sein, wenn die Amazon EFS-IAM-Autorisierung verwendet wird. Wenn dieser Parameter nicht angegeben ist, wird der Standardwert DISABLED verwendet. Weitere Informationen finden Sie unter Verschlüsseln von Daten während der Übertragung im Benutzerhandbuch für Amazon Elastic File System.

transitEncryptionPort

Typ: Ganzzahl

Erforderlich: Nein

Der zu verwendende Port zum Senden verschlüsselter Daten zwischen dem Amazon ECS-Host und dem Amazon EFS-Server. Wenn Sie keinen Transit-Verschlüsselungsport angeben, wird die Port-Auswahlstrategie verwendet, die der Amazon EFS-Mount-Helfer verwendet. Weitere Informationen finden Sie unter EFS-Mount-Helfer im Benutzerhandbuch für Amazon Elastic File System.

authorizationConfig

Typ: Objekt

Erforderlich: Nein

Die Autorisierungskonfigurationsdetails für das Amazon EFS-Dateisystem.

accessPointId

Typ: Zeichenfolge

Erforderlich: Nein

Die zu verwendende Zugriffspunkt-ID. Wenn ein Zugriffspunkt angegeben wird, muss der Stammverzeichniswert in efsVolumeConfiguration ausgelassen oder auf / festgelegt werden, was den auf dem EFS-Zugriffspunkt festgelegten Pfad erzwingt. Wenn ein Zugriffspunkt verwendet wird, muss in die Transitverschlüsselung aktiviert sein EFSVolumeConfiguration. Weitere Informationen finden Sie unter Arbeiten mit Amazon EFS-Zugriffspunkten im Amazon Elastic File System-Benutzerhandbuch.

iam

Typ: Zeichenfolge

Zulässige Werte: ENABLED | DISABLED

Erforderlich: Nein

Gibt an, ob die in einer Aufgabendefinition definierte Amazon ECS-Aufgaben-IAM-Rolle beim Mounten des Amazon EFS-Dateisystems verwendet werden soll. Wenn diese Option aktiviert ist, muss die Transit-Verschlüsselung in aktiviert sein EFSVolumeConfiguration. Wenn dieser Parameter nicht angegeben ist, wird der Standardwert DISABLED verwendet. Weitere Informationen finden Sie unter IAM-Rollen für Aufgaben.

FSxWindowsFileServerVolumeConfiguration

Typ: Objekt

Erforderlich: Ja

Dieser Parameter wird nur bei der Verwendung des FSx for Windows File Server-Dateisystems für die Aufgabenspeicherung angegeben.

fileSystemId

Typ: Zeichenfolge

Erforderlich: Ja

Die zu verwendende FSx for Windows File Server Dateisystem-ID.

rootDirectory

Typ: Zeichenfolge

Erforderlich: Ja

Das Verzeichnis im FSx for Windows File Server-Dateisystem, das als Stammverzeichnis im Host aufgespielt werden soll.

authorizationConfig
credentialsParameter

Typ: Zeichenfolge

Erforderlich: Ja

Die Optionen für Autorisierungsanmeldeinformationen.

Optionen:

domain

Typ: Zeichenfolge

Erforderlich: Ja

Ein vollqualifizierter Domänenname, der von einem AWS Directory Service-verwaltetem Microsoft AD (Active Directory) oder einem selbst gehosteten EC2 AD gehostet wird.

Tags

Wenn Sie eine Aufgabendefinition registrieren, können Sie optional Metadatentags angeben, die auf die Aufgabendefinition angewendet werden. Mithilfe von Tags können Sie Ihre Aufgabendefinition kategorisieren und organisieren. Jeder Tag besteht aus einem Schlüssel und einem optionalen Wert, beides können Sie bestimmen. Weitere Informationen finden Sie unter Markieren Ihrer Amazon ECS-Ressourcen.

Wichtig

Fügen Sie keine personenbezogenen Daten (Personally Identifiable Information, PII) oder andere vertrauliche Informationen in Tags hinzu. Tags sind für viele AWS-Dienste zugänglich, einschließlich der Abrechnung. Tags sind nicht für private oder vertrauliche Daten gedacht.

Die folgenden Parameter sind in einem Tag-Objekt zulässig.

key

Typ: Zeichenfolge

Erforderlich: nein

Ein Teil eines Schlüssel-Wert-Paares, aus dem ein Tag besteht. Ein Schlüssel ist eine allgemeine Bezeichnung, die wie eine Kategorie für spezifischere Tag-Werte fungiert.

value

Typ: Zeichenfolge

Erforderlich: nein

Der optionale Teil eines Schlüssel-Wert-Paares, aus dem ein Tag besteht. Ein Wert fungiert als Deskriptor in einer Tag-Kategorie (Schlüssel).

Andere Parameter der Aufgabendefinition

Die folgenden Parameter für die Aufgabendefinition können beim Registrieren von Aufgabendefinitionen in der Amazon ECS-Konsole mit der Option Configure via JSON (Über JSON konfigurieren) verwendet werden. Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition.

Flüchtiger Speicher

ephemeralStorage

Typ: Objekt

Erforderlich: Nein

Die Menge des flüchtigen Speichers in GB, der für die Aufgabe zugewiesen werden soll. Dieser Parameter wird verwendet, um die Gesamtmenge des flüchtigen Speichers über den Standardbetrag hinaus für Aufgaben zu erweitern, die auf AWS Fargate gehostet werden. Weitere Informationen finden Sie unter Fargate Aufgabenspeicher.

Anmerkung

Der Parameter wird nur für Aufgaben unterstützt, die auf AWS Fargate mit einer Plattform-Version 1.4.0 oder höher gehostet werden.

IPC-Modus

ipcMode

Typ: Zeichenfolge

Erforderlich: Nein

Der IPC-Ressourcen-Namespace, der für die Container in der Aufgabe verwendet werden soll. Die gültigen Werte sind host, task oder none. Wenn host angegeben ist, dann teilen sich alle Container innerhalb der Aufgaben, die den IPC-Modus host auf derselben Container-Instance angegeben haben, die gleichen IPC-Ressourcen mit der Amazon EC2-Host-Instance. Wenn task angegeben ist, teilen sich alle Container innerhalb der angegebenen Aufgabe die gleichen IPC-Ressourcen. Wenn none angegeben ist, dann sind die IPC-Ressourcen innerhalb der Container einer Aufgabe privat und werden nicht mit anderen Containern einer Aufgabe oder der Container-Instance geteilt. Wenn kein Wert angegeben ist, hängt die gemeinsame Nutzung des IPC-Ressourcen-Namespace von der Einstellung des Docker-Daemons in der Container-Instance ab. Weitere Informationen finden Sie unter IPC-Einstellungen in der Docker Run Referenz.

Wenn der IPC-Modus host verwendet wird, ist zu beachten, dass das Risiko einer unerwünschten Exposition des IPC-Namespace erhöht ist. Weitere Informationen finden Sie unter Docker-Sicherheit.

Wenn Sie im Namespace bezogene Kernelparameter mit systemControls für die Container in der Aufgabe festlegen, gilt Folgendes für Ihren IPC-Ressourcen-Namespace. Weitere Informationen finden Sie unter Systemkontrollen.

  • Für Aufgaben, die den IPC-Modus host verwenden, werden IPC-Namespace bezogene systemControls nicht unterstützt.

  • Für Aufgaben, die den IPC-Modus task verwenden, gelten IPC-Namespace bezogene systemControls für alle Container innerhalb einer Aufgabe.

Anmerkung

Dieser Parameter wird für Windows-Container oder -Aufgaben mit dem Starttyp Fargate nicht unterstützt.

PID-Modus

pidMode

Typ: Zeichenfolge

Erforderlich: Nein

Der Prozess-Namespace, der für die Container in der Aufgabe verwendet werden soll. Die gültigen Werte sind host und task. Wenn host angegeben ist, dann teilen sich alle Container innerhalb der Aufgaben, die den PID-Modus host auf derselben Container-Instance angegeben haben, denselben Prozess-Namespace mit der Amazon EC2-Host-Instance. Wenn task angegeben ist, teilen sich alle Container innerhalb der angegebenen Aufgabe den gleichen Prozess-Namespace. Wenn kein Wert angegeben wird, ist der Standard ein privater Namespace. Weitere Informationen finden Sie unter PID-Einstellungen in der Docker Run Referenz.

Wenn der PID-Modus host verwendet wird, ist zu beachten, dass das Risiko einer unerwünschten Exposition des Prozess-Namespace erhöht ist. Weitere Informationen finden Sie unter Docker-Sicherheit.

Anmerkung

Dieser Parameter wird für Windows-Container oder -Aufgaben mit dem Starttyp Fargate nicht unterstützt.