Amazon-ECS-Services mithilfe eines Drittanbieter-Controllers bereitstellen
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
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 dieDAEMON-Planungsstrategie nicht. -
Die Integration von Application Auto Scaling mit Amazon ECS unterstützt nur Amazon-ECS-Services 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 Application Auto Scaling und Amazon-ECS-Aufgabensätzen. Amazon-ECS-Aufgabensätze berechnen dieComputedDesiredCountauf der Grundlage des Amazon-ECS-ServiceDesiredCount.
Workflow für externe Bereitstellung
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
-
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.
-
Typ: Array von -Objekten
Erforderlich: Nein
Die Metadaten, die Sie auf den Service anwenden, um die Kategorisierung und Organisation zu erleichtern. Jeder Tag 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.
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 verwaltete Tags für Aufgaben im Service verwendet werden sollen. Weitere Informationen finden Sie unter Verwenden von Tags für die Fakturierung.
propagateTags-
Typ: Zeichenfolge
Zulässige Werte:
TASK_DEFINITION|SERVICEErforderlich: 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" } -
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|EXTERNALErforderlich: Nein
Der Starttyp, der für die Ausführung Ihres Service verwendet wird. Ist kein Starttyp angegeben, wird standardmäßig
capacityProviderStrategyverwendet.Wenn Sie einen Service aktualisieren, löst dieser Parameter eine neue Servicebereitstellung aus.
Wenn eine
launchTypeangegeben ist, muss dercapacityProviderStrategy-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-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 Fargate-Plattformversionen für Amazon ECS.Anmerkung
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 } ]Anmerkung
Wenn Sie ein
loadBalancer-Objekt angeben, müssen Sie einentargetGroupArnangeben und die ParameterloadBalancerNameauslassen. networkConfiguration-
Die Netzwerkkonfiguration für den Service. Dieser Parameter ist erforderlich, damit Aufgabendefinitionen, die den Netzwerkmodus
awsvpcverwenden, 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. serviceRegistries-
Die Details der Service Discovery-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.
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": "" } -
Wenn Service-Änderungen erforderlich sind, verwenden Sie abhängig von den zu aktualisierenden Parametern die API-Aktion
UpdateService,UpdateTaskSetoderCreateTaskSet. Wenn Sie eine Aufgabe erstellt haben, bestimmen Sie mithilfe des Parametersscalefür jede Aufgabe in einem Service, wie viele Aufgaben im Service weiterhin ausgeführt werden sollen. Wenn ein Service beispielsweisetasksetAenthält und SietasksetBerstellen, können Sie zuerst die Gültigkeit vontasksetBtesten, bevor Sie den Produktionsdatenverkehr darauf umstellen. Sie können alsscale-Wert für beide Aufgabensätze100einstellen. Wenn Sie dann bereit sind, den gesamten Produktionsdatenverkehr auftasksetBumzustellen, können Sie denscale-Wert fürtasksetAauf0aktualisieren, um ihn nach unten zu skalieren.