Externe Bereitstellung - Amazon ECS

Externe Bereitstellung

Der externe Bereitstellungstyp ermöglicht Ihnen, für die vollständige Kontrolle über den Bereitstellungsprozess für einen Amazon-ECS-Service einen beliebigen Drittanbieter-Bereitstellungs-Controller zu verwenden. 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 verfügt über eine Teilmenge der Servicedefinitions-Parameter, die sie verwalten kann.

Die UpdateService-API-Aktion aktualisiert die Parameter für die gewünschte Anzahl und die Übergangsfrist der Zustandsprüfung für einen Service. Wenn der Starttyp oder die 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

Beachten Sie Folgendes, wenn Sie den externen Bereitstellungstyp verwenden:

  • Service Auto Scaling wird nicht unterstützt, wenn ein externer Bereitstellungscontroller verwendet wird.

  • Wenn Sie einen Load Balancer für die Aufgabe verwenden, sind die unterstützten Load Balancer-Typen entweder ein Application Load Balancer oder ein Network Load Balancer.

  • Aufgaben, die den Starttyp Fargate oder die Controller-Typen EXTERNALverwenden, unterstützen die DAEMON-Scheduling-Strategie nicht.

Workflow für externe Bereitstellung

Im Folgenden wird der grundlegende Workflow zur Verwaltung einer externen Bereitstellung auf Amazon ECS beschrieben.

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), Ziffern, 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. Weitere Informationen finden Sie unter deploymentConfiguration.

    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 Ihrer Amazon ECS-Ressourcen.

    key

    Typ: Zeichenfolge

    Längenbeschränkungen: Minimale Länge von 1. 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 verwaltete Tags für Aufgaben im Service verwendet werden sollen. Weitere Informationen finden Sie unter Markieren von Ressourcen für die Fakturierung.

    propagateTags

    Typ: Zeichenfolge

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

    healthCheckGracePeriodSeconds

    Typ: Ganzzahl

    Erforderlich: Nein

    Die Zeitdauer in Sekunden, die der Amazon ECS-Service-Scheduler fehlerhafte Elastic Load Balancing-Zustandsprüfungen des Ziels, Container-Zustandsprüfungen und Route 53-Zustandsprüfungen ignorieren soll, nachdem eine Aufgabe in den Status RUNNING wechselt. Dies gilt nur, wenn Ihr Service für die Verwendung eines Load Balancers konfiguriert ist. Wenn für Ihren Service ein Load Balancer definiert ist und Sie keinen Wert für die Übergangsfrist der Zustandsprüfung angeben, wird der Standardwert von 0 verwendet.

    Wenn es eine Weile dauert, bis die Aufgaben Ihres Service starten und auf die Zustandsprüfungen reagieren, können Sie für die Zustandsprüfungen eine Übergangsfrist von bis zu 2,147,483,647 Sekunden angeben. Während dieses Zeitraums ignoriert der ECS-Service-Scheduler den Status der Zustandsprüfungen. Durch diese Übergangsfrist wird verhindert, dass der ECS-Service-Scheduler Aufgaben als fehlerhaft markiert und stoppt, bevor sie gestartet werden können.

    Wenn Sie kein Elastic Load Balancing verwenden, empfehlen wir Ihnen, die startPeriod in den Zustandsprüfungs-Parametern der Aufgabendefinition zu verwenden. Weitere Informationen finden Sie unter Zustandsprüfung.

    schedulingStrategy

    Die Einplanungsstrategie, die verwendet werden soll. Services mit einem externen Deployment-Controller unterstützen nur die Planungsstrategie REPLICA. Weitere Informationen finden Sie unter Service-Scheduler-Konzepte.

    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 den Starttyp Fargate verwenden, werden keine Platzierungsbedingungen für die 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": "" } ], "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION" }
  2. 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 | FARGATE | EXTERNAL

    Erforderlich: Nein

    Der Starttyp, der für die Ausführung Ihres Service verwendet wird. Ist kein Starttyp angegeben, wird standardmäßig EC2 verwendet. Weitere Informationen finden Sie unter Amazon ECS-Starttypen.

    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.

    AWS-Fargate-Plattformversionen werden verwendet, um auf eine bestimmte Laufzeitumgebung für die Fargate-Aufgabeninfrastruktur 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 AWS Fargate-Plattformversionen.

    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 } ]
    Anmerkung

    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 finden Sie unter Fargate-Aufgabenvernetzung im Amazon Elastic Container Service-Benutzerhandbuch für AWS Fargate..

    serviceRegistries

    Die Details der Service Discovery-Registrierungen, die diesem Service zugewiesen werden sollen. Weitere Informationen finden Sie unter Service Discovery.

    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": "" }
  3. 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.