Endpoint di protezione scalabile di Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Endpoint di protezione scalabile di Amazon ECS

L'agente del container Amazon ECS inserisce automaticamente la variabile di ambiente ECS_AGENT_URI nei container delle attività di Amazon ECS per fornire un metodo per interagire con l'endpoint API dell'agente del container.

Consigliamo di utilizzare l'endpoint dell'agente container Amazon ECS per attività che possono determinare autonomamente la necessità di essere protette.

Quando un container inizia il lavoro di elaborazione, è possibile impostare l'attributo protectionEnabled tramite il percorso dell'endpoint di protezione scalabile dell'attività $ECS_AGENT_URI/task-protection/v1/state dall'interno del container.

Usare una richiesta PUT in questo URI dall'interno di un container per impostare la protezione scalabile. Una richiesta GET a questo URI restituisce lo stato di protezione attuale di un'attività.

Parametri di richiesta di protezione scalabile

È possibile impostare la protezione scalabile delle attività utilizzando l'endpoint ${ECS_AGENT_URI}/task-protection/v1/state con i seguenti parametri di richiesta.

ProtectionEnabled

Specificare true per contrassegnare un'attività per la protezione. Specificare false per rimuovere la protezione e rendere l'attività idonea per l'interruzione.

Tipo: Booleano

Campo obbligatorio: sì

ExpiresInMinutes

Il numero di minuti in cui l'attività è protetta. È possibile specificare da un minimo di 1 minuto a un massimo di 2.880 minuti (48 ore). Durante questo periodo di tempo, l'attività non verrà terminata da eventi di dimensionamento derivanti dal servizio Dimensionamento automatico o dalle implementazioni. Trascorso questo periodo di tempo, il parametro protectionEnabled viene impostato su false.

Se non si specifica l'ora, l'attività viene protetta automaticamente per 120 minuti (2 ore).

Tipo: integer

Campo obbligatorio: no

Gli esempi seguenti mostrano come impostare la protezione delle attività con durate diverse.

Esempio di come proteggere un'attività con il periodo di tempo predefinito

Questo esempio mostra come proteggere un'attività con il periodo di tempo predefinito di 2 ore.

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

Esempio di protezione di un'attività per 60 minuti

Questo esempio mostra come proteggere un'attività per 60 minuti utilizzando il parametro expiresInMinutes.

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

Esempio di protezione di un'attività per 24 ore

Questo esempio mostra come proteggere un'attività per 24 ore utilizzando il parametro expiresInMinutes.

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

Esempi di container Windows

Per i contenitori Windows, è possibile utilizzare PowerShell il Invoke-RestMethod cmdlet anziché curl. Gli esempi seguenti mostrano gli PowerShell equivalenti dei precedenti comandi curl.

Esempio di come proteggere un'attività del container di Windows con il periodo di tempo predefinito

Questo esempio mostra come proteggere un'attività con il periodo di tempo predefinito di 2 ore utilizzando. PowerShell

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

Esempio di come proteggere un'attività del container di Windows per 60 minuti

Questo esempio mostra come proteggere un'attività per 60 minuti utilizzando il expiresInMinutes parametro with PowerShell.

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

Esempio di come proteggere un'attività del container di Windows per 24 ore

Questo esempio mostra come proteggere un'attività per 24 ore utilizzando il expiresInMinutes parametro with PowerShell.

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

La richiesta PUT restituisce la risposta seguente:

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

Parametri di risposta della protezione scalabile

La risposta in formato JSON dell'endpoint di protezione per il dimensionamento delle attività ${ECS_AGENT_URI}/task-protection/v1/state restituisce le seguenti informazioni.

ExpirationDate

L'ora in cui scadrà la protezione per l'attività. Se l'attività non è protetta, questo valore è nullo.

ProtectionEnabled

Lo stato di protezione dell'attività. Se la protezione scalabile è abilitata per un'attività, il valore è true. In caso contrario è false.

TaskArn

L'Amazon Resource Name (ARN) completo dell'attività a cui appartiene il container.

L'esempio che segue mostra i dettagli restituiti per un'attività protetta.

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

Per i contenitori Windows, utilizzate il seguente PowerShell comando per ottenere lo stato di protezione:

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" } }

Le seguenti informazioni vengono restituite quando si verifica un errore.

Arn

Il nome della risorsa Amazon (ARN) completo dell'attività.

Detail

I dettagli relativi all'errore.

Reason

Il motivo dell'errore.

L'esempio che segue mostra i dettagli restituiti per un'attività che non è protetta.

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

Le seguenti informazioni vengono restituite quando si verifica un'eccezione.

requestID

L'ID della AWS richiesta per la chiamata API Amazon ECS che genera un'eccezione.

Arn

Il nome della risorsa Amazon (ARN) completo dell'attività o del servizio.

Code

Il codice di errore.

Message

Messaggio di errore.

Nota

Se viene visualizzato un errore RequestError o RequestTimeout, è probabile che si tratti di un problema di rete. Prova a utilizzare gli endpoint VPC per Amazon ECS.

L'esempio che segue mostra i dettagli restituiti quando si verifica un errore.

{ "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" } }

L'errore seguente viene visualizzato se l'agente Amazon ECS non è in grado di ottenere una risposta dall'endpoint Amazon ECS per motivi quali problemi di rete o il piano di controllo Amazon ECS inattivo.

{ "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" } }

Il seguente errore si verifica quando l'agente Amazon ECS riceve un'eccezione di limitazione da Amazon ECS.

{ "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" } }