

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.

# Definieren der Container-Instances, die Amazon ECS für Aufgaben verwendet
<a name="task-placement-constraints"></a>

Eine Aufgabenplatzierungsbeschränkung ist eine Regel für eine Container-Instance, anhand derer Amazon ECS bestimmt, ob die Aufgabe auf der Instance ausgeführt werden darf. Mindestens eine Container-Instance muss der Einschränkung entsprechen. Wenn es keine Instances gibt, die der Einschränkung entsprechen, verbleibt die Aufgabe im Status `PENDING`. Wenn Sie einen neuen Service erstellen oder einen vorhandenen aktualisieren, können Sie Einschränkungen bei der Aufgabenplatzierung für die Aufgaben des Services angeben. 

Sie geben Aufgabenplatzierungsbeschränkungen in der Servicedefinition oder der Aufgabendefinition mithilfe des Parameters `placementConstraint` an.

```
"placementConstraints": [
    {
        "expression": "The expression that defines the task placement constraints",
        "type": "The placement constraint type to use"
    }
]
```

Die folgende Tabelle beschreibt die Verwendung dieser Parameter.


| Einschränkungstypen | Kann angegeben werden, wann | 
| --- | --- | 
| distinctInstancePlatzieren Sie jede Aufgabe auf einer anderen Container-Instance.Amazon ECS prüft den gewünschten Status der Aufgaben für die Aufgabenplatzierung. Wenn beispielsweise der gewünschte Status der vorhandenen Aufgabe `STOPPED` lautet (der letzte Status jedoch nicht), kann eine neue eingehende Aufgabe trotz der Platzierungsbeschränkung `distinctInstance` derselben Instance zugewiesen werden. Daher werden Ihnen möglicherweise zwei Aufgaben mit dem letzten Status `RUNNING` auf derselben Instance angezeigt. Wir empfehlen Kunden, die für ihre Aufgaben eine starke Isolierung suchen, Fargate zu verwenden. Fargate führt jede Aufgabe in einer Hardware-Virtualisierungsumgebung aus. Workloads, die auf Fargate ausgeführt werden, teilen sich keine Netzwerkschnittstellen, flüchtigen Fargate-Speicher, CPU oder Arbeitsspeicher mit anderen Aufgaben. Weitere Informationen finden Sie unter [Sicherheitsüberblick von AWS Fargate](https://d1.awsstatic.com/whitepapers/AWS_Fargate_Security_Overview_Whitepaper.pdf). |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/task-placement-constraints.html)  | 
| memberOfPlatzierung von Aufgaben auf Container-Instances, die einem Ausdruck entsprechen.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonECS/latest/developerguide/task-placement-constraints.html) | 

Wenn Sie den Einschränkungstyp `memberOf` verwenden, können Sie mithilfe der Cluster-Abfragesprache einen Ausdruck erstellen, der die Container-Instances definiert, in denen Amazon ECS Aufgaben platzieren kann. Mit dem Ausdruck können Sie Ihre Container-Instances nach Attributen gruppieren. Der Ausdruck gehört zum `expression `-Parameter von `placementConstraint`.

## Attribute von Amazon-ECS-Container-Instances
<a name="attributes"></a>

Sie können zu Ihren Container-Instances benutzerdefinierte Metadaten hinzufügen, die als *Attribute* bezeichnet werden. Jedes Attribut hat einen Namen und einen optionalen Zeichenfolgenwert. Sie können die von Amazon ECS vergebenen Attribute verwenden oder benutzerdefinierte Attribute erstellen.

Die folgenden Abschnitte enthalten Beispiele für integrierte, optionale und benutzerdefinierte Attribute.

### Integrierte Attribute
<a name="ecs-automatic-attributes"></a>

Amazon ECS wendet automatisch die folgenden Attribute auf Ihre Container-Instances an.

`ecs.ami-id`  
Die ID des zum Start der Instance verwendeten AMI. Ein Beispielwert für dieses Attribut ist `ami-1234abcd`.

`ecs.availability-zone`  
Die Availability Zone für die Instance. Ein Beispielwert für dieses Attribut ist `us-east-1a`.

`ecs.instance-type`  
Den Instance-Typ für die Instance. Ein Beispielwert für dieses Attribut ist `g2.2xlarge`.

`ecs.os-type`  
Das Betriebssystem für die Instance. Die möglichen Werte für dieses Attribut sind `linux` und `windows`.

`ecs.os-family`  
Die Betriebssystemversion für die Instance.  
Für Linux-Instances ist der gültige Wert `LINUX`. Für Windows-Instances legt ECS den Wert im Format `WINDOWS_SERVER_<OS_Release>_<FULL or CORE>` fest. Die gültigen Werte sind `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_20H2_CORE`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE` und `WINDOWS_SERVER_2016_FULL`.  
Dies ist wichtig für Windows-Container und Windows containers on AWS Fargate weil die Betriebssystemversion jedes Windows-Containers mit der des Hosts übereinstimmen muss. Wenn sich die Windows-Version des Container-Images von der des Hosts unterscheidet, startet der Container nicht. Weitere Informationen finden Sie unter [Kompatibilität mit Windows-Containern](https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11) auf der Microsoft-Dokumentations-Website.  
Wenn auf Ihrem Cluster mehrere Windows-Versionen ausgeführt werden, können Sie mithilfe der Platzierungsbeschränkung `memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)` sicherstellen, dass eine Aufgabe auf einer EC2-Instance platziert wird, die auf derselben Version ausgeführt wird. Weitere Informationen finden Sie unter [Abrufen der Amazon-ECS-optimierten Windows-AMI-Metadaten](retrieve-ecs-optimized_windows_AMI.md).

`ecs.cpu-architecture`  
Die CPU-Architektur für die Instance. Beispielwerte für dieses Attribut sind `x86_64` und `arm64`.

`ecs.vpc-id`  
Die VPC, in der die Instance gestartet wurde. Ein Beispielwert für dieses Attribut ist `vpc-1234abcd`.

`ecs.subnet-id`  
Das Subnetz, das die Instance verwendet. Ein Beispielwert für dieses Attribut ist `subnet-1234abcd`.

**Anmerkung**  
Amazon ECS Managed Instances unterstützt die folgende Teilmenge von Attributen:  
`ecs.subnet-id`
`ecs.availability-zone`
`ecs.instance-type`
`ecs.cpu-architecture`

### Optionale Attribute
<a name="ecs-optional-attributes"></a>

Amazon ECS kann die folgenden Attribute zu Ihren Container-Instances hinzufügen.

`ecs.awsvpc-trunk-id`  
Wenn dieses Attribut vorhanden ist, verfügt die Instance über eine Trunk-Netzwerkschnittstelle. Weitere Informationen finden Sie unter [Erhöhung der Netzwerkschnittstellen für Linux-Container-Instances von Amazon ECS](container-instance-eni.md).

`ecs.outpost-arn`  
Wenn dieses Attribut existiert, enthält es den Amazon-Ressourcennamen (ARN) des Outpost. Weitere Informationen finden Sie unter [Amazon Elastic Container Service auf AWS Outposts](using-outposts.md).

`ecs.capability.external`  
Wenn dieses Attribut vorhanden ist, wird die Instance als externe Instance identifiziert. Weitere Informationen finden Sie unter [Amazon-ECS-Cluster für externe Instances](ecs-anywhere.md).

### Benutzerdefinierte Attribute
<a name="ecs-custom-attributes"></a>

Sie können benutzerdefinierte Attribute für Ihre Container-Instances festlegen. Beispielsweise können Sie ein Attribut mit dem Namen „stack“ und dem Wert „prod“ definieren.

Bei der Angabe benutzerdefinierter Attribute sollte Folgendes berücksichtigt werden.
+ `name` muss zwischen 1 und 128 Zeichen sein und Name kann Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche, Unterstriche, Schrägstriche, Gegenschrägstriche oder Punkte enthalten.
+ `value` muss zwischen 1 und 128 Zeichen sein und Buchstaben (Groß- und Kleinbuchstaben), Ziffern, Bindestriche, Unterstriche, Punkte, At-Zeichen (@), Schrägstriche, Gegenschrägstriche, Doppelpunkte oder Leerzeichen enthalten. Der Wert darf keine führenden oder nachgestellten Leerzeichen enthalten.

# Ausdrücke erstellen, um Container-Instances für Amazon-ECS-Aufgaben zu definieren
<a name="cluster-query-language"></a>

Cluster-Abfragen sind Ausdrücke, die Ihnen das Gruppieren von Objekten ermöglichen. Beispielsweise können Sie Container-Instances nach Attributen gruppieren, z. B. Availability Zone, Instance-Typ oder benutzerdefinierte Metadaten. Weitere Informationen finden Sie unter [Attribute von Amazon-ECS-Container-Instances](task-placement-constraints.md#attributes).

Nachdem Sie eine Gruppe von Container-Instances definiert haben, können Sie Amazon ECS so anpassen, dass Aufgaben basierend auf der Gruppe auf Container-Instances platziert werden. Weitere Informationen finden Sie unter [Ausführen einer Anwendung als Amazon-ECS-Aufgabe](standalone-task-create.md) und [Erstellung einer Amazon-ECS-Bereitstellung mit fortlaufender Aktualisierung](create-service-console-v2.md). Sie können bei der Auflistung von Container-Instances auch einen Gruppenfilter anwenden.

## Ausdruck-Syntax
<a name="expression-syntax"></a>

Ausdrücke haben die folgende Syntax:

```
subject operator [argument]
```

**Betreff**  
Das auszuwertende Attribut oder Feld.

`agentConnected`  
Wählen Sie Container-Instances anhand des Verbindungsstatus ihres Amazon-ECS-Container-Agenten aus. Mithilfe dieses Filters können Sie nach Instances mit getrennten Container-Agenten suchen.  
Gültige Operatoren: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`agentVersion`  
Wählen Sie Container-Instances anhand der Version ihres Amazon-ECS-Container-Agenten aus. Mithilfe dieses Filters können Sie Instances suchen, auf denen veraltete Versionen des Amazon-ECS-Container-Agenten ausgeführt werden.  
Gültige Operatoren: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`attribute:attribute-name`  
Wählen Sie Container-Instances nach Attribut aus. Weitere Informationen finden Sie unter [Attribute von Amazon-ECS-Container-Instances](task-placement-constraints.md#attributes).

`ec2InstanceId`  
Wählen Sie Container-Instances nach ihrer Amazon-EC2-Instance-ID aus.  
Gültige Operatoren: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`registeredAt`  
Wählen Sie Container-Instances nach ihrem Registrierungsdatum aus. Mithilfe dieses Filters können Sie neu registrierte Instances oder sehr alte Instances finden.  
Gültige Operatoren: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)  
Gültige Datumsformate: 2018-06-18T22:28:28\$100:00, 2018-06-18T22:28:28Z, 2018-06-18T22:28:28, 2018-06-18

`runningTasksCount`  
Wählen Sie Container-Instances nach der Anzahl der ausgeführten Aufgaben aus. Mithilfe dieses Filters können Sie Instances finden, die leer oder nahezu leer sind, auf denen also wenige Aufgaben ausgeführt werden.  
Gültige Operatoren: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`task:group`  
Wählen Sie Container-Instances nach Aufgabengruppe aus. Weitere Informationen finden Sie unter [Gruppenbezogene Amazon-ECS-Aufgaben](task-groups.md).

**Operator**  
Der Vergleichsoperator. Folgende Operatoren werden unterstützt.


|  Operator  |  Description  | 
| --- | --- | 
|  ==, equals  |  Zeichenfolgen-Übereinstimmung  | 
|  \$1=, not\$1equals  |  Keine Zeichenfolgen-Übereinstimmung  | 
|  >, greater\$1than  |  größer als  | 
|  >=, greater\$1than\$1equal  |  größer als oder gleich  | 
|  <, less\$1than  |  kleiner als  | 
|  <=, less\$1than\$1equal  |  kleiner als oder gleich  | 
|  exists  |  Subjekt ist vorhanden  | 
|  \$1exists, not\$1exists  |  Subjekt ist nicht vorhanden  | 
|  in  |  Wert in Argumentliste enthalten  | 
|  \$1in, not\$1in  |  Wert nicht in Argumentliste enthalten  | 
|  =\$1, matches  |  Muster-Übereinstimmung  | 
|  \$1\$1, not\$1matches  |  Keine Muster-Übereinstimmung  | 

**Anmerkung**  
Ein einzelner Ausdruck kann keine Klammern enthalten. Klammern können jedoch in zusammengesetzten Ausdrücken verwendet werden, um eine Rangfolge anzugeben.

**Argument**  
Bei vielen Operatoren ist das Argument ein Literalwert.

Die Operatoren `in` und `not_in` setzen eine Argumentliste als Argument voraus. Geben Sie eine Argumentliste wie folgt an:

```
[argument1, argument2, ..., argumentN]
```

Die Operatoren „matches“ und „not\$1matches“ setzen ein Argument voraus, das die reguläre Java-Ausdrucksyntax erfüllt. Weitere Informationen finden Sie unter [java.util.regex.Pattern](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html).

**Zusammengesetzte Ausdrücke**

Sie können Ausdrücke mit den folgenden booleschen Operatoren miteinander kombinieren:
+ &&, und
+ \$1\$1, oder
+ \$1, nicht

Sie können Klammern verwenden, um eine Rangfolge anzugeben:

```
(expression1 or expression2) and expression3
```

## Beispiel-Ausdrücke
<a name="expression-examples"></a>

Es folgen Beispiel-Ausdrücke.

**Beispiel: Zeichenfolgen-Übereinstimmung**  
Mit dem folgenden Ausdruck werden Instances des angegebenen Instance-Typs ausgewählt.

```
attribute:ecs.instance-type == t2.small
```

**Beispiel: Argumentliste**  
Mit dem folgenden Ausdruck werden Instances in der Availability Zone us-east-1a oder us-east-1b ausgewählt.

```
attribute:ecs.availability-zone in [us-east-1a, us-east-1b]
```

**Beispiel: zusammengesetzter Ausdruck**  
Mit dem folgenden Ausdruck werden G2-Instances ausgewählt, die nicht in der Availability Zone us-east-1d enthalten sind.

```
attribute:ecs.instance-type =~ g2.* and attribute:ecs.availability-zone != us-east-1d
```

**Beispiel: Aufgaben-Affinität**  
Mit dem folgenden Ausdruck werden Instances ausgewählt, die Aufgaben in der Gruppe `service:production` hosten.

```
task:group == service:production
```

**Beispiel: Aufgaben-Anti-Affinität**  
Mit dem folgenden Ausdruck werden Instances ausgewählt, die keine Aufgaben in der Datenbankgruppe hosten.

```
not(task:group == database)
```

**Beispiel: Anzahl der ausgeführten Aufgaben**  
Mit dem folgenden Ausdruck werden Instances ausgewählt, auf denen nur eine Aufgabe ausgeführt wird.

```
runningTasksCount == 1
```

**Beispiel: Amazon-ECS-Container-Agent-Version**  
Mit dem folgenden Ausdruck werden Instances ausgewählt, auf denen eine Container-Agenten-Version unter Version 1.14.5 ausgeführt wird.

```
agentVersion < 1.14.5
```

**Beispiel: Zeitpunkt der Instance-Registrierung**  
Mit dem folgenden Ausdruck werden Instances ausgewählt, die vor dem 13. Februar 2018 registriert wurden.

```
registeredAt < 2018-02-13
```

**Beispiel: ID der Amazon-EC2-Instance**  
Der folgende Ausdruck wählt Instances mit der folgenden Amazon EC2 EC2-Instance IDs aus.

```
ec2InstanceId in ['i-abcd1234', 'i-wxyx7890']
```

# Beispiel für Amazon-ECS-Aufgabenplatzierungsbeschränkungen
<a name="constraint-examples"></a>

Nachfolgend finden Sie Beispiele für Aufgabenplatzierungsbedingungen.

In diesem Beispiel wird die Beschränkung `memberOf` verwendet, um Aufgaben in T2-Instances zu platzieren. Er kann mit den folgenden Aktionen angegeben werden: [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [UpdateService[RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html), und [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

```
"placementConstraints": [
    {
        "expression": "attribute:ecs.instance-type =~ t2.*",
        "type": "memberOf"
    }
]
```

Das Beispiel verwendet die Einschränkung `memberOf`, um Replikataufgaben auf Instances mit Aufgaben in der `daemon-service`-Aufgabengruppe des Daemon-Service zu platzieren, wobei alle ebenfalls angegebenen Strategien zur Aufgabenplatzierung berücksichtigt werden. Diese Einschränkung stellt sicher, dass die Daemon-Serviceaufgaben vor den Replikatserviceaufgaben auf der EC2-Instance platziert werden.

Ersetzen Sie `daemon-service` durch den Namen des Daemon-Services.

```
"placementConstraints": [
    {
        "expression": "task:group == service:daemon-service",
        "type": "memberOf"
    }
]
```

In dem Beispiel wird die `memberOf`-Bedingung verwendet, um Aufgaben in Instances mit anderen Aufgaben in der `databases`-Aufgabengruppe unter Beachtung aller ebenfalls angegebenen Strategien zur Aufgaben-Platzierung zu platzieren. Weitere Informationen über Aufgabengruppen finden Sie unter [Gruppenbezogene Amazon-ECS-Aufgaben](task-groups.md). Es kann mit den folgenden Aktionen angegeben werden: [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html), und [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

```
"placementConstraints": [
    {
        "expression": "task:group == databases",
        "type": "memberOf"
    }
]
```

Mit der Bedingung `distinctInstance` wird jede Aufgabe in der Gruppe auf einer anderen Instance platziert. Es kann mit den folgenden Aktionen angegeben werden: [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html), und [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)

Amazon ECS prüft den gewünschten Status der Aufgaben für die Aufgabenplatzierung. Wenn beispielsweise der gewünschte Status der vorhandenen Aufgabe `STOPPED` lautet (der letzte Status jedoch nicht), kann eine neue eingehende Aufgabe trotz der Platzierungsbeschränkung `distinctInstance` derselben Instance zugewiesen werden. Daher werden Ihnen möglicherweise zwei Aufgaben mit dem letzten Status `RUNNING` auf derselben Instance angezeigt.

```
"placementConstraints": [
    {
        "type": "distinctInstance"
    }
]
```