Amazon Elastic Container Service en AWS Outposts - Amazon Elastic Container Service

Amazon Elastic Container Service en AWS Outposts

AWS Outposts habilita los servicios, la infraestructura y los modelos operativos nativos de AWS en instalaciones locales. En los entornos de AWS Outposts, puede utilizar las mismas API, herramientas e infraestructura de AWS que utiliza en la Nube de AWS.

Amazon ECS en AWS Outposts es ideal para cargas de trabajo de baja latencia que deben ejecutarse cerca de los datos y las aplicaciones en las instalaciones.

Para obtener más información sobre AWS Outposts, consulte la Guía del usuario de AWS Outposts.

Consideraciones

Estas son las consideraciones para utilizar Amazon ECS en AWS Outposts:

  • Amazon Elastic Container Registry, AWS Identity and Access Management y el equilibrador de carga de red se ejecutan en la región de AWS, no en AWS Outposts. Esto aumentará las latencias entre estos servicios y los contenedores.

  • AWS Fargate no está disponible en AWS Outposts.

A continuación, se incluyen algunas consideraciones de conectividad de red para AWS Outposts:

  • Si se pierde la conectividad de red entre la instancia de AWS Outposts y la región de AWS, los clústeres seguirán ejecutándose. Sin embargo, no podrá crear nuevos clústeres ni realizar nuevas acciones en clústeres existentes hasta que se restablezca la conectividad. En caso de errores en la instancia, la instancia no se reemplazará automáticamente. El agente de CloudWatch Logs no podrá actualizar los registros ni los datos de eventos.

  • Le recomendamos que proporcione una conexión fiable, de alta disponibilidad y baja latencia entre el AWS Outposts y la región de AWS.

Requisitos previos

Estos son los requisitos previos para utilizar Amazon ECS en AWS Outposts:

  • Debe haber instalado y configurado un Outpost en su centro de datos local.

  • Debe contar con una conexión de red fiable entre el Outpost y la región de AWS.

Creación de un clúster en AWS Outposts

Para crear clústeres de Amazon ECS en un AWS Outposts con la AWS CLI, especifique un grupo de seguridad y una subred que esté asociada al AWS Outposts.

Para crear una subred asociada al 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

En el siguiente ejemplo, se crea un clúster de Amazon ECS en un AWS Outposts.

  1. Cree un rol y una política con derechos en el AWS Outposts.

    El archivo role-policy.json es el documento de política que contiene el efecto y las acciones de los recursos. Para obtener información sobre el formato de los archivos, consulte PutRolePolicy en la Referencia de la API de 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. Cree un perfil de instancias de IAM con derechos en el 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. Cree una VPC.

    aws ec2 create-vpc --cidr-block 10.0.0.0/16
  4. Cree un grupo de seguridad para las instancias de contenedor y especifique el rango de CIDR adecuado para el AWS Outposts. (Este paso es diferente para 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. Cree el clúster.

  6. Defina las variables de entorno del agente de contenedor de Amazon ECS para lanzar la instancia en el clúster creado en el paso anterior y defina las etiquetas que desee agregar para ayudar a identificar el clúster (por ejemplo, Outpost para indicar que el clúster es para un 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 retrasos causados por la extracción de imágenes de contenedor de Amazon ECR en la región, utilice imágenes almacenadas en caché. Para ello, cada vez que se ejecute una tarea, configure el agente de Amazon ECS de modo que utilice de forma predeterminada la imagen almacenada en caché en la propia instancia estableciendo ECS_IMAGE_PULL_BEHAVIOR en prefer-cached.

  7. Cree la instancia de contenedor y especifique la VPC y la subred para el AWS Outposts donde debe ejecutarse esta instancia, así como un tipo de instancias disponible en el AWS Outposts. (Este paso es diferente para AWS Outposts).

    El archivo userdata.txt contiene los datos de usuario que la instancia puede utilizar para llevar a cabo tareas de configuración automatizadas comunes e incluso ejecutar scripts después de que se inicie la instancia. Para obtener información acerca del archivo para las llamadas a la API, consulte Ejecutar comandos en la instancia de Linux durante la inicialización en la Guía del usuario de 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

    Este comando también se utiliza cuando se añaden instancias adicionales al clúster. Los contenedores implementados en el clúster se colocarán en ese AWS Outposts específico.

  8. Registre la definición de su tarea Utilice el siguiente comando y sustituya ecs-task.json con el nombre de la definición de la tarea.

    aws ecs register-task-definition --cli-input-json file://ecs-task.json
  9. Ejecute la tarea o cree el servicio.

    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