Amazon Elastic Container Service no AWS Outposts - Amazon Elastic Container Service

Amazon Elastic Container Service no AWS Outposts

O AWS Outposts permite serviços nativos, infraestrutura e modelos operacionais da AWS em instalações on-premises. Em ambientes do AWS Outposts, é possível usar APIs, ferramentas e infraestrutura da AWS semelhantes às utilizadas na Nuvem AWS.

O Amazon ECS no AWS Outposts é ideal para workloads de baixa latência que precisam ser executadas perto dos dados e aplicações on-premises.

Para mais informações sobre o AWS Outposts, consulte o Guia do usuário do AWS Outposts.

Considerações

A seguir, apresentamos considerações sobre o uso do Amazon ECS no AWS Outposts:

  • O Amazon Elastic Container Registry, o AWS Identity and Access Management e o Network Load Balancer são executados na região da AWS e não no AWS Outposts. Isto irá aumentar as latências entre esses serviços e os contêineres.

  • O AWS Fargate não está disponível no AWS Outposts.

Veja a seguir as considerações sobre a conectividade de rede do AWS Outposts:

  • Se a conectividade de rede entre o AWS Outposts e a região da AWS for perdida, os clusters continuarão em execução. No entanto, você não pode criar novos clusters ou executar novas ações em clusters existentes enquanto que a conectividade não for restaurada. Em caso de falhas na instância, a instância não será substituída automaticamente. O agente do CloudWatch Logs não poderá atualizar logs e dados de eventos.

  • Recomendamos que você forneça conectividade confiável, altamente disponível e de baixa latência entre o AWS Outposts e a região da AWS.

Pré-requisitos

A seguir, apresentamos pré-requisitos para usar o Amazon ECS no AWS Outposts:

  • Um Outpost deve estar instalado e configurado no data center on-premises.

  • É necessário ter uma conexão de rede confiável entre o Outpost e a região da AWS.

Criação de um cluster no AWS Outposts

Para criar um cluster do Amazon ECS em um AWS Outposts com a AWS CLI, especifique um grupo de segurança e uma sub-rede para associar ao seu AWS Outposts.

Para criar uma sub-rede associada ao AWS Outposts.

aws ec2 create-subnet \ --cidr-block 10.0.3.0/24 \ --vpc-id vpc-xxxxxxxx \ --outpost-arn arn:aws:outposts:us-west-2:123456789012:outpost/op-xxxxxxxxxxxxxxxx \ --availability-zone-id usw2-az1

O exemplo a seguir cria um cluster do Amazon ECS em um AWS Outposts.

  1. Crie uma função e uma política com direitos no AWS Outposts.

    O arquivo role-policy.json é o documento de política que contém o efeito e as ações dos recursos. Para obter informações sobre o formato do arquivo, consulte PutRolePolicy na Referência de API do IAM

    aws iam create-role –-role-name ecsRole \ --assume-role-policy-document file://ecs-policy.json aws iam put-role-policy --role-name ecsRole --policy-name ecsRolePolicy \ --policy-document file://role-policy.json
  2. Crie um perfil da instância do IAM com direitos no AWS Outposts.

    aws iam create-instance-profile --instance-profile-name outpost aws iam add-role-to-instance-profile --instance-profile-name outpost \ --role-name ecsRole
  3. Crie uma VPC.

    aws ec2 create-vpc --cidr-block 10.0.0.0/16
  4. Crie um grupo de segurança para as instâncias de contêiner, especificando o intervalo CIDR adequado para o AWS Outposts. (Essa etapa é diferente para o AWS Outposts.)

    aws ec2 create-security-group --group-name MyOutpostSG aws ec2 authorize-security-group-ingress --group-name MyOutpostSG --protocol tcp \ --port 22 --cidr 10.0.3.0/24 aws ec2 authorize-security-group-ingress --group-name MyOutpostSG --protocol tcp \ --port 80 --cidr 10.0.3.0/24
  5. Crie o cluster.

  6. Defina as variáveis de ambiente do agente de contêiner do Amazon ECS para iniciar a instância no cluster criado na etapa anterior e defina as tags que você deseja adicionar para ajudar a identificar o cluster (por exemplo, Outpost para indicar que o cluster é para um Outpost).

    #! /bin/bash cat << ‘EOF’ >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_IMAGE_PULL_BEHAVIOR=prefer-cached ECS_CONTAINER_INSTANCE_TAGS={“environment”: ”Outpost”} EOF
    nota

    Para evitar atrasos causados pela extração de imagens de contêiner do Amazon ECR na região, use caches de imagem. Para fazer isso, cada vez que uma tarefa for executada, configure o agente do Amazon ECS como padrão para usar a imagem em cache na própria instância, definindo ECS_IMAGE_PULL_BEHAVIOR como prefer-cached.

  7. Crie a instância de contêiner especificando a VPC e a sub-rede para o AWS Outposts no qual esta instância deve ser executada e um tipo de instância disponível no AWS Outposts. (Essa etapa é diferente para o AWS Outposts.)

    O arquivo userdata.txt contém os dados do usuário que a instância pode usar para realizar tarefas de configuração automatizadas em comum e até mesmo executar scripts após o início da instância. Para obter mais informações sobre o arquivo para chamadas de API, consulte Executar comandos na instância do Linux no lançamento no Manual do usuário do Amazon EC2.

    aws ec2 run-instances --count 1 --image-id ami-xxxxxxxx --instance-type c5.large \ --key-name aws-outpost-key –-subnet-id subnet-xxxxxxxxxxxxxxxxx \ --iam-instance-profile Name outpost --security-group-id sg-xxxxxx \ --associate-public-ip-address --user-data file://userdata.txt
    nota

    Esse comando também é usado ao incluir instâncias adicionais no cluster. Todos os contêineres implantados no cluster serão colocados nesse AWS Outposts específico.

  8. Registre sua definição de tarefa. Use o seguinte comando e substitua ecs-task.json pelo nome da sua definição de tarefa.

    aws ecs register-task-definition --cli-input-json file://ecs-task.json
  9. Execute a tarefa ou crie o serviço.

    Run the task
    aws ecs run-task --cluster mycluster --count 1 --task-definition outpost-app:1
    Create the service
    aws ecs create-service –-cluster mycluster --service-name outpost-service \ --task-definition outpost-app:1 --desired-count 1