Crie definições de trabalhos usando EcsProperties
Com definições de trabalho do AWS Batch usando EcsProperties, você pode modelar componentes de hardware, sensores, ambientes 3D e outras simulações em contêineres separados. É possível usar esse recurso para organizar logicamente componentes de workload e separá-los da aplicação principal. Esse recurso pode ser usado com o AWS Batch no Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) e AWS Fargate.
Definições de trabalho ContainerProperties versus EcsProperties
Você pode optar por usar ContainerProperties ou definições de trabalho EcsProperties de acordo com seu caso de uso. Em alto nível, executar trabalhos do AWS Batch com o EcsProperties é semelhante a executar trabalhos com um ContainerProperties.
A estrutura antiga de definição de tarefas, usando ContainerProperties, permanece compatível. Se você já tem fluxos de trabalho usando essa estrutura, pode continuar a executá-los.
A principal diferença é que há um novo objeto adicionado à definição do trabalho para acomodar as definições com base em EcsProperties.
Por exemplo, uma definição de trabalho que usa o ContainerProperties no Amazon ECS e no Fargate tem esta estrutura:
{ "containerProperties": { ... "image": "my_ecr_image1", ... }, ... }
Uma definição de trabalho que usa o EcsProperties no Amazon ECS e no Fargate tem esta estrutura:
{ "ecsProperties": { "taskProperties": [{ "containers": [ { ... "image": "my_ecr_image1", ... }, { ... "image": "my_ecr_image2", ... },
Alterações gerais nas APIs do AWS Batch
Descrevemos algumas das principais diferenças ao usar ContainerProperties e os tipos de dados da API EcsProperties:
-
Muitos dos parâmetros usados em
ContainerPropertiesaparecem emTaskContainerProperties. Alguns exemplos incluemcommand,image,privileged,secretseusers. Todos eles podem ser encontrados em TaskContainerProperties. -
Alguns dos parâmetros
TaskContainerPropertiesnão têm equivalentes funcionais na estrutura legada. Alguns exemplos incluemdependsOn,essential,name,ipcModeepidMode. Para obter mais informações, consulte EcstTaskDetails e TaskContainerProperties.Além disso, alguns parâmetros
ContainerPropertiesnão têm equivalentes ou aplicação na estruturaEcsProperties. EmtaskProperties,containerfoi substituído porcontainers, para que o novo objeto possa aceitar até dez elementos. Para obter mais informações, consulte RegisterJobDefinition:containerProperties e EcsTaskProperties:containers. -
taskRoleArné funcionalmente equivalente ajobRoleArn. Para obter mais informações, consulte EcsTaskProperties:taskRoleArn e ContainerProperties:jobRoleArn. -
Você pode incluir de um (1) a dez (10) contêineres na estrutura
EcsProperties. Para obter mais informações, consulte EcsTaskProperties:containers. -
Os objetos
taskPropertiese instanceTypes são matrizes, mas aceitam apenas um elemento. Por exemplo, EcsProperties:taskProperties e NodeRangeProperty:instanceTypes.
Definições de trabalho de vários contêineres para o Amazon ECS
Para acomodar a estrutura de vários contêineres do Amazon ECS, alguns dos tipos de dados da API são diferentes. Por exemplo,
-
ecsPropertiesé o mesmo nível decontainerPropertiesna definição de contêiner único. Para obter mais informações, consulte EcsProperties, no Guia de referência da API do AWS Batch. -
taskPropertiescontém as propriedades definidas para a tarefa do Amazon ECS. Para obter mais informações, consulte EcsProperties, no Guia de referência da API do AWS Batch. -
containersinclui informações semelhantes acontainerPropertiesna definição de contêiner único. A principal diferença é quecontainerspermite definir até dez contêineres. Para obter mais informações, consulte ECSTaskProperties:containers no Guia de referência de APIs do AWS Batch. -
O parâmetro
essentialindica como o contêiner afeta o trabalho. Todos os contêineres essenciais devem ser concluídos com sucesso (encerrar como 0) para que o trabalho possa progredir. Se um contêiner marcado como essencial falhar (encerrar como diferente de 0), o trabalho falhará.O valor padrão é
true, e pelo menos um contêiner deve ser marcado comoessential. Para obter mais informações, consulteessentialno AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;). -
Com o parâmetro
dependsOn, você pode definir uma lista de dependências de contêineres. Para obter mais informações, consultedependsOnno AWS Batch API Reference Guide (Guia de referência da API do &CDSlong;).nota
A complexidade da lista
dependsOne do runtime do contêiner associado podem afetar o horário de início do seu trabalho. Se dependências demorarem muito para serem executadas, o trabalho permanecerá em estadoSTARTINGaté que seja concluído.
Para obter mais informações sobre ecsProperties e a estrutura, consulte a sintaxe de solicitação RegisterJobDefinition para ecsProperties.
Definições de trabalho de vários contêineres para o Amazon EKS
Para acomodar a estrutura de vários contêineres do Amazon EKS, alguns dos tipos de dados da API são diferentes. Por exemplo,
-
nameé um identificador exclusivo para o contêiner. Esse objeto não é necessário para um único contêiner, mas é necessário ao definir vários contêineres em um pod. Quandonamenão está definido para contêineres únicos, o nome padrão,default, é aplicado. -
initContainerssão definidos no tipo de dados eksPodProperties. Eles são executados antes dos contêineres da aplicação, sempre são executados até a conclusão e devem ser concluídos com êxito antes do início do próximo contêiner.Esses contêineres são registrados no agente Amazon EKS Connector e mantêm as informações de registro no armazenamento de dados de backend do Amazon Elastic Kubernetes Service. O objeto
initContainerspode aceitar até dez (10) elementos. Para obter mais informações, consulte Contêineres de inicialização, na documentação do Kubernetes. nota
O objeto
initContainerspode afetar a hora de início do seu trabalho. SeinitContainersdemorarem muito para serem executados, o trabalho permanecerá em estadoSTARTINGaté a conclusão. -
shareProcessNamespaceindica se os contêineres no pod podem compartilhar o mesmo namespace de processo. O valor padrão éfalse. Defina isso comotruepara permitir que os contêineres vejam e sinalizem processos em outros contêineres localizados no mesmo pod. -
Cada contêiner tem importância. Todos os contêineres devem ser concluídos com êxito (sair como 0) para que o trabalho seja bem-sucedido. Se um contêiner falhar (sair como diferente de 0), o trabalho falhará.
Para obter mais informações sobre o eksProperties e a estrutura, consulte a sintaxe de solicitação RegisterJobDefinition para eksProperties.