

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-Services mithilfe eines Drittanbieter-Controllers bereitstellen
<a name="deployment-type-external"></a>

Der *external* (externe) Bereitstellungstyp erlaubt Ihnen, einen beliebigen Bereitstellungscontroller eines Drittanbieters zu verwenden, um die volle Kontrolle über den Bereitstellungsprozess für einen Amazon-ECS-Service zu haben. Die Details für Ihren Service werden entweder mit den API-Aktionen der Serviceverwaltung (`CreateService`, `UpdateService` und `DeleteService`) oder den API-Aktionen der Aufgabensatzverwaltung (`CreateTaskSet`, `UpdateTaskSet`, `UpdateServicePrimaryTaskSet` und `DeleteTaskSet`) verwaltet. Jede API-Aktion verwaltet eine Teilmenge der Servicedefinitions-Parameter.

Die `UpdateService`-API-Aktion aktualisiert die Parameter für die gewünschte Anzahl und die Übergangsfrist der Zustandsprüfung für einen Service. Wenn Rechenoption, Plattformversion, Load Balancer-Details, Netzwerkkonfiguration oder Aufgabendefinition aktualisiert werden müssen, müssen Sie einen neuen Aufgabesatz erstellen.

Die `UpdateTaskSet`-API-Aktion aktualisiert nur den Scale-Parameter für einen Aufgabensatz.

Die `UpdateServicePrimaryTaskSet`-API-Aktion ändert, welcher Aufgabensatz in einem Service als primärer Aufgabensatz fungiert. Wenn Sie die API-Aktion `DescribeServices` aufrufen, gibt sie alle für den primären Aufgabensatz angegebenen Felder zurück. Wenn der primäre Aufgabensatz eines Service aktualisiert wird, werden alle Parameterwerte des neuen primären Aufgabensatzes, die von denen des alten primären Aufgabensatzes in einem Service abweichen, beim Definieren des neuen primären Aufgabensatzes auf den neuen Wert aktualisiert. Wenn für einen Service kein primärer Aufgabensatz definiert ist, sind die Werte der Aufgabensatzfelder beim Beschreiben des Service null.

## Überlegungen zur externen Bereitstellung
<a name="deployment-type-external-considerations"></a>

Beachten Sie Folgendes, wenn Sie den externen Bereitstellungstyp verwenden:
+ Die unterstützten Load Balancer-Typen sind entweder ein Application Load Balancer oder ein Network Load Balancer.
+ Die Fargate- oder `EXTERNAL`-Controller-Typen unterstützen die `DAEMON`-Planungsstrategie nicht.
+  AutoScaling Die Anwendungsintegration mit Amazon ECS unterstützt nur den Amazon ECS-Service als Ziel. Die unterstützte skalierbare Dimension für Amazon ECS ist `ecs:service:DesiredCount` – die Anzahl der Aufgaben eines Amazon-ECS-Service. Es gibt keine direkte Integration zwischen Anwendungs AutoScaling - und Amazon ECS-Aufgabensätzen. Amazon-ECS-Aufgabensätze berechnen die `ComputedDesiredCount` auf der Grundlage des Amazon-ECS-Service `DesiredCount`.

## Workflow für externe Bereitstellung
<a name="deployment-type-external-workflow"></a>

Im Folgenden wird der grundlegende Workflow zur Verwaltung einer externen Bereitstellung in Amazon ECS dargestellt.

**So verwalten Sie einen Amazon-ECS-Service mithilfe eines externen Bereitstellungs-Controllers**

1. Erstellen Sie einen Amazon-ECS-Service. Der einzige erforderliche Parameter ist der Servicename. Wenn Sie einen Service mit einem externen Bereitstellungs-Controller erstellen, können Sie die folgenden Parameter angeben. Alle anderen Service-Parameter werden bei der Erstellung eines Aufgabesatzes innerhalb des Service festlegt.  
`serviceName`  
Typ: Zeichenfolge  
Erforderlich: Ja  
Der Name Ihres Service. Bis zu 255 Buchstaben (Groß- und Kleinbuchstaben), Zahlen, Bindestriche und Unterstriche sind zulässig. Servicenamen in einem Cluster müssen eindeutig sein. Sie können jedoch ähnlich benannte Services in mehreren Clustern innerhalb einer Region oder in mehreren Regionen haben.  
`desiredCount`  
Die Anzahl der Instanziierungen der angegebenen Aufgabensatzdefinition, die innerhalb des Service platziert und ausgeführt werden sollen.  
`deploymentConfiguration`  
Optionale Bereitstellungsparameter zur Steuerung, wie viele Aufgaben während einer Bereitstellung ausgeführt werden, und zur Steuerung der Reihenfolge beim Starten oder Stoppen von Aufgaben.   
`tags`  
Typ: Array von -Objekten  
Erforderlich: Nein  
Die Metadaten, die Sie auf den Service anwenden, um die Kategorisierung und Organisation zu erleichtern. Jeder Tag (Markierung) besteht aus einem Schlüssel und einem optionalen Wert, beides können Sie bestimmen. Wenn ein Service gelöscht wird, werden auch die Tags gelöscht. Es können maximal 50 Tags auf den Service angewendet werden. Weitere Informationen finden Sie unter [Markieren von Amazon-ECS-Ressourcen](ecs-using-tags.md).  
Wenn Sie einen Service aktualisieren, löst dieser Parameter keine neue Servicebereitstellung aus.    
`key`  
Typ: Zeichenfolge  
Längenbeschränkungen: Minimale Länge beträgt 1 Zeichen. Maximale Länge beträgt 128 Zeichen.  
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  
Längenbeschränkungen: Minimale Länge von 0. Maximale Länge beträgt 256 Zeichen.  
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).  
`enableECSManagedTags`  
Gibt an, ob von Amazon ECS Managed Tags für Aufgaben im Service verwendet werden sollen. Weitere Informationen finden Sie unter [Verwenden von Tags für die Fakturierung](ecs-using-tags.md#tag-resources-for-billing).  
`propagateTags`  
Typ: Zeichenfolge  
Zulässige Werte: `TASK_DEFINITION` \$1 `SERVICE`  
Erforderlich: Nein  
Gibt an, ob die Tags von der Aufgabendefinition oder dem Service in die Aufgaben in dem Service kopiert werden sollen. Wenn kein Wert angegeben wird, werden die Tags nicht kopiert. Tags können nur während der Serviceerstellung in die Aufgaben in dem Service kopiert werden. Wenn Sie Tags nach der Service- oder Aufgabenerstellung einer Aufgabe hinzufügen möchten, verwenden Sie die API-Aktion `TagResource`.  
Wenn Sie einen Service aktualisieren, löst dieser Parameter keine neue Servicebereitstellung aus.  
`schedulingStrategy`  
Die Einplanungsstrategie, die verwendet werden soll. Services mit einem externen Deployment-Controller unterstützen nur die Planungsstrategie `REPLICA`.  
`placementConstraints`  
Ein Array von Platzierungseinschränkungsobjekten, die für Aufgaben in Ihrem Service 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). Wenn Sie Fargate verwenden, werden keine Platzierungsbeschränkungen für Aufgaben unterstützt.  
`placementStrategy`  
Die Platzierungsstrategieobjekte, die für Aufgaben in Ihrem Service verwendet werden sollen. Sie können maximal vier Strategieregeln pro Service festlegen.

   Im Folgenden finden Sie ein Beispiel für eine Servicedefinition, mit der ein Service über einen externen Bereitstellungs-Controller erstellt wird.

   ```
   {
       "cluster": "",
       "serviceName": "",
       "desiredCount": 0,
       "role": "",
       "deploymentConfiguration": {
           "maximumPercent": 0,
           "minimumHealthyPercent": 0
       },
       "placementConstraints": [
           {
               "type": "distinctInstance",
               "expression": ""
           }
       ],
       "placementStrategy": [
           {
               "type": "binpack",
               "field": ""
           }
       ],
       "schedulingStrategy": "REPLICA",
       "deploymentController": {
           "type": "EXTERNAL"
       },
       "tags": [
           {
               "key": "",
               "value": ""
           }
       ],
       "enableECSManagedTags": true,
       "propagateTags": "TASK_DEFINITION"
   }
   ```

1. Erstellen Sie einen anfänglichen Aufgabensatz. Der Aufgabesatz enthält die folgenden Details zu Ihrem Service:  
`taskDefinition`  
Die zu verwendende Aufgabendefinition für die Aufgaben im Aufgabensatz.  
`launchType`  
Typ: Zeichenfolge  
Zulässige Werte: `EC2` \$1 `FARGATE` \$1 `EXTERNAL`  
Erforderlich: Nein  
Der Starttyp, der für die Ausführung Ihres Service verwendet wird. Ist kein Starttyp angegeben, wird standardmäßig `capacityProviderStrategy` verwendet.  
Wenn Sie einen Service aktualisieren, löst dieser Parameter eine neue Servicebereitstellung aus.  
Wenn eine `launchType` angegeben ist, muss der `capacityProviderStrategy`-Parameter weggelassen werden.  
`platformVersion`  
Typ: Zeichenfolge  
Erforderlich: Nein  
Die Plattformversion, auf der Ihre Aufgaben im Service ausgeführt werden. Eine Plattformversion ist nur für Aufgaben mit dem Starttyp Fargate vorgesehen. Ist kein solcher angegeben, wird standardmäßig die neueste Version (`LATEST`) verwendet.  
Wenn Sie einen Service aktualisieren, löst dieser Parameter eine neue Servicebereitstellung aus.  
AWS Fargate-Plattformversionen werden verwendet, um auf eine bestimmte Laufzeitumgebung für die Fargate-Task-Infrastruktur zu verweisen. Bei der Angabe der `LATEST`-Plattformversion bei Ausführung einer Aufgabe oder beim Erstellen eines Service erhalten Sie die aktuellste Plattformversion, die für Ihre Aufgaben zur Verfügung steht. Wenn Sie Ihren Service skalieren, erhalten diese Aufgaben die Plattformversion, die in der aktuellen Bereitstellung des Service angegeben wurde. Weitere Informationen finden Sie unter [Fargate-Plattformversionen für Amazon ECS](platform-fargate.md).  
Plattformversionen werden nicht für Aufgaben angegeben, die den Starttyp EC2 verwenden.  
`loadBalancers`  
Ein Load Balancer-Objekt, das den Load Balancer angibt, der mit Ihrem Service verwendet werden soll. Wenn Sie einen externen Bereitstellungscontroller verwenden, werden nur Application Load Balancer und Network Load Balancer unterstützt. Wenn Sie einen Application Load Balancer verwenden, ist pro Aufgabensatz nur eine Application Load Balancer-Zielgruppe zulässig.  
Der folgende Ausschnitt zeigt ein `loadBalancer`-Beispielobjekt.  

   ```
   "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
   ]
   ```
Wenn Sie ein `loadBalancer`-Objekt angeben, müssen Sie einen `targetGroupArn` angeben und die Parameter `loadBalancerName` auslassen.  
`networkConfiguration`  
Die Netzwerkkonfiguration für den Service. Dieser Parameter ist erforderlich, damit Aufgabendefinitionen, die den Netzwerkmodus `awsvpc` verwenden, ihre eigene Elastic-Network-Schnittstelle erhalten. Für andere Netzwerkmodi wird er nicht unterstützt. Weitere Informationen über Netzwerke für Fargate finden Sie unter [Netzwerkoptionen für Amazon-ECS-Aufgaben für Fargate](fargate-task-networking.md).  
`serviceRegistries`  
Die Details der Serviceerkennung-Registrierungen, die diesem Service zugewiesen werden sollen. Weitere Informationen finden Sie unter [Die Serviceerkennung verwenden, um Amazon-ECS-Services mithilfe von DNS-Namen zu verbinden](service-discovery.md).  
`scale`  
Ein Gleitkomma-Prozentsatz der gewünschten Anzahl von Aufgaben, die im Aufgabensatz platziert und ausgeführt werden sollen. Der Wert wird als Gesamtprozentsatz des `desiredCount`-Wertes eines Services angegeben. Akzeptierte Werte sind Zahlen zwischen 0 und 100.

   Im Folgenden finden Sie ein JSON-Beispiel für die Erstellung eines Aufgabensatzes für einen externen Bereitstellungs-Controller.

   ```
   {
       "service": "",
       "cluster": "",
       "externalId": "",
       "taskDefinition": "",
       "networkConfiguration": {
           "awsvpcConfiguration": {
               "subnets": [
                   ""
               ],
               "securityGroups": [
                   ""
               ],
               "assignPublicIp": "DISABLED"
           }
       },
       "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
       ],
       "serviceRegistries": [
           {
               "registryArn": "",
               "port": 0,
               "containerName": "",
               "containerPort": 0
           }
       ],
       "launchType": "EC2",
       "capacityProviderStrategy": [
           {
               "capacityProvider": "",
               "weight": 0,
               "base": 0
           }
       ],
       "platformVersion": "",
       "scale": {
           "value": null,
           "unit": "PERCENT"
       },
       "clientToken": ""
   }
   ```

1. Wenn Service-Änderungen erforderlich sind, verwenden Sie abhängig von den zu aktualisierenden Parametern die API-Aktion `UpdateService`, `UpdateTaskSet` oder `CreateTaskSet`. Wenn Sie eine Aufgabe erstellt haben, bestimmen Sie mithilfe des Parameters `scale` für jede Aufgabe in einem Service, wie viele Aufgaben im Service weiterhin ausgeführt werden sollen. Wenn ein Service beispielsweise `tasksetA` enthält und Sie `tasksetB` erstellen, können Sie zuerst die Gültigkeit von `tasksetB` testen, bevor Sie den Produktionsdatenverkehr darauf umstellen. Sie können als `scale`-Wert für beide Aufgabensätze `100` einstellen. Wenn Sie dann bereit sind, den gesamten Produktionsdatenverkehr auf `tasksetB` umzustellen, können Sie den `scale`-Wert für `tasksetA` auf `0` aktualisieren, um ihn nach unten zu skalieren.