Endpunkt von Amazon ECS Task Scale-in Protection - Amazon Elastic Container Service

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.

Endpunkt von Amazon ECS Task Scale-in Protection

Der Amazon-ECS-Container-Agent fügt die ECS_AGENT_URI-Umgebungsvariable automatisch in die Amazon-ECS-Aufgabencontainer ein, um eine Methode für die Interaktion mit dem Container-Agent-API-Endpunkt bereitzustellen.

Wir empfehlen die Verwendung des Amazon-ECS-Container-Agent-Endpunkts für Aufgaben, die den Schutzbedarf selbst bestimmen können.

Wenn ein Container mit der Verarbeitung von Aufgaben beginnt, können Sie das protectionEnabled-Attribut über den Endpunkt-Pfad $ECS_AGENT_URI/task-protection/v1/state zum Abskalierungsschutz für Aufgaben innerhalb des Containers festlegen.

Eine PUT-Anfrage an diesen URI innerhalb eines Containers legt den Abskalierungsschutz für Aufgaben fest. Eine GET-Anfrage an diese URI ruft den aktuellen Schutzstatus einer Aufgabe ab.

Parameter der Endpunkt-Anfrage zum Abskalierungsschutz für Aufgaben

Sie können den Abskalierungsschutz für Aufgaben mithilfe des ${ECS_AGENT_URI}/task-protection/v1/state-Endpunkts mit den folgenden Anfragenparametern einrichten.

ProtectionEnabled

Geben Sie true an, um eine Aufgabe als geschützt zu markieren. Geben Sie false an, um den Schutz aufzuheben und die Aufgabe für die Beendigung zu berechtigen.

Typ: Boolesch

Erforderlich: Ja

ExpiresInMinutes

Die Anzahl der Minuten, für die Aufgabe geschützt ist. Sie können mindestens 1 Minute bis zu 2 880 Minuten (48 Stunden) angeben. Während dieses Zeitraums wird Ihre Aufgabe nicht durch Abskalierungsereignisse des Services Auto Scaling oder durch Bereitstellungen beendet. Nach Ablauf dieses Zeitraums wird der protectionEnabled-Parameter auf false gesetzt.

Wenn Sie keinen Zeitraum angeben, wird die Aufgabe automatisch für 120 Minuten (2 Stunden) geschützt.

Typ: Ganzzahl

Erforderlich: Nein

Die folgenden Beispiele zeigen, wie Sie den Aufgabenschutz mit unterschiedlichen Laufzeiten festlegen können.

Beispiel für den Schutz einer Aufgabe mit der Standardzeitspanne

Dieses Beispiel zeigt, wie eine Aufgabe mit dem Standardzeitraum von 2 Stunden geschützt wird.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true}'

Beispiel dafür, wie eine Aufgabe 60 Minuten lang geschützt wird

Dieses Beispiel zeigt, wie eine Aufgabe mit dem expiresInMinutes-Parameter 60 Minuten lang geschützt wird.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":60}'

Beispiel dafür, wie eine Aufgabe 24 Stunden lang geschützt wird

Dieses Beispiel zeigt, wie eine Aufgabe mit dem expiresInMinutes-Parameter 24 Stunden lang geschützt wird.

curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":1440}'

Beispiele für Windows-Container

Für Windows-Container können Sie PowerShell das Invoke-RestMethod Cmdlet's anstelle von curl verwenden. Die folgenden Beispiele zeigen die PowerShell Entsprechungen der vorherigen curl-Befehle.

Beispiel für den Schutz einer Windows-Container-Aufgabe mit der Standardzeitspanne

Dieses Beispiel zeigt, wie Sie eine Aufgabe mit dem Standardzeitraum von 2 Stunden schützen können, indem Sie. PowerShell

Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true}' -ContentType 'application/json'

Beispiel dafür, wie eine Windows-Container-Aufgabe 60 Minuten lang geschützt wird

Dieses Beispiel zeigt, wie eine Aufgabe mithilfe des expiresInMinutes Parameters with 60 Minuten lang geschützt wird PowerShell.

Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true,"ExpiresInMinutes":60}' -ContentType 'application/json'

Beispiel dafür, wie eine Windows-Container-Aufgabe 24 Stunden lang geschützt wird

Dieses Beispiel zeigt, wie eine Aufgabe mithilfe des expiresInMinutes Parameters with für 24 Stunden geschützt wird PowerShell.

Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true,"ExpiresInMinutes":1440}' -ContentType 'application/json'

Die PUT-Anfrage gibt die folgende Antwort zurück.

{ "protection": { "ExpirationDate": "2023-12-20T21:57:44.837Z", "ProtectionEnabled": true, "TaskArn": "arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0" } }

Parameter der Antwort des Abskalierungsschutz für Aufgaben

Die folgenden Informationen werden in der JSON-Antwort des Endpunkts zum Abskalierungsschutz für Aufgaben ${ECS_AGENT_URI}/task-protection/v1/state zurückgegeben.

ExpirationDate

Die Epochenzeit, zu der der Schutz für die Aufgabe abläuft. Wenn die Aufgabe nicht geschützt ist, ist dieser Wert Null.

ProtectionEnabled

Der Schutzstatus der Aufgabe. Wenn der Abskalierungsschutz für eine Aufgabe aktiviert ist, ist der Wert true. Andernfalls ist es false.

TaskArn

Der vollständige Amazon Resource Name (ARN) der Aufgabe, zu der der Container gehört.

Das folgende Beispiel zeigt die für eine geschützte Aufgabe zurückgegebenen Details.

curl --request GET ${ECS_AGENT_URI}/task-protection/v1/state

Verwenden Sie für Windows-Container den folgenden PowerShell Befehl, um den Schutzstatus abzurufen:

Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Get
{ "protection":{ "ExpirationDate":"2023-12-20T21:57:44Z", "ProtectionEnabled":true, "TaskArn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0" } }

Die folgenden Informationen werden zurückgegeben, wenn ein Fehler auftritt.

Arn

Der vollständige Amazon-Ressourcenname (ARN) der Aufgabe.

Detail

Die auf den Fehler bezogenen Details.

Reason

Der Grund für den Fehlschlag.

Das folgende Beispiel zeigt die für eine nicht geschützte Aufgabe zurückgegebenen Details.

{ "failure":{ "Arn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0", "Detail":null, "Reason":"TASK_NOT_VALID" } }

Die folgenden Informationen werden zurückgegeben, wenn eine Ausnahme auftritt.

requestID

Die AWS Anforderungs-ID für den Amazon ECS-API-Aufruf, der zu einer Ausnahme führt.

Arn

Der vollständige Amazon-Ressourcenname (ARN) der Aufgabe oder des Services.

Code

Der Fehlercode.

Message

Die Fehlermeldung.

Anmerkung

Wenn ein RequestError- oder RequestTimeout-Fehler auftritt, ist es wahrscheinlich, dass es sich um ein Netzwerkproblem handelt. Versuchen Sie, VPC-Endpunkte für Amazon ECS zu verwenden.

Das folgende Beispiel zeigt die Details, die zurückgegeben werden, wenn ein Fehler auftritt.

{ "requestID":"12345-abc-6789-0123-abc", "error":{ "Arn":"arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code":"AccessDeniedException", "Message":"User: arn:aws:sts::444455556666:assumed-role/my-ecs-task-role/1234567890abcdef0 is not authorized to perform: ecs:GetTaskProtection on resource: arn:aws:ecs:us-west-2:555555555555:task/test/1234567890abcdef0 because no identity-based policy allows the ecs:GetTaskProtection action" } }

Der folgende Fehler wird angezeigt, wenn der Amazon-ECS-Agent aus Gründen wie Netzwerkproblemen oder einem Ausfall der Amazon-ECS-Steuerebene keine Antwort vom Amazon-ECS-Endpunkt erhalten kann.

{ "error": { "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code": "RequestCanceled", "Message": "Timed out calling Amazon ECS Task Protection API" } }

Der folgende Fehler wird angezeigt, wenn der Amazon-ECS-Agent eine Drosselungsausnahme von Amazon ECS erhält.

{ "requestID": "12345-abc-6789-0123-abc", "error": { "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0", "Code": "ThrottlingException", "Message": "Rate exceeded" } }