Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon-ECS-Aufgabendefinitionsparameter für Amazon ECS Managed Instances
Aufgabendefinitionen sind in verschiedene Teile aufgeteilt: die Aufgabenfamilie, die AWS Identity and Access Management (IAM-) Aufgabenrolle, den Netzwerkmodus, Containerdefinitionen, Volumes und Kapazität. Die Familien- und Container-Definitionen sind in einer Aufgabendefinition obligatorisch. Im Gegensatz dazu sind Aufgabenrolle, Netzwerkmodus, Volumes und Kapazität optional.
Sie können diese Parameter in einer JSON-Datei verwenden, um Ihre Aufgabendefinition zu konfigurieren.
Im Folgenden finden Sie detaillierte Beschreibungen für jeden Aufgabendefinitionsparameter für Amazon ECS Managed Instances
Familie
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.
Capacity (Kapazität)
Wenn Sie eine Aufgabendefinition registrieren, können Sie die Kapazität angeben, anhand der Amazon ECS die Aufgabendefinition validieren 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:
MANAGED_INSTANCESDie Kapazität, anhand der die Aufgabendefinition validiert wird. Dies leitet eine Prüfung ein, um sicherzustellen, dass alle in der Aufgabendefinition verwendeten Parameter den Anforderungen für Amazon ECS Managed Instances entsprechen.
-Rolle für Aufgabe
taskRoleArn-
Typ: Zeichenfolge
Erforderlich: Nein
Wenn Sie eine Aufgabendefinition registrieren, können Sie eine Aufgabenrolle für eine IAM-Rolle angeben, die es den Containern in der Aufgabe ermöglicht AWS APIs , die in den zugehörigen Richtlinien angegebenen Aufgaben in Ihrem Namen aufzurufen. Weitere Informationen finden Sie unter Aufgaben-IAM-Rolle für Amazon ECS.
-Rolle für die Aufgabenausführung
executionRoleArn-
Typ: Zeichenfolge
Required: Conditional
Der Amazon-Ressourcenname (ARN) der Aufgabenausführungsrolle, die dem Amazon ECS-Container-Agenten die Erlaubnis erteilt, AWS API-Aufrufe in Ihrem Namen durchzuführen. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon-ECS-Aufgabenausführung.
Anmerkung
Die IAM-Rolle für die Aufgabenausführung ist je nach den Anforderungen Ihrer Aufgabe erforderlich. Die Rolle ist für private ECR-Image-Abrufe und die Verwendung des
awslogsLog-Treibers erforderlich.
Netzwerkmodus
networkMode-
Typ: Zeichenfolge
Erforderlich: Nein
Standard:
awsvpcDer Netzwerkmodus, der für die Container in der Aufgabe verwendet werden soll. Für Amazon-ECS-Aufgaben, die in Amazon ECS Managed Instances gehostet werden, sind die gültigen Werte
awsvpcundhost. Wenn kein Netzwerkmodus angegeben ist, ist der Standard-Netzwerkmodusawsvpc.Wenn der Netzwerkmodus ist
host, umgeht die Aufgabe die Netzwerkisolierung und Container verwenden den Netzwerkstapel des Hosts direkt.Wichtig
Wenn Sie Aufgaben im Netzwerkmodus
hostausführen, sollten Sie aus Sicherheitsgründen Container nicht über den Root-Benutzer (UID 0) ausführen. Verwenden Sie als bewährte Sicherheitsmethode immer einen Nicht-Root-Benutzer.Für den Netzwerkmodus
awsvpcwird die Aufgabe einer Elastic-Network-Schnittstelle zugeordnet und Sie müssen eineNetworkConfigurationangeben, wenn Sie mit der Aufgabendefinition einen Service erstellen oder eine Aufgabe ausführen wollen. Weitere Informationen finden Sie unter Amazon-ECS-Aufgabenvernetzung für Amazon ECS Managed Instances.Die
awsvpcNetzwerkmodihostund bieten die höchste Netzwerkleistung für Container, da sie den EC2 Amazon-Netzwerkstapel verwenden. Für die Netzwerkmodihostundawsvpcsind die freigegebenen Container-Ports direkt auf den entsprechenden Host-Port (für den Netzwerkmodushost) oder den angehängten Elastic-Network-Schnittstellenanschluss (für den Netzwerkmodusawsvpc) abgebildet. Aus diesem Grund können Sie keine dynamischen Host-Port-Zuordnungen nutzen.
Laufzeit-Plattform
operatingSystemFamily-
Typ: Zeichenfolge
Erforderlich: Nein
Standard: LINUX
Wenn Sie eine Aufgabendefinition anmelden, geben Sie die Betriebssystemfamilie an.
Der gültige Wert für dieses Feld ist
LINUX.Alle Aufgabendefinitionen, die in einem Service verwendet werden, müssen den gleichen Wert für diesen Parameter aufweisen.
Wenn eine Aufgabendefinition Teil eines Services ist, muss dieser Wert mit dem
platformFamily-Wert des Services übereinstimmen. cpuArchitecture-
Typ: Zeichenfolge
Required: Conditional
Wenn Sie eine Aufgabendefinition anmelden, geben Sie die CPU-Architektur an. Die gültigen Werte sind
X86_64undARM64.Wenn Sie keinen Wert angeben, versucht Amazon ECS, Aufgaben auf der verfügbaren CPU-Architektur basierend auf der Konfiguration des Kapazitätsanbieters zu platzieren. Um sicherzustellen, dass Aufgaben auf einer bestimmten CPU-Architektur platziert werden, geben Sie
cpuArchitecturein der Aufgabendefinition einen Wert für an.Alle Aufgabendefinitionen, die in einem Service verwendet werden, müssen den gleichen Wert für diesen Parameter aufweisen.
Mehr über
ARM64erfahren Sie unter Amazon-ECS-Aufgabendefinitionen für 64-Bit-ARM-Workloads.
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 EC2 Amazon-Instances gehostet werden, sind diese Felder optional.
Anmerkung
CPU- und Speicherparameter auf Aufgabenebene werden für Windows-Container ignoriert. Es wird empfohlen, für Windows-Container Ressourcen auf Container-Ebene festzulegen.
cpu-
Typ: Zeichenfolge
Required: Conditional
Das harte Limit der CPU-Einheiten, die für die Aufgabe vorhanden sind. Sie können CPU-Werte in der JSON-Datei als Zeichenfolge in CPU-Einheiten oder virtuell CPUs (vCPUs) angeben. Sie können beispielsweise einen CPU-Wert entweder
1024in CPU-Einheiten oder1 vCPUin v angebenCPUs. Wenn die Aufgabendefinition registriert ist, wird ein vCPU-Wert in eine Ganzzahl umgewandelt, die die CPU-Einheiten angibt.Dies ist ein optionales Feld. Wenn in Ihrem Cluster keine registrierten Container-Instances mit den angeforderten verfügbaren CPU-Einheiten vorhanden sind, schlägt die Aufgabe fehl. Unterstützte Werte liegen zwischen
0.12510v CPUs und CPUs v.
memory-
Typ: Zeichenfolge
Required: Conditional
Die harte Arbeitsspeichergrenze, die für die Aufgabe zur Verfügung steht. Sie können Speicherwerte in der Aufgabendefinition als Zeichenfolge in Mebibyte (MiB) oder Gigabyte (GB) angeben. Sie können beispielsweise einen Speicherwert entweder als
3072in MiB oder3 GBin GB angeben. Wenn die Aufgabendefinition registriert ist, wird ein GB-Wert in eine Ganzzahl umgewandelt, die die MiB angibt.Dieses Feld ist optional und ein beliebiger 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. Sie können Ihre Ressourcennutzung maximieren, indem Sie Ihren Aufgaben so viel Arbeitsspeicher wie möglich für einen bestimmten Instance-Typ zuweisen. Weitere Informationen finden Sie unter Arbeitsspeicher für Linux-Container-Instances von Amazon ECS reservieren.
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 Amazon-ECS-Aufgabendefinition mit der Konsole.
Themen
Flüchtiger Speicher
ephemeralStorage-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: EphemeralStorage 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 Bind-Mounts mit Amazon ECS verwenden.
IPC-Modus
ipcMode-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
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,taskodernone. Wenn angegeben, teilenhostsich alle Container, die sich innerhalb der Aufgaben befinden, die denhostIPC-Modus auf derselben Container-Instance spezifiziert haben, dieselben IPC-Ressourcen mit der EC2 Host-Amazon-Instance. Wenntaskangegeben ist, teilen sich alle Container innerhalb der angegebenen Aufgabe die gleichen IPC-Ressourcen. Wennnoneangegeben 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-Ressourcennamespaces von der Konfiguration der Container-Laufzeit ab.
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
hostundtask. Wenn angegeben, teilenhostsich alle Container, die sich innerhalb der Aufgaben befinden, die denhostPID-Modus auf derselben Container-Instance angegeben haben, denselben Prozess-Namespace mit der EC2 Host-Amazon-Instance. Wenntaskangegeben ist, teilen sich alle Container innerhalb der angegebenen Aufgabe den gleichen Prozess-Namespace. Wenn kein Wert angegeben wird, ist der Standard ein privater Namespace.Wenn der PID-Modus
hostverwendet wird, ist das Risiko einer unerwünschten Exposition des Prozess-Namespace erhöht.
Proxykonfiguration
proxyConfiguration-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: ProxyConfiguration Objekt
Erforderlich: Nein
Die Konfigurationsdetails für den App Mesh-Proxy.
Tags (Markierungen)
Die Metadaten, die Sie auf die Aufgabendefinition anwenden, um die Kategorisierung und Organisation zu erleichtern. Jedes Tag (Markierung) besteht aus einem Schlüssel und einem optionalen Wert. Sie können beide definieren.
Die folgenden grundlegenden Einschränkungen gelten für Tags (Markierungen):
-
Die maximale Anzahl an Tags pro Ressource beträgt 50.
-
Jeder Tag (Markierung) muss für jede Ressource eindeutig sein. Jeder Tag (Markierung) kann nur einen Wert haben.
-
Maximale Schlüssellänge: 128 Unicode-Zeichen in UTF-8
-
Maximale Wertlänge: 256 Unicode-Zeichen in UTF-8
-
Wenn Ihr Markierungsschema für mehrere -Services und -Ressourcen verwendet wird, denken Sie daran, dass andere Services möglicherweise Einschränkungen für zulässige Zeichen haben. Allgemein zulässige Zeichen sind: Buchstaben, Zahlen und Leerzeichen, die in UTF-8 dargestellt werden können, sowie die folgenden Zeichen: + - =. _:/@.
-
Bei Tag-Schlüsseln und -Werten wird zwischen Groß- und Kleinschreibung unterschieden.
-
Verwenden
aws:Sie weder für Schlüssel noch für Werte eine Kombination aus Groß- oder Kleinbuchstaben, z. B. ein Präfix, da es für die Verwendung reserviert ist.AWS:AWS Sie können keine Tag-Schlüssel oder -Werte mit diesem Präfix bearbeiten oder löschen. Tags mit diesem Präfix werden nicht als Ihre Tags pro Ressourcenlimit angerechnet.
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).
Elastic Inference Accelerator (veraltet)
Anmerkung
Amazon Elastic Inference (EI) ist für Kunden nicht mehr verfügbar.
inferenceAccelerator-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: InferenceAccelerator Objekt
Erforderlich: Nein
Die Elastic Inference-Beschleuniger, die für die Container in der Aufgabe verwendet werden sollen.
Platzierungsbeschränkungen
placementConstraints-
Typ: Array von TaskDefinitionPlacementConstraint-Objekten
Erforderlich: Nein
Ein Array von Platzierungs-Einschränkungs-Objekten, die für die Aufgabe verwendet werden sollen. Sie können maximal zehn Einschränkungen pro Aufgabe festlegen (dieses Limit enthält Einschränkungen in der Aufgabendefinition und solche, die während der Laufzeit festgelegt werden).
Amazon ECS unterstützt die Platzierungsbeschränkungen
distinctInstaceundmemberOffür Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden. Die folgenden Attribute werden für Aufgaben unterstützt, die die PlatzierungsbeschränkungmemberOfverwenden:-
ecs.subnet-id -
ecs.availability-zone -
ecs.cpu-architecture -
ecs.instance-type
Weitere Informationen über Platzierungsbeschränkungen finden Sie unter Definieren der Container-Instances, die Amazon ECS für Aufgaben verwendet.
-
Datenträger
Wenn Sie eine Aufgabendefinition registrieren, können Sie optional eine Liste von Volumes für Ihre Aufgaben angeben. Auf diese Weise können Sie Daten-Volumes in Ihren Aufgaben verwenden.
Weitere Informationen über Volume-Typen und anderen Parametern finden Sie unter Speicheroptionen für Amazon-ECS-Aufgaben.
name-
Typ: Zeichenfolge
Erforderlich: Ja
Der Name des Volumes. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern und Unterstriche sind zulässig. Auf diesen Namen wird im Parameter
sourceVolumeder ContainerdefinitionmountPointsverwiesen. host-
Typ: HostVolumeProperties Objekt
Erforderlich: Nein
Dieser Parameter wird angegeben, wenn Sie Bind-Mount-Host-Volumes verwenden. Die Inhalte des
host-Parameters bestimmen, ob Ihr Bind-Mount-Host-Volume auf der Host-Container-Instance erhalten bleibt und wo es gespeichert wird. Wenn derhostParameter leer ist, weist das System Ihrem Datenvolume einen Hostpfad zu. Es ist jedoch nicht garantiert, dass die Daten erhalten bleiben, wenn die ihnen zugeordneten Container nicht mehr laufen. dockerVolumeConfiguration-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: DockerVolumeConfiguration Objekt
Erforderlich: Nein
Dieser Parameter wird angegeben, wenn Sie Docker-Volumes verwenden.
efsVolumeConfiguration-
Typ: EFSVolumeKonfigurationsobjekt
Erforderlich: Nein
Dieser Parameter wird angegeben, wenn Sie ein Amazon-EFS-Dateisystem für die Aufgabenspeicherung verwenden.
fsxWindowsFileServerVolumeConfiguration-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: FSxWindowsFileServerVolumeConfiguration Objekt
Erforderlich: Nein
Dieser Parameter wird angegeben, wenn Sie das Dateisystem Amazon FSx for Windows File Server für die Aufgabenspeicherung verwenden.
configuredAtLaunch-
Typ: Boolesch
Erforderlich: Nein
Gibt an, ob das Volume beim Start konfiguriert werden soll. Dieser Parameter wird verwendet, um Amazon-EBS-Volumes für eigenständige Aufgaben oder Aufgaben, die als Teil eines Service erstellt wurden, zu erstellen. Für jede Revision der Aufgabendefinition darf beim Start nur ein Volume in der Volume-Konfiguration konfiguriert sein.
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.
Themen
Name
name-
Typ: Zeichenfolge
Erforderlich: Ja
Der Name eines Containers. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Zahlen, Bindestriche und Unterstriche sind zulässig. Wenn Sie mehrere Container in einer Aufgabedefinition verknüpfen, kann der
nameeines Containers in dielinkseines anderen Containers eingefügt werden. Das dient dazu, 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
oder mitrepository-url/image:tagauch andere Repositorys angeben. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche, Unterstriche, Doppelpunkte, Punkte und Schrägstriche sind zulässig. Dieser Parameter ist im Docker-Befehl create-container und imrepository-url/image@digestIMAGE-Parameter des Docker-Befehls run der OptionImagezugeordnet.-
Wenn eine neue Aufgabe gestartet wird, ruft der Amazon-ECS-Container-Agent die neueste Version des angegebenen Image und das Tag für den Container ab, der verwendet werden soll. Allerdings werden nachfolgende Aktualisierungen eines Repository-Images nicht an Aufgaben übertragen, die bereits ausgeführt werden.
-
Wenn Sie im Image-Pfad in der Aufgabendefinition kein Tag oder Digest angeben, verwendet der Amazon ECS-Container-Agent das
latestTag, um das angegebene Bild abzurufen. -
Nachfolgende Aktualisierungen eines Repository-Images werden nicht an bereits ausgeführte Aufgaben weitergegeben.
-
Images in privaten Registrierungen werden unterstützt. Weitere Informationen finden Sie unter Verwenden von AWS Nicht-Container-Images in Amazon ECS.
-
Images in Amazon ECR-Repositorys können entweder mit der vollständigen
registry/repository:tag- oder derregistry/repository@digest-Namenskonvention angegeben werden (beispielsweiseaws_account_id.dkr.ecr.region.amazonaws.com/odermy-web-app:latestaws_account_id.dkr.ecr.region.amazonaws.com/).my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE -
Images in offiziellen Repositorys in Docker Hub verwenden einen einzelnen Namen (z. B.
ubuntuodermongo). -
Images in anderen Repositorys in Docker Hub sind mit einem Organisationsnamen qualifiziert (z. B
amazon/amazon-ecs-agent). -
Image in anderen Online-Repositorys sind durch einen Domain-Namen zusätzlich qualifiziert (z. B.
quay.io/assemblyline/ubuntu).
-
versionConsistency-
Typ: Zeichenfolge
Gültige Werte:
enabled|disabledErforderlich: Nein
Gibt an, ob Amazon ECS das in der Container-Definition angegebene Container-Image-Tag in einen Image-Digest auflöst. Das Standardverhalten ist
enabled. Wenn Sie den Wert für einen Container aufdisabledfestlegen, löst Amazon ECS das Container-Image-Tag nicht in einen Digest auf und verwendet den in der Container-Definition angegebenen ursprünglichen Image-URI für die Bereitstellung. Weitere Informationen zu r Auflösung von Container-Images finden Sie unter Container-Image-Auflösung.
Arbeitsspeicher
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 ist im Docker-Befehl create-container der OptionMemoryund die Option--memoryist der Docker-Ausführung zugeordnet.Der Docker-Daemon 20.10.0 oder neuer reserviert mindestens 6 MiB Arbeitsspeicher für einen Container. Geben Sie daher nicht weniger als 6 MiB Arbeitsspeicher für Ihre Container an.
Der Docker-Daemon 19.03.13-ce oder älter reserviert mindestens 4 MiB Arbeitsspeicher für einen Container. Geben Sie daher nicht weniger als 4 MiB Arbeitsspeicher für Ihre Container an.
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 Arbeitsspeicher für Linux-Container-Instances von Amazon ECS reservieren.
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 Arbeitsspeicher des Containers innerhalb der weichen Grenze zu halten. Ihr Container kann jedoch bei Bedarf mehr Speicher verwenden. Der Container kann bis zu der mit dem Parameter
memoryangegebenen harten Grenze (falls zutreffend) oder bis zum gesamten verfügbaren Speicher der Container-Instance verwendet werden, je nachdem, was zuerst eintritt. Dieser Parameter ist im Docker-Befehl create-container der OptionMemoryReservationund die Option--memory-reservationist der Docker-Ausführung zugeordnet.Wenn kein Speicherwert auf Aufgabenebene angegeben ist, müssen Sie eine Ganzzahl ungleich Null für einen oder beide Werte von
memoryodermemoryReservationin einer Container-Definition angeben. Wenn Sie beide angeben, mussmemorygrößer alsmemoryReservationsein. Wenn SiememoryReservationangeben, wird dieser Wert von den verfügbaren Speicherressourcen für die Container-Instance abgezogen, auf der der Container platziert ist. Andernfalls wird der Wertmemoryverwendet.Nehmen wir zum Beispiel an, dass Ihr Container normalerweise 128 MiB Arbeitsspeicher verwendet, aber gelegentlich kurzzeitig auf 256 MiB Arbeitsspeicher expandiert. Sie können einen
memoryReservationvon 128 MiB und einen festenmemory-Grenzwert von 300 MiB festlegen. Mit dieser Konfiguration kann der Container nur 128 MiB Arbeitsspeicher von den verbleibenden Ressourcen auf der Container-Instance reservieren. Gleichzeitig ermöglicht die Konfiguration auch, dass der Container bei Bedarf mehr Speicherressourcen verwenden kann.Der Docker-Daemon 20.10.0 oder neuer reserviert mindestens 6 MiB Arbeitsspeicher für einen Container. Geben Sie daher nicht weniger als 6 MiB Arbeitsspeicher für Ihre Container an.
Der Docker-Daemon 19.03.13-ce oder älter reserviert mindestens 4 MiB Arbeitsspeicher für einen Container. Geben Sie daher nicht weniger als 4 MiB Arbeitsspeicher für Ihre Container an.
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 Arbeitsspeicher für Linux-Container-Instances von Amazon ECS reservieren.
CPU
cpu-
Typ: Ganzzahl
Erforderlich: Nein
Die Anzahl der
cpu-Einheiten, die für den Container reserviert sind. Dieser Parameter ist im Docker-Befehl create-container der OptionCpuSharesund die Option--cpu-sharesist der Docker-Ausführung zugeordnet.Dieses Feld ist optional für Aufgaben, die EC2 Kapazitätsanbieter verwenden. Die einzige Anforderung besteht darin, dass die Gesamtmenge an CPU, die für alle Container innerhalb einer Aufgabe reserviert ist, unter dem Wert auf Aufgabenebene
cpuliegt.Anmerkung
Sie können die Anzahl der pro EC2 Instance-Typ verfügbaren CPU-Einheiten ermitteln, indem Sie das für diesen Instance-Typ auf der EC2 Amazon-Instance-Detailseite CPUs
angegebene v 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 beispielsweise eine Aufgabe mit einem einzelnen Container auf einem Single-Core-Instance-Typ mit 512 CPU-Einheiten für diesen Container ausführen und dies die einzige Aufgabe ist, die auf der Container-Instance ausgeführt wird, könnte dieser Container jederzeit den vollen Anteil von 1 024 CPU-Einheiten nutzen. Wenn Sie jedoch auf dieser Container-Instance eine weitere Kopie der gleichen Aufgabe starten würden, würde jede Aufgabe bei Bedarf eine garantierte Menge von mindestens 512 CPU-Einheiten erhalten. Darüber hinaus könnte jeder der Container 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 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 kleiner oder gleich 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.
-
Agenten-Versionen größer oder gleich 1.2.0: Null-CPU-Werte und CPU-Werte von 1 werden an Docker als 2 ü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 beschrieben wird. Ein CPU-Wert mit dem Wert „NULL“ oder „null“ wird als
0an Docker übergeben, die von Windows als 1 % einer CPU interpretiert wird. -
Port-Zuordnungen
portMappings-
Typ: Objekt-Array
Erforderlich: Nein
Port-Zuordnungen machen die Netzwerk-Ports Ihres Containers der Außenwelt zugänglich. Dadurch können Clients auf Ihre Anwendung zugreifen. Port-Zuordnungen werden auch für die Kommunikation zwischen Containern innerhalb derselben Aufgabe verwendet.
Legen Sie für Aufgabendefinitionen, die den Netzwerkmodus
awsvpcverwenden, nurcontainerPortfest. DerhostPortwird immer ignoriert, und der Container-Port wird automatisch einem zufälligen Port mit hoher Nummer auf dem Host zugeordnet.Die meisten Felder dieses Parameters (inklusive
containerPort,hostPort,protocol) werden im Docker-Befehl create-container der OptionPortBindingszugeordnet, und die Option--publishwird dem Docker-Befehl run zugeordnet. Wenn der Netzwerkmodus einer Aufgabendefinition aufhostfestgelegt 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
RUNNINGerreicht 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
networkBindingsder Befehlsausgabe describe-tasks. -
API:
DescribeTasks-Antwort. -
Metadaten: Der Endpunkt der Aufgabenmetadaten.
appProtocol-
Typ: Zeichenfolge
Erforderlich: Nein
Das Anwendungsprotokoll, das für die Portzuordnung verwendet wird. Dieser Parameter gilt nur für Service Connect. Wir empfehlen Ihnen, diesen Parameter so festzulegen, dass er mit dem von Ihrer Anwendung verwendeten Protokoll konsistent ist. Wenn Sie diesen Parameter festlegen, fügt Amazon ECS dem Service-Connect-Proxy eine protokollspezifische Verbindungsbehandlung hinzu. Wenn Sie diesen Parameter festlegen, fügt Amazon ECS protokollspezifische Telemetrie in der Amazon ECS-Konsole und hinzu. CloudWatch
Wenn Sie keinen Wert für diesen Parameter festlegen, wird TCP verwendet. Amazon ECS fügt jedoch keine protokollspezifische Telemetrie für TCP hinzu.
Weitere Informationen finden Sie unter Verwenden von Service Connect, um Amazon-ECS-Services mit Kurznamen zu verbinden.
Gültige Protokollwerte:
"HTTP" | "HTTP2" | "GRPC" containerPort-
Typ: Ganzzahl
Erforderlich: Ja, wenn
portMappingsverwendet werdenDie Port-Nummer auf dem Container, der an den vom Benutzer angegebenen oder automatisch zugewiesenen Host-Port gebunden ist.
Bei Aufgaben, die den
awsvpc-Netzwerkmodus verwenden, geben Sie die verfügbaren Ports mitcontainerPortan. containerPortRange-
Typ: Zeichenfolge
Erforderlich: Nein
Der Portnummernbereich des Containers, der an den dynamisch zugeordneten Host-Portbereich gebunden ist.
Sie können diesen Parameter nur mithilfe der
register-task-definition-API festlegen. Die Option ist importMappings-Parameter verfügbar. Weitere Informationen finden Sie unter register-task-definition in der AWS Command Line Interface -Referenz.Die folgenden Regeln gelten, wenn Sie ein
containerPortRangeangeben :-
Sie müssen den
awsvpc-Netzwerkmodus verwenden. -
Die Container-Instance muss mindestens über Version 1.67.0 des Container-Agenten und mindestens über Version 1.67.0-1 des
ecs-init-Pakets verfügen. -
Sie können bis zu 100 Portbereiche für jeden Container angeben.
-
Sie geben keine
hostPortRangean. Der Wert vonhostPortRangeist wie folgt festgelegt:-
Für Container in einer Aufgabe mit dem
awsvpc-Netzwerkmodus wirdhostPortauf denselben Wert wiecontainerPortfestgelegt. Dies ist eine statische Zuordnungsstrategie.
-
-
Gültige Werte für
containerPortRangeliegen zwischen 1 and 65 535. -
Ein Port kann nur in einer Portzuordnung für jeden Container enthalten sein.
-
Sie können keine überlappenden Portbereiche angeben.
-
Die erste Port im Bereich muss kleiner als der letzte Port im Bereich sein.
-
Docker empfiehlt, den Docker-Proxy in der Konfigurationsdatei des Docker-Daemons zu deaktivieren, wenn Sie eine große Anzahl von Ports haben.
Weitere Informationen finden Sie in Ausgabe #11185 unter.
GitHub Informationen zum Deaktivieren des Docker-Proxy in der Docker-Daemon-Konfigurationsdatei finden Sie unter Docker-Daemon im Amazon-ECS-Entwicklerhandbuch.
Sie können DescribeTasks aufrufen, um die
hostPortRangeanzuzeigen, bei denen es sich um die Host-Ports handelt, die an die Container-Ports gebunden sind.Die Portbereiche sind nicht in den Amazon ECS-Aufgabenereignissen enthalten, die an gesendet werden EventBridge. Weitere Informationen finden Sie unter Automatisieren Sie Antworten auf Amazon ECS-Fehler mit EventBridge.
-
hostPortRange-
Typ: Zeichenfolge
Erforderlich: Nein
Der Portnummernbereich auf dem Host, der mit der Netzwerkbindung verwendet wird. Dieser wird von Docker zugewiesen und vom Amazon-ECS-Agenten bereitgestellt.
hostPort-
Typ: Ganzzahl
Erforderlich: Nein
Die Port-Nummer auf der Container-Instance, die für Ihren Container reserviert werden soll.
Der
hostPortkann leer bleiben oder den gleichen Wert wie dercontainerPorthaben.Der standardmäßige flüchtige Port-Bereich für Docker-Version 1.6.0 und später wird in der Instance unter
/proc/sys/net/ipv4/ip_local_port_rangeaufgelistet. Wenn dieser Kernel-Parameter nicht verfügbar ist, wird der standardmäßige flüchtige Port-Bereich von49153–65535verwendet. Versuchen Sie nicht, einen Host-Port im flüchtigen Portbereich anzugeben. Das liegt daran, dass diese für die automatische Zuweisung reserviert sind. Im Allgemeinen zählen Ports unter32768nicht zum flüchtigen Port-Bereich.Die standardmäßigen reservierten Ports sind
22für SSH, die Docker-Ports,2375und2376und der Amazon-ECS-Container-Agenten-Port51678-51680. Jeder Host-Port, der zuvor vom Benutzer für eine laufende Aufgabe festgelegt wurde, ist auch während der Ausführung der Aufgabe reserviert. Nach dem Beenden einer Aufgabe wird der Host-Port freigegeben. Die aktuell reservierten Ports werden in derremainingResourcesder describe-container-instances-Ausgabe angezeigt. Eine Container-Instance kann bis zu 100 reservierte Ports gleichzeitig haben, einschließlich der standardmäßig reservierten Ports. Automatisch zugewiesene Ports werden nicht auf das Kontingent von 100 reservierten Ports angerechnet. name-
Typ: Zeichenfolge
Erforderlich: Nein, erforderlich für die Konfiguration von Service Connect und VPC Lattice in einem Service
Der Name, der für die Portzuordnung verwendet wird. Dieser Parameter gilt nur für Service Connect und VPC Lattice. Dieser Parameter ist der Name, den Sie in der Service-Connect- und VPC-Lattice-Konfiguration eines Services verwenden.
Weitere Informationen finden Sie unter Verwenden von Service Connect, um Amazon-ECS-Services mit Kurznamen zu verbinden.
Im folgenden Beispiel werden beide erforderlichen Felder für Service Connect und VPC Lattice verwendet.
"portMappings": [ { "name":string, "containerPort":integer} ] protocol-
Typ: Zeichenfolge
Erforderlich: Nein
Das für die Port-Zuweisung verwendete Protokoll. Gültige Werte sind
tcpundudp. Der Standardwert isttcp.Wichtig
Nur
tcpwird für Service Connect unterstützt. Denken Sie daran, dasstcpimpliziert ist, wenn dieses Feld nicht festgelegt ist.
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 } ... ] -
Private-Repository-Daten
repositoryCredentials-
Typ: RepositoryCredentials Objekt
Erforderlich: Nein
Die Repository-Anmeldeinformationen für die Authentifizierung bei privaten Registrierungen.
Weitere Informationen finden Sie unter Verwenden von AWS Nicht-Container-Images in Amazon ECS.
-
credentialsParameter -
Typ: Zeichenfolge
Erforderlich: Ja, wenn
repositoryCredentialsverwendet werdenDer Amazon-Ressourcenname (ARN) des Secrets mit den Anmeldeinformationen für das private Repository.
Weitere Informationen finden Sie unter Verwenden von AWS Nicht-Container-Images in Amazon ECS.
Anmerkung
Wenn Sie die Amazon ECS-API verwenden AWS CLI, oder AWS SDKs, falls der geheime Schlüssel in derselben Region wie die Aufgabe existiert, die Sie starten, können Sie entweder den vollständigen ARN oder den Namen des Geheimnisses verwenden. Wenn Sie den verwenden AWS-Managementkonsole, müssen Sie den vollständigen ARN des Geheimnisses angeben.
Im Folgenden finden Sie einen Ausschnitt einer Aufgabendefinition, welche die erforderlichen Parameter zeigt:
"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
-
Essenziell
essential-
Typ: Boolesch
Erforderlich: Nein
Wenn der Parameter
essentialeines Containers alstruegekennzeichnet ist und dieser Container ausfällt oder aus irgendeinem Grund beendet wird, werden auch alle anderen Container in der Aufgabe beendet. Wenn deressential-Parameter eines Containers alsfalsegekennzeichnet 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, gruppieren Sie die Container, die für einen gemeinsamen Zweck verwendet werden, in Komponenten und trennen Sie die verschiedenen Komponenten in mehrere Aufgabendefinitionen. Weitere Informationen finden Sie unter Entwerfen Ihrer Anwendung für Amazon ECS.
Einstiegspunkt
entryPoint-
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Der Eintrittspunkt, der an den Container übergeben wird. Dieser Parameter ist im Docker-Befehl create-container der Option
Entrypointund die Option--entrypointist der Docker-Ausführung zugeordnet."entryPoint": ["string", ...]
Befehl
command-
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Der Befehl, der an den Container übergeben wird. Dieser Parameter ist im Docker-Befehl create-container der Option
Cmdund derCOMMAND-Parameter ist der Docker-Ausführung zugeordnet. Wenn mehrere Argumente vorhanden sind, ist jedes Argument eine getrennte Zeichenfolge im Array."command": ["string", ...]
Arbeitsverzeichnis
workingDirectory-
Typ: Zeichenfolge
Erforderlich: Nein
Das Arbeitsverzeichnis, in dem Befehle im Container ausgeführt werden sollen. Dieser Parameter ist im Docker-Befehl create-container der Option
WorkingDirund die Option--workdirist der Docker-Ausführung zugeordnet.
Erweiterte Parameter für Containerdefinitionen
Die folgenden erweiterten Parameter für Container-Definitionen bieten erweiterte Funktionen für den Docker-Befehl run, der verwendet wird, um Container auf Ihren Amazon-ECS-Container-Instances zu starten.
Themen
Neustartrichtlinie
restartPolicy-
Die Container-Neustart-Richtlinie und die zugehörigen Konfigurationsparameter. Wenn Sie eine Neustart-Richtlinie für einen Container aktivieren, kann Amazon ECS den Container neu starten, ohne dass die Aufgabe ersetzt werden muss. Weitere Informationen finden Sie unter Einzelne Container in Amazon-ECS-Aufgaben mit Richtlinien für den Container-Neustart neu starten.
enabled-
Typ: Boolescher Wert
Erforderlich: Ja
Gibt an, ob eine Neustart-Richtlinie für den Container aktiviert ist.
ignoredExitCodes-
Typ: Ganzzahl-Array
Erforderlich: Nein
Eine Liste von Exit-Codes, die Amazon ECS ignoriert und nicht versucht, neu zu starten. Sie können bis zu 50 Container-Exit-Codes angeben. Standardmäßig ignoriert Amazon ECS keine Exit-Codes.
restartAttemptPeriod-
Typ: Ganzzahl
Erforderlich: Nein
Ein Zeitraum (in Sekunden), den der Container ausgeführt werden muss, bevor ein Neustart versucht werden kann. Ein Container kann nur einmal alle
restartAttemptPeriodSekunden neu gestartet werden. Wenn ein Container für diesen Zeitraum nicht ausgeführt werden kann und vorzeitig beendet wird, wird er nicht neu gestartet. Sie können eine Minimum-restartAttemptPeriodvon 60 Sekunden und eine Maximum-restartAttemptPeriodvon 1 800 Sekunden angeben. Standardmäßig muss ein Container 300 Sekunden lang ausgeführt werden, bevor er neu gestartet werden kann.
Gesundheitscheck
healthCheck-
Der Befehl für die Container-Zustandsprüfung und die zugehörigen Konfigurationsparameter für den Container. Weitere Informationen finden Sie unter Ermitteln des Zustands von Amazon-ECS-Aufgaben mithilfe von Container-Zustandsprüfungen.
command-
Ein Zeichenfolgen-Array, das den Befehl darstellt, den der Container ausführt, um festzustellen, ob er fehlerfrei ist. Das Zeichenfolge-Array kann mit
CMDbeginnen, um die Befehlsargumente direkt auszuführen, oder mitCMD-SHELL, um den Befehl mit der Standard-Shell des Containers auszuführen. Ist nichts davon angegeben, wirdCMDverwendet.Verwenden Sie beim Registrieren einer Aufgabendefinition in eine durch Kommas getrennte Liste von Befehlen. AWS-Managementkonsole Diese Befehle werden in eine Zeichenfolge konvertiert, nachdem die Aufgabendefinition erstellt wurde. Im Folgenden finden Sie eine Beispieleingabe für eine Zustandsprüfung.
CMD-SHELL, curl -f http://localhost/ || exit 1Wenn Sie eine Aufgabendefinition mithilfe des AWS-Managementkonsole JSON-Bedienfelds registrieren APIs, schließen Sie die Befehlsliste mit dem oder dem in Klammern ein. AWS CLI Im Folgenden finden Sie eine Beispieleingabe für eine Zustandsprüfung.
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]Ein Beendigungscode von 0 ohne
stderr-Ausgabe zeigt einen Erfolg an, und der Beendigungscode ungleich Null zeigt einen Fehler an. interval-
Der Zeitraum (in Sekunden) zwischen den Zustandsprüfungen. Sie können zwischen 5 und 300 Sekunden angeben. Der Standardwert ist 30 Sekunden.
timeout-
Der Zeitraum (in Sekunden), der angibt, wie lange gewartet wird, bis eine Zustandsprüfung erfolgreich ist, bevor sie als fehlerhaft betrachtet wird. Sie können zwischen 2 und 60 Sekunden angeben. Der Standardwert ist 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, der angibt, wie lange der Container Zeit für einen Bootstrap hat, bevor fehlgeschlagene Zustandsprüfungen der maximalen Anzahl an Wiederholungen angerechnet werden. Sie können einen Wert zwischen 0 und 300 Sekunden angeben. Standardmäßig ist
startPerioddeaktiviert.Wenn eine Zustandsprüfung innerhalb der
startPerioderfolgreich ist, wird die Container als fehlerfrei betrachtet und alle nachfolgenden Ausfälle werden bei der maximal zulässigen Anzahl von Wiederholungen berücksichtigt.
Umgebung
cpu-
Typ: Ganzzahl
Erforderlich: Nein
Die Anzahl der physischen
cpu-Einheiten, die der Amazon-ECS-Container-Agent für den Container reserviert. Unter Linux ist dieser Parameter im Abschnitt Container erstellender Option CpuShareszugeordnet.Dieses Feld ist optional für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden. Die Gesamtmenge an CPU, die für alle Container innerhalb einer Aufgabe reserviert ist, muss niedriger sein als der
cpu-Wert auf Aufgabenebene.Linux-Container teilen sich nicht zugewiesene CPU-Einheiten mit anderen Containern auf der Container-Instance im gleichen Verhältnis wie die ihnen zugewiesene Menge. Nehmen Sie zum Beispiel an, dass Sie eine Aufgabe für einen einzelnen Container auf einer Instance mit einem Kern und 512 CPU-Einheiten für diesen Container ausführen. Außerdem ist diese Aufgabe die einzige Aufgabe, die auf der Container-Instance läuft. In diesem Beispiel kann der Container jederzeit die gesamte Menge von 1 024 CPU-Einheiten nutzen. Angenommen, Sie haben jedoch auf dieser Container-Instance eine weitere Kopie der gleichen Aufgabe gestartet. Jede Aufgabe würde bei Bedarf eine garantierte Menge von mindestens 512 CPU-Einheiten erhalten. Ebenso kann jeder Container zu einer höheren CPU-Auslastung übergehen, wenn der andere Container die verbleibende CPU nicht nutzt. 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. Der kleinste gültige CPU-Freigabewert, den der Linux-Kernel zulässt, ist 2 und der maximale gültige CPU-Freigabewert, den der Linux-Kernel zulässt, ist 262 144. Der CPU-Parameter ist jedoch nicht erforderlich und Sie können CPU-Werte unter 2 und höher als 262 144 in Ihren Container-Definitionen verwenden. Bei CPU-Werten unter 2 (einschließlich 0) und höher als 262 144 variiert das Verhalten je nach Version Ihres Amazon-ECS-Container-Agenten:
Weitere Beispiele finden Sie unter So verwaltet Amazon ECS CPU- und Arbeitsspeicher-Ressourcen
. gpu-
Typ: ResourceRequirement Objekt
Erforderlich: Nein
Die Anzahl der physischen
GPUs, die der Amazon-ECS-Container-Agent für den Container reserviert. Die Anzahl der für alle Container in einer Aufgabe GPUs reservierten Container darf die Anzahl der GPUs auf der Container-Instance verfügbaren Container nicht überschreiten, auf der die Aufgabe gestartet wird. Weitere Informationen finden Sie unter Amazon-ECS-Aufgabendefinitionen für GPU-Workloads. Elastic Inference accelerator-
Anmerkung
Dieser Parameter wird nicht für Container unterstützt, die in Amazon ECS Managed Instances gehostet werden.
Typ: ResourceRequirement Objekt
Erforderlich: Nein
Für den
InferenceAccelerator-Typ stimmt dervaluemit demdeviceNamefür einenInferenceAcceleratorüberein, der in einer Aufgabendefinition angegeben ist. Weitere Informationen finden Sie unter Name des Elastic Inference Accelerators (veraltet). essential-
Typ: Boolesch
Erforderlich: Nein
Nehmen wir an, der
essential-Parameter eines Containers ist alstruegekennzeichnet und dieser Container schlägt fehl oder wird aus irgendeinem Grund beendet. Dann werden alle anderen Container beendet, die Teil der Aufgabe sind. Wenn der Parameteressentialeines Containers alsfalsegekennzeichnet 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. Angenommen, Sie haben eine Anwendung, die aus mehreren Containern besteht. Dann gruppieren Sie Container, die für einen gemeinsamen Zweck verwendet werden, in Komponenten und teilen die verschiedenen Komponenten in mehrere Aufgabendefinitionen auf. Weitere Informationen finden Sie unter Entwerfen Ihrer Anwendung für Amazon ECS.
"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 vonentryPointhaben, aktualisieren Sie Ihren Container-Agenten oder geben Sie Ihre Befehle und Argumente stattdessen alscommand-Array-Objekte an.Typ: Zeichenfolgen-Array
Erforderlich: Nein
Der Eintrittspunkt, der an den Container übergeben wird.
"entryPoint": ["string", ...] command-
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Der Befehl, der an den Container übergeben wird. Dieser Parameter ist im Befehl create-container der Option
Cmdund derCOMMAND-Parameter ist der Docker-Ausführung zugeordnet. Wenn mehrere Argumente vorhanden sind, stellen Sie sicher, dass jedes Argument eine getrennte Zeichenfolge im Array ist."command": ["string", ...] workingDirectory-
Typ: Zeichenfolge
Erforderlich: Nein
Das Arbeitsverzeichnis, in dem Befehle im Container ausgeführt werden sollen. Dieser Parameter ordnet zu
WorkingDirim Bereich Erstellen eines Containersder Docker Remote API und der Option --workdirfür die docker runzu. "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 ist im Docker-Befehl run der Option
--env-filezugeordnet.Sie können bis zu 10 Umgebungsdateien angeben. Die Datei muss eine
.envDateierweiterung haben. Jede Zeile in einer Umgebungsdatei enthält eine Umgebungsvariable im FormatVARIABLE=VALUE. Zeilen, die mit#beginnen, werden als Kommentare behandelt und ignoriert.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 Eine einzelne Umgebungsvariable an einen Amazon-ECS-Container übergeben.
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 ist im Docker-Befehl create-container der Option
Envund die Option--envist der Docker-Ausführung zugeordnet.Wichtig
Die Verwendung von Klartext-Umgebungsvariablen für sensitive Informationen (wie etwa Zugangsdaten) wird nicht empfohlen.
name-
Typ: Zeichenfolge
Erforderlich: ja, wenn
environmentverwendet wirdDer Name der Umgebungsvariable.
value-
Typ: Zeichenfolge
Erforderlich: ja, wenn
environmentverwendet wirdDer Wert der Umgebungsvariable.
"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ] secrets-
Typ: Objekt-Array
Erforderlich: Nein
Ein Objekt, durch das das Secret dargestellt wird, das dem Container zur Verfügung gestellt werden soll. Weitere Informationen finden Sie unter Sensible Daten an einen Amazon-ECS-Container übergeben.
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 Amazon Resource Name (ARN) des AWS Secrets Manager Secrets oder der vollständige ARN des Parameters im AWS Systems Manager Parameter Store.
Anmerkung
Wenn der Systems Manager Parameter Store-Parameter oder der Secrets Manager Manager-Parameter in derselben AWS-Region Datei wie die Aufgabe, die Sie starten, vorhanden ist, können Sie entweder den vollständigen ARN oder den Namen des Secrets 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" } ]
Sicherheit
privileged-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Parameter
trueist, erhält der Container erhöhte Berechtigungen auf der Host-Container-Instance (ähnlich wie derroot-Benutzer). Dieser Parameter ist im Docker-Befehl create-container der OptionPrivilegedund die Option--privilegedist der Docker-Ausführung zugeordnet. user-
Typ: Zeichenfolge
Erforderlich: Nein
Der Benutzer, der im Container verwendet werden soll. Dieser Parameter ist im Docker-Befehl create-container der Option
Userund die Option--userist der Docker-Ausführung zugeordnet.Wichtig
Wenn Sie Aufgaben im
host-Netzwerkmodus ausführen, sollten Sie Container nicht über den Root-Benutzer (UID 0) ausführen. Wir empfehlen für verbesserte Sicherheit einen Benutzer zu verwenden, der nicht Root-Benutzer ist.Sie können den
usermit den folgenden Formaten angeben. Wenn Sie eine User Identifier (UID, Benutzerbezeichner) und Group Identifier (GID, Gruppenbezeichner) angeben, müssen Sie sie als positive Ganzzahl angeben.-
user -
user:group -
uid -
uid:gid -
user:gid -
uid:group
-
readonlyRootFilesystem-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Parameter
trueist, erhält der Container ein schreibgeschütztes Root-Dateisystem. Dieser Parameter ist im Docker-Befehl create-container der OptionReadonlyRootfsund die Option--read-onlyist der Docker-Ausführung zugeordnet. dockerSecurityOptions-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Eine Liste von Zeichenketten für benutzerdefinierte Bezeichnungen SELinux und AppArmor mehrstufige Sicherheitssysteme. Dieses Feld ist für Container in Aufgaben, die Fargate verwenden, nicht gültig.
ulimits-
Typ: Array von Ulimit-Objekten
Erforderlich: Nein
Eine Liste der
ulimits, die im Container festgelegt werden sollen. Wenn in einer Aufgabendefinition ein ulimit-Wert angegeben ist, überschreibt er die von Docker festgelegten Standardwerte. Dieser Parameter ist im Docker-Befehl create-container der OptionUlimitsund die Option--ulimitist der Docker-Ausführung zugeordnet. Gültige Werte für die Benennung werden im Ulimit-Datentyp angezeigt.Amazon-ECS-Aufgaben, die in Fargate gehosted werden, verwenden die Standardwerte für Ressourcenlimits, die vom Betriebssystem gesetzt wurden. Ausgenommen ist der Ressourcenlimit-Parameter
nofile, den Fargate überschreibt. Das Ressourcenlimitnofilebeschränkt die Anzahl der geöffneten Dateien, die ein Container verwenden kann. Standardmäßig ist das weichenofile-Limit1024und das harte Limit65535.Dieser Parameter erfordert Version 1.18 der Docker Remote API oder höher auf Ihrer Container-Instance. Um die Docker Remote API-Version auf Ihrer Container-Instance zu überprüfen, melden Sie sich an Ihrer Container-Instance an und führen Sie den folgenden Befehl aus:
sudo docker version --format '{{.Server.APIVersion}}'
dockerLabels-
Anmerkung
Dieser Parameter wird nicht für Container unterstützt, die in Amazon ECS Managed Instances gehostet werden.
Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge
Erforderlich: Nein
Eine key/value Karte mit Labels, die dem Container hinzugefügt werden sollen. Dieser Parameter ist im Docker-Befehl create-container der Option
Labelsund die Option--labelist der Docker-Ausführung zugeordnet.Für diesen Parameter ist Version 1.18 der Docker Remote API oder höher auf Ihrer Container-Instance erforderlich.
"dockerLabels": {"string": "string" ...}
Netzwerkeinstellungen
disableNetworking-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Parameter den Wert „true“ aufweist, ist die Netzwerkfunktion innerhalb des Containers deaktiviert.
Der Standardwert ist
false."disableNetworking": true|false links-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Über den Parameter
linkkönnen Container miteinander kommunizieren, ohne dass Port-Zuweisungen nötig sind. Dieser Parameter wird nur unterstützt, wenn der Netzwerkmodus einer Aufgabendefinition aufbridgegesetzt ist. Das Konstruktname:internalNameist analog zuname:aliasin Docker-Verbindungen. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche und Unterstriche sind zulässig.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-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Zeichenfolge
Erforderlich: Nein
Der Hostname, der für Ihren Container verwendet werden soll. Dieser Parameter ist im Docker-Befehl create-container der Option
Hostnameund die Option--hostnameist der Docker-Ausführung zugeordnet."hostname": "string" dnsServers-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Zeichenfolgen-Array
Erforderlich: Nein
Eine List der DNS-Server, die dem Container bereitgestellt werden.
"dnsServers": ["string", ...] extraHosts-
Anmerkung
Dieser Parameter wird für Aufgaben, die den
awsvpc-Netzwerkmodus verwenden, nicht unterstützt.Typ: Objekt-Array
Erforderlich: Nein
Eine Liste der Hostnamen und IP-Adresszuordnungen, die an die Datei
/etc/hostsauf dem Container angefügt werden.Dieser Parameter ist im Docker-Befehl create-container der Option
ExtraHostsund die Option--add-hostist der Docker-Ausführung zugeordnet."extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]hostname-
Typ: Zeichenfolge
Erforderlich: Ja, wenn
extraHostsverwendet werdenDer Hostname, der im Eintrag
/etc/hostsverwendet werden soll. ipAddress-
Typ: Zeichenfolge
Erforderlich: Ja, wenn
extraHostsverwendet werdenDie IP-Adresse, die im Eintrag
/etc/hostsverwendet 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 ist im Docker-Befehl create-container der Option
ReadonlyRootfsund die Option--read-onlyist der Docker-Ausführung zugeordnet.Der Standardwert ist
false."readonlyRootFilesystem": true|false mountPoints-
Typ: Objekt-Array
Erforderlich: Nein
Die Mounting-Punkte für die Daten-Volumes in Ihrem Container. Dieser Parameter ist in der create-container-Docker-API der Option
Volumeszugeordnet und die Option--volumeist der Docker-Ausführung zugeordnet.Windows-Container können ganze Verzeichnisse auf dem gleichen Laufwerk wie
$env:ProgramDataeinbinden. Windows-Container können keine Verzeichnisse auf einem anderen Laufwerk mounten, und es ist kein laufwerksübergreifender Mounting-Punkt möglich. Sie müssen Mounting-Punkte angeben, um ein Amazon-EBS-Volume direkt an eine Amazon-ECS-Aufgabe anzuhängen.sourceVolume-
Typ: Zeichenfolge
Erforderlich: Ja, wenn
mountPointsverwendet werdenDer Name des einzubindenden Volumes.
containerPath-
Typ: Zeichenfolge
Erforderlich: Ja, wenn
mountPointsverwendet werdenDer Pfad in dem Container, in dem das Volume eingebunden wird.
readOnly-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Wert
truelautet, verfügt der Container über schreibgeschützten Zugriff auf das Volume. Lautet der Wertfalse, dann verfügt der Container über Schreibzugriff auf das Volume. Der Standardwert istfalse.Behalten Sie für Aufgaben, die auf EC2 Instanzen ausgeführt werden, auf denen das Windows-Betriebssystem ausgeführt wird, den Standardwert von bei.
false
volumesFrom-
Typ: Objekt-Array
Erforderlich: Nein
Die Daten-Volumes, die von einem anderen Container gemountet werden sollen. Dieser Parameter ist im Docker-Befehl create-container der Option
VolumesFromund die Option--volumes-fromist der Docker-Ausführung zugeordnet.sourceContainer-
Typ: Zeichenfolge
Erforderlich: ja, wenn
volumesFromverwendet wirdDer Name des Containers, von dem die Volumes gemountet werden.
readOnly-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Wert
truelautet, verfügt der Container über schreibgeschützten Zugriff auf das Volume. Lautet der Wertfalse, dann verfügt der Container über Schreibzugriff auf das Volume. Der Standardwert istfalse.
"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ] logConfiguration-
Typ: LogConfigurationObjekt
Erforderlich: Nein
Die Angabe der Protokollkonfiguration für den Container.
Beispiele für Aufgabendefinitionen, die eine Protokollkonfiguration verwenden, finden Sie unter Beispiele für Amazon-ECS-Aufgabendefinitionen.
Dieser Parameter ist im Docker-Befehl create-container der Option
LogConfigund die Option--log-driverist der Docker-Ausführung zugeordnet. Standardmäßig verwenden Container den gleichen Protokolltreiber wie der Docker-Daemon. Allerdings kann der Container einen anderen Protokolltreiber als der Docker-Daemon verwenden, indem Sie einen Protokolltreiber mit diesem Parameter in der Container-Definition angeben. 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.Beachten Sie die folgenden Punkte, wenn eine Protokollkonfiguration für Ihre Container angegeben ist:
-
Amazon ECS unterstützt einen Teil der Protokolltreiber, die für den Docker-Daemon verfügbar sind.
-
Für diesen Parameter muss Ihre Docker Remote API Version 1.18 oder höher in Ihrer Container-Instance verwenden.
"logConfiguration": { "logDriver": "awslogs",""splunk", "awsfirelens", "options": {"string": "string" ...}, "secretOptions": [{ "name": "string", "valueFrom": "string" }] }logDriver-
Typ: Zeichenfolge
Zulässige Werte:
"awslogs","splunk","awsfirelens"Erforderlich: ja, wenn
logConfigurationverwendet wirdDer für den Container zu verwendende Protokolltreiber. Standardmäßig sind die zuvor aufgeführten gültigen Werte Protokolltreiber, mit denen der Amazon-ECS-Container-Agent kommunizieren kann.
Die unterstützten Protokolltreiber sind
awslogs,splunkundawsfirelens.Weitere Informationen zur Verwendung des
awslogsProtokolltreibers in Aufgabendefinitionen zum Senden Ihrer Container-Logs an CloudWatch Logs finden Sie unterAmazon ECS-Protokolle senden an CloudWatch .Weitere Informationen finden zur Verwendung des
awsfirelens-Protokolltreibers finden Sie unter Amazon ECS-Protokolle an einen AWS Service senden oder AWS Partner.Anmerkung
Wenn Sie einen benutzerdefinierten Treiber haben, der nicht aufgeführt ist, können Sie das Amazon ECS-Container-Agent-Projekt, das verfügbar
ist, forken GitHub und es so anpassen, dass es mit diesem Treiber funktioniert. Wir möchten Sie bitten, uns eventuelle Änderungswünsche mitzuteilen. Allerdings unterstützen wir derzeit nicht die Ausführung modifizierter Kopien dieser Software. Für diesen Parameter ist Version 1.18 der Docker Remote API oder höher auf Ihrer Container-Instance erforderlich.
options-
Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge
Erforderlich: Nein
Die key/value Zuordnung der Konfigurationsoptionen, die an den Protokolltreiber gesendet werden sollen.
Die Optionen, die Sie angeben können, hängen vom Protokolltreiber ab. Zu den Optionen, die Sie angeben können, wenn Sie den
awslogsRouter zum Weiterleiten von Protokollen an Amazon verwenden, CloudWatch gehören die folgenden:awslogs-create-group-
Erforderlich: Nein
Geben Sie an, ob die Protokollgruppe automatisch erstellt werden soll. Wenn diese Option nicht angegeben ist, gilt standardmäßig
false.Anmerkung
Ihre IAM-Richtlinie muss die
logs:CreateLogGroup-Berechtigung umfassen, bevor Sieawslogs-create-groupzu nutzen versuchen. awslogs-region-
Erforderlich: Ja
Geben Sie an AWS-Region , an den der
awslogsProtokolltreiber Ihre Docker-Protokolle senden soll. In Logs können Sie wählen, ob Sie alle Ihre Logs von Clustern in verschiedenen Regionen an eine einzige Region senden möchten. CloudWatch Dann sind alle an einem Standort sichtbar. Andernfalls können Sie sie nach Region aufteilen, um eine höhere Granularität zu erzielen. Vergewissern Sie sich, dass die angegebene Protokollgruppe in der Region vorhanden ist, die Sie mit dieser Option festlegen. awslogs-group-
Erforderlich: Ja
Sie müssen eine Protokollgruppe angeben, an die der
awslogs-Protokolltreiber seine Protokoll-Streams sendet. awslogs-stream-prefix-
Erforderlich: Ja
Mit der
awslogs-stream-prefix-Option können Sie einen Protokoll-Stream mit dem angegebenen Präfix, dem Containernamen und der ID der Amazon-ECS-Aufgabe verknüpfen, zu der der Container gehört. Wenn Sie einen Präfix mit dieser Option angeben, weist der Protokoll-Stream das folgende Format auf:prefix-name/container-name/ecs-task-idWenn Sie keinen Präfix mit dieser Option angeben, wird der Protokoll-Stream nach der Container-ID benannt, die vom Docker-Daemon auf der Container-Instance zugewiesen wurde. Da es schwierig ist, Protokolle nur mit der Docker-Container-ID (die nur auf der Container-Instance verfügbar ist) zum Container zurückzuverfolgen, der sie gesendet hat, empfehlen wir, dass Sie einen Präfix mit dieser Option festlegen.
Für Amazon-ECS-Services können Sie den Servicenamen als Präfix verwenden. So können Sie Protokollstreams zu dem Service zurückverfolgen, zu dem der Container gehört, den Namen des Containers ermitteln, der sie gesendet hat, und die ID der Aufgabe, zu der der Container gehört.
Sie müssen ein Stream-Präfix für Ihre Protokolle angeben, damit Ihre Protokolle im Protokollfeld der Amazon-ECS-Konsole angezeigt werden.
awslogs-datetime-format-
Erforderlich: Nein
Diese Option definiert einen mehrzeiliges Startmuster im
strftime-Format von Python. Eine Protokollmeldung besteht aus einer Zeile, die mit dem angegebenen Muster übereinstimmt, und allen folgenden Zeilen, die nicht dem Muster entsprechen. Die zugeordnete Zeile ist das Trennzeichen zwischen Protokollnachrichten.Ein Beispiel für einen Anwendungsfall für die Nutzung dieses Formats ist die Ausgabenanalyse, z. B. einen Stack-Dump, der andernfalls möglicherweise mehrere Einträge protokolliert. Mit dem richtigen Muster kann es in nur einem Eintrag erfasst werden.
Weitere Informationen finden Sie unter awslogs-datetime-format
. Sie können nicht sowohl die Optionen
awslogs-datetime-formatundawslogs-multiline-patternkonfigurieren.Anmerkung
Bei der mehrzeiligen Protokollierung wird eine regelmäßige Ausdrucksanalyse und die Übereinstimmung aller Protokollmeldungen ausgeführt. Dies kann negative Auswirkungen auf die Leistung der Protokollierung haben.
awslogs-multiline-pattern-
Erforderlich: Nein
Diese Option definiert ein mehrzeiliges Startmuster mit einem regulären Ausdruck. Eine Protokollmeldung besteht aus einer Zeile, die mit dem angegebenen Muster übereinstimmt, und allen folgenden Zeilen, die nicht dem Muster entsprechen. Die zugeordnete Zeile ist das Trennzeichen zwischen Protokollnachrichten.
Weitere Informationen finden Sie unter awslogs-multiline-pattern
. Diese Option wird ignoriert, wenn
awslogs-datetime-formatebenfalls konfiguriert ist.Sie können nicht sowohl die Optionen
awslogs-datetime-formatundawslogs-multiline-patternkonfigurieren.Anmerkung
Bei der mehrzeiligen Protokollierung wird eine regelmäßige Ausdrucksanalyse und die Übereinstimmung aller Protokollmeldungen ausgeführt. Dies kann negative Auswirkungen auf die Leistung der Protokollierung haben.
mode-
Erforderlich: Nein
Zulässige Werte:
non-blocking|blockingDiese Option definiert den Zustellungsmodus von Protokollnachrichten von dem Container an den
awslogs-Protokolltreiber. Der von Ihnen gewählte Zustellungsmodus wirkt sich auf die Anwendungsverfügbarkeit aus, wenn der Protokollfluss vom Container unterbrochen wird.Wenn Sie diesen
blockingModus verwenden und der Protokollfluss zu unterbrochen CloudWatch wird, werden Aufrufe vom Container-Code zum Schreiben in diestdoutundstderr-Streams blockiert. Der Logging-Thread der Anwendung wird daraufhin blockiert. Dies kann dazu führen, dass die Anwendung nicht mehr reagiert und die Container-Zustandsprüfung fehlschlägt.Wenn Sie den
non-blocking-Modus verwenden, werden die Protokolle des Containers stattdessen in einem mit der Optionmax-buffer-sizekonfigurierten Zwischenpuffer im Arbeitsspeicher gespeichert. Dadurch wird verhindert, dass die Anwendung nicht mehr reagiert, wenn keine Protokolle gesendet CloudWatch werden können. Wir empfehlen, diesen Modus zu verwenden, wenn Sie die Verfügbarkeit des Services sicherstellen möchten und einen gewissen Protokollverlust in Kauf nehmen möchten. Weitere Informationen finden Sie unter Verhinderung von Protokollverlusten im blockierungsfreien Modus imawslogs-Container-Protokolltreiber. max-buffer-size-
Erforderlich: Nein
Standardwert:
1mWenn der
non-blocking-Modus verwendet wird, steuert diemax-buffer-size-Protokolloption die Größe des Puffers, der für die Zwischenspeicherung von Nachrichten verwendet wird. Stellen Sie sicher, dass Sie eine für Ihre Anwendung angemessene Puffergröße angeben. Wenn der Puffer voll ist, können keine weiteren Protokolle gespeichert werden. Protokolle, die nicht gespeichert werden können, gehen verloren.
Um Protokolle mithilfe des
splunk-Protokollrouters weiterzuleiten, müssen Sie einsplunk-tokenund einesplunk-urlangeben.Wenn Sie den
awsfirelensProtokollrouter verwenden, um Protokolle zur Protokollspeicherung und Analyse an ein AWS-Service AWS Partner Network OD-Ziel weiterzuleiten, können Sie dielog-driver-buffer-limitOption so einstellen, dass die Anzahl der Ereignisse begrenzt wird, die im Speicher zwischengespeichert werden, bevor sie an den Log-Router-Container gesendet werden. Es kann helfen, ein potenzielles Problem mit dem Verlust von Protokollen zu beheben, da ein hoher Durchsatz dazu führen könnte, dass der Speicher für Puffer innerhalb von Docker ausgeht. Weitere Informationen finden Sie unter Konfiguration von Amazon-ECS-Protokollen für hohen Durchsatz.Andere Optionen, die Sie beim Weiterleiten von Protokollen mithilfe von
awsfirelensangeben können, hängen vom Ziel ab. Wenn Sie Protokolle nach Amazon Data Firehose exportieren, können Sie das AWS-Region mitregionund einen Namen für den Protokollstream mitdelivery_streamangeben.Wenn Sie Protokolle nach Amazon Kinesis Data Streams exportieren, können Sie eine AWS-Region mit
regionund einen Datenstrom-Namen mitstreamangeben.Wenn Sie Protokolle nach Amazon OpenSearch Service exportieren, können Sie Optionen wie
NameHost(OpenSearch Service-Endpunkt ohne Protokoll),Port,Index,Type,Aws_auth,Aws_regionSuppress_Type_Name, und angebentls.Wenn Sie Protokolle nach Amazon S3 exportieren, können Sie den Bucket mit der
bucket-Option angeben. Sie können auchregion,total_file_size,upload_timeoutunduse_put_objectals Optionen angeben.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, welches das Secret darstellt, der an die Protokollkonfiguration übergeben werden soll. Zu den Secrets, die in der Protokollkonfiguration verwendet werden, können ein Authentifizierungs-Token, ein Zertifikat oder ein Verschlüsselungsschlüssel gehören. Weitere Informationen finden Sie unter Sensible Daten an einen Amazon-ECS-Container übergeben.
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: FirelensConfigurationObjekt
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 Amazon ECS-Protokolle an einen AWS Service senden oder AWS Partner.
{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }options-
Typ: Abbildung einer Zeichenfolge auf eine Zeichenfolge
Erforderlich: Nein
Die key/value Übersicht der Optionen, die bei der Konfiguration des Log-Routers 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:::. Weitere Informationen finden Sie unter Beispiel einer Amazon-ECS-Aufgabendefinition: Protokolle an FireLens weiterleiten.amzn-s3-demo-bucket/fluent.conf|filepath"} type-
Typ: Zeichenfolge
Erforderlich: Ja
Der zu verwendende Protokollrouter. Die gültigen Werte sind
fluentdundfluentbit.
Ressourcenanforderungen
resourceRequirements-
Typ: Array von ResourceRequirement-Objekten
Erforderlich: Nein
Die Art und Menge einer Ressource, die einem Container zugewiesen werden soll. Die einzige unterstützte Ressource ist eine GPU.
type-
Typ: Zeichenfolge
Erforderlich: Ja
Die Art einer Ressource, die einem Container zugewiesen werden soll. Der unterstützte Wert ist
GPU. value-
Typ: Zeichenfolge
Erforderlich: Ja
Der Wert für den angegebenen Ressourcentyp.
Wenn der
GPU-Typ verwendet wird, ist der Wert die Anzahl der physischenGPUs, die der Amazon-ECS-Container-Agent für den Container reserviert. Die Anzahl der Container GPUs , die für alle Container in einer Aufgabe reserviert sind, darf die Anzahl der verfügbaren Container auf der Container-Instance, GPUs auf der die Aufgabe gestartet wird, nicht überschreiten.GPUs sind nicht für Aufgaben verfügbar, die auf Fargate ausgeführt werden.
Container-Timeouts
startTimeout-
Typ: Ganzzahl
Erforderlich: Nein
Beispielwerte:
120Zeitdauer (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
containerAist abhängig davon, dasscontainerBden StatusCOMPLETE,SUCCESSoderHEALTHYerreicht. Wenn einstartTimeout-Wert fürcontainerBangegeben ist und es den gewünschten Status nicht innerhalb dieses Zeitraums erreicht, wirdcontainerAnicht 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.
Der Höchstwert beträgt 600 Sekunden (10 Minuten).
stopTimeout-
Typ: Ganzzahl
Erforderlich: Nein
Beispielwerte:
120Dauer (in Sekunden), die gewartet werden soll, bevor der Container zwangsweise beendet wird, wenn er nicht normal beendet wird.
Wenn der Parameter nicht angegeben wird, wird der Standardwert 30 Sekunden verwendet. Der Höchstwert beträgt 86 400 Sekunden (24 Stunden).
Container-Abhängigkeit
dependsOn-
Typ: Array von ContainerDependency-Objekten
Erforderlich: Nein
Die für das Startup und Herunterfahren des Containers definierten Abhängigkeiten. Ein Container kann mehrere Abhängigkeiten enthalten. Wenn eine Abhängigkeit für das Startup und das Herunterfahren des Containers definiert ist, ist sie reserviert. Ein Beispiel finden Sie unter 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.
Dieser Parameter erfordert, dass die Aufgabe oder der Service die Plattformversion
1.3.0oder höher verwendet (Linux) oder1.0.0(Windows)."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. Die Bedingung ü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 Container festgelegt werden. -
SUCCESS– Diese Bedingung ist mitCOMPLETEidentisch, erfordert aber auch, dass der Container mit dem Statuszerobeendet wird. Diese Bedingung kann nicht für einen essenziellen Container festgelegt werden. -
HEALTHY– Diese Bedingung überprüft, ob der abhängige Container seine Zustandsprüfung bestanden hat, bevor das Starten anderer Container zugelassen wird. Dies setzt voraus, das für den abhängigen Container Zustandsprüfungen in der Aufgabendefinition konfiguriert wurden. Diese Bedingung wird nur beim Startup der Aufgabe bestätigt.
-
Systemkontrollen
systemControls-
Typ: SystemControl Objekt
Erforderlich: Nein
Eine Liste der Namespace-Kernel-Parameter, die im Container festgelegt werden Dieser Parameter ist im Docker-Befehl create-container der Option
Sysctlsund die Option--sysctlist der Docker-Ausführung zugeordnet. Beispielsweise können Sie dienet.ipv4.tcp_keepalive_time-Einstellung konfigurieren, um Verbindungen mit einer längeren Lebensdauer aufrechtzuerhalten.Wir empfehlen nicht, netzwerkbezogene
systemControls-Parameter für mehrere Container in einer einzelnen Aufgabe festzulegen, die auch entweder denawsvpc- oderhost-Netzwerkmodus verwendet. Dies hat die folgenden Nachteile:-
Wenn Sie
systemControlsfür einen beliebigen Container festlegen, werden diese auf alle Container in der Aufgabe angewendet. Wenn Sie unterschiedlichesystemControlsfür mehrere Container innerhalb einer einzelnen Aufgabe festlegen, werden diesystemControlsdes zuletzt gestarteten Containers für alle Container übernommen.
Wenn Sie einen IPC-Ressourcen-Namespace für die Container in der Aufgabe einrichten, gelten folgende Bedingungen für Ihre Systemsteuerungen. Weitere Informationen finden Sie unter IPC-Modus.
-
Für Aufgaben, die den IPC-Modus
hostverwenden, wird der IPC-NamespacesystemControlsnicht unterstützt. -
Für Aufgaben, die den IPC-Modus
taskverwenden, gelten die Werte des IPC-NamespacesystemControlsfür alle Container innerhalb einer Aufgabe.
"systemControls": [ { "namespace":"string", "value":"string" } ]namespace-
Typ: Zeichenfolge
Erforderlich: Nein
Der Namespace-Kernel-Parameter, für den ein
valuefestgelegt wird.Gültige IPC-Namespace-Werte:
"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"undSysctls, die mit"fs.mqueue.*"beginnenGültige Netzwerk-Namespace-Werte:
Sysctlsbeginnend mit"net.*"In Fargate werden nurSysctlsmit Namespace akzeptiert, die innerhalb des Containers existieren.Alle diese Werte werden von Fargate unterstützt.
value-
Typ: Zeichenfolge
Erforderlich: Nein
Der Wert für den Namespace-Kernel-Parameter, der in
namespaceangegeben ist.
-
Interactive
interactive-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Parameter
trueist, können Sie Container-Anwendungen bereitstellen, für diestdinoderttyzugeordnet werden muss. Dieser Parameter ist im Docker-Befehl create-container der OptionOpenStdinund die Option--interactiveist der Docker-Ausführung zugeordnet.Der Standardwert ist
false.
Pseudo-Terminal
pseudoTerminal-
Typ: Boolesch
Erforderlich: Nein
Wenn dieser Parameter
truelautet, wird ein TTY zugeordnet. Dieser Parameter ist im Docker-Befehl create-container der OptionTtyund die Option--ttyist der Docker-Ausführung zugeordnet.Der Standardwert ist
false.
Linux-Parameter
linuxParameters-
Typ: LinuxParameters Objekt
Erforderlich: Nein
Linux-spezifische Änderungen, die auf den Container angewendet werden, wie z. B. Linux-Kernel-Funktionen.
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.
devices-
Typ: Array von Device-Objekten
Erforderlich: Nein
Alle Host-Geräte, die dem Container zur Verfügung gestellt werden sollen. Dieser Parameter ist im Docker-Befehl create-container der Option
Devicesund die Option--deviceist der Docker-Ausführung zugeordnet. initProcessEnabled-
Typ: Boolesch
Erforderlich: Nein
Führen Sie einen
init-Prozess innerhalb des Containers aus, der Signalen weiterleitet und Prozesse aufnimmt. Dieser Parameter ist der Option--initfür die Docker-Ausführung zugeordnet. maxSwap-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Ganzzahl
Erforderlich: Nein
Die Gesamtmenge des Auslagerungsspeichers (in MiB), den ein Container verwenden kann. Dieser Parameter ist in die Option
--memory-swapzur Docker-Ausführung übersetzt, wobei der Wert die Summe aus dem Container-Speicher und dem WertmaxSwapist. swappiness-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Ganzzahl
Erforderlich: Nein
Auf diese Weise können Sie das Speicherauslagerungsverhalten eines Containers optimieren. Ein
swappiness-Wert von0führt dazu, dass ein Auslagern nicht erfolgt, wenn dies nicht unbedingt erforderlich ist. Einswappiness-Wert von100führt dazu, dass Seiten sehr aggressiv ausgelagert werden. Gültige Werte sind Ganzzahlen zwischen0und100. Wenn der Parameterswappinessnicht angegeben wird, wird der Standardwert60verwendet. Wenn kein Wert fürmaxSwapangegeben ist, wird dieser Parameter ignoriert. Dieser Parameter ist der Option--memory-swappinessfür die Docker-Ausführung zugeordnet. -
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Ganzzahl
Erforderlich: Nein
Die Größe des
/dev/shm-Volumes (in MB). Dieser Parameter ist der Option--shm-sizefür die Docker-Ausführung zugeordnet. tmpfs-
Anmerkung
Dieser Parameter wird für Aufgaben, die in Amazon ECS Managed Instances ausgeführt werden, nicht unterstützt.
Typ: Array von Tmpfs-Objekten
Erforderlich: Nein
Der Container-Pfad, Mount-Optionen und Größe (in MiB) des tmpfs-Mounts. Dieser Parameter ist der Option
--tmpfsfür die Docker-Ausführung zugeordnet.