Administración de una Flota de EC2 - Amazon Elastic Compute Cloud

Administración de una Flota de EC2

Para usar una Flota de EC2, cree una solicitud que incluya la capacidad de destino total, la capacidad bajo demanda, la capacidad de spot, una o varias especificaciones de lanzamiento para las instancias y el precio máximo que está dispuesto a pagar. La solicitud de flota deberá incluir una plantilla de lanzamiento que defina la información que la flota requiere para lanzar una instancia, como una AMI, un tipo de instancia, una subred o una zona de disponibilidad y uno o varios grupos de seguridad. Puede especificar anulaciones de las especificaciones de lanzamiento para el tipo de instancia, la subred, la zona de disponibilidad y el precio máximo que está dispuesto a pagar, así como asignar una capacidad ponderada a cada anulación de las especificaciones de lanzamiento.

Si la flota incluye Instancias de spot, Amazon EC2 puede intentar mantener la capacidad de destino de la flota cuando los precios de spot cambien.

Una Flota de EC2 permanece activa hasta que caduca o hasta que usted la elimina. Al eliminar una flota, puede especificar si la eliminación terminará las instancias contenidas en ella.

Estados de una solicitud de Flota de EC2

Una solicitud de Flota de EC2 puede tener uno de los siguientes estados:

  • submitted – se está evaluando la solicitud de Flota de EC2 y Amazon EC2 se está preparando para lanzar el número de instancias de destino, que puede incluir Instancias bajo demanda, Instancias de spot o ambas.

  • active – se ha validado la solicitud de Flota de EC2 y Amazon EC2 está intentando mantener el número de instancias de destino en ejecución. La solicitud permanece en este estado hasta que se modifica o se elimina.

  • modifying – se está modificando la solicitud de Flota de EC2. La solicitud permanece en este estado hasta que la modificación se procesa completamente o se elimina la solicitud. Solo se puede modificar un tipo de solicitud maintain. Este estado no se aplica a otros tipos de solicitud.

  • deleted_running – la solicitud de Flota de EC2 se ha eliminado y ya no lanza más instancias. Las instancias existentes de la flota continúan ejecutándose hasta que se interrumpen o terminan. La solicitud permanece en este estado hasta que se interrumpan o terminen todas las instancias.

  • deleted_terminating – la solicitud de Flota de EC2 se ha eliminado y sus instancias están en proceso de terminación. La solicitud permanece en este estado hasta que se terminen todas las instancias.

  • deleted – la Flota de EC2 se ha eliminado y no tiene ninguna instancia en ejecución. La solicitud se elimina dos días después de que todas sus instancias se hayan terminado.

La siguiente ilustración representa las transiciones entre los distintos estados de una solicitud de Flota de EC2. Si excede los límites de la flota, la solicitud se elimina inmediatamente.


					Estados de una solicitud de Flota de EC2

Requisitos previos de Flota de EC2

Para crear una Flota de EC2, deben existir los requisitos previos siguientes.

Plantilla de lanzamiento

Una plantilla de lanzamiento incluye información acerca de las instancias que se van a lanzar, como el tipo de instancia, la zona de disponibilidad y el precio máximo que está dispuesto a pagar. Para obtener más información, consulte Lanzamiento de una instancia desde una plantilla de lanzamiento.

Rol vinculado al servicio de Flota de EC2

El rol AWSServiceRoleForEC2Fleet concede a la Flota de EC2 permiso para solicitar, lanzar, terminar y etiquetar instancias en su nombre. Amazon EC2 utiliza este rol vinculado a servicio para ejecutar las acciones siguientes:

  • ec2:RunInstances: para lanzar las instancias

  • ec2:RequestSpotInstances – solicitar Instancias de spot.

  • ec2:TerminateInstances: para terminar las instancias

  • ec2:DescribeImages: describir las imágenes de máquina de Amazon (AMI) para Instancias de spot.

  • ec2:DescribeInstanceStatus – describir el estado de las Instancias de spot.

  • ec2:DescribeSubnets – describir las subredes de las Instancias de spot.

  • ec2:CreateTags: agregue etiquetas a Flota de EC2, instancias y volúmenes.

Asegúrese de que este rol exista antes de utilizar la AWS CLI o una API para crear una Flota de EC2.

nota

Una Flota de EC2 instant no requiere este rol.

Para crear el rol, use la consola de IAM como se indica a continuación.

Para crear el rol AWSServiceRoleForEC2Fleet para Flota de EC2

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Roles y luego seleccione Create role.

  3. En Select type of trusted entity (Seleccionar tipo de entidad de confianza), elija AWS service (Servicio de AWS).

  4. En Choose the service that will use this role (Elija el servicio que utilizará este rol), seleccione EC2 - Fleet (Flota EC2) y después elija Next: Permissions (Siguiente: Permisos), Next: Tags (Siguiente: Etiquetas) y Next: Review (Siguiente: Revisar).

  5. En la página Review (Revisión), elija Create role (Crear rol).

Si ya no tiene que utilizar las Flota de EC2, le recomendamos que elimine el rol AWSServiceRoleForEC2Fleet. Después de haber eliminado este rol de la cuenta, podrá volver a crearlo si crea otra flota.

Para obtener más información, consulte Uso de roles vinculados a servicios en la Guía del usuario de IAM.

Concesión de acceso a CMK para su uso con AMI cifradas e instantáneas de EBS

Si especifica una AMI cifrada o una instantánea de Amazon EBS cifrada en su Flota de EC2 y usa una clave maestra administrada por el cliente (CMK) para el cifrado, debe conceder permiso al rol AWSServiceRoleForEC2Fleet para que use la CMK de modo que Amazon EC2 pueda lanzar instancias en su nombre. Para ello, debe añadir una concesión a la CMK, como se muestra en el siguiente procedimiento.

Al proporcionar permisos, las concesiones son una alternativa a las políticas de claves. Para obtener más información, consulte Uso de concesiones y Uso de políticas de claves en AWS KMS en la AWS Key Management Service Developer Guide.

Para conceder permisos al rol AWSServiceRoleForEC2Fleet para que use la CMK

  • Use el comando create-grant para añadir una concesión a la CMK y para especificar la entidad principal (el rol vinculado a un servicio AWSServiceRoleForEC2Fleet) que recibe permiso para realizar las operaciones que permite la concesión. La CMK se especifica con el parámetro key-id y el ARN de la CMK. La entidad principal se especifica con el parámetro grantee-principal y el ARN del rol vinculado a un servicio AWSServiceRoleForEC2Fleet.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Fleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Usuarios de Flota de EC2 e IAM

Si los usuarios de IAM van a crear o administrar una Flota de EC2, asegúrese de concederles los permisos necesarios como se indica a continuación.

Para conceder permisos a un usuario de IAM para la Flota de EC2

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Policies.

  3. Elija Create Policy.

  4. En la página Create policy (Crear política), elija la pestaña JSON, sustituya el texto por lo siguiente y, a continuación, elija Review policy (Revisar política).

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole", "iam:ListInstanceProfiles" ], "Resource": "*" } ] }

    ec2:* concede a un usuario de IAM permiso para llamar a todas las acciones de la API de Amazon EC2. Para limitar las acciones del usuario a unas determinadas acciones de la API de Amazon EC2, especifique dichas acciones.

    Un usuario de IAM debe tener permiso para llamar a la acción iam:ListRoles para enumerar los roles de IAM existentes, a la acción iam:PassRole para especificar el rol de la Flota de EC2 y a la acción iam:ListInstanceProfiles para enumerar los perfiles de instancia existentes.

    (Opcional) Para permitir a un usuario de IAM crear roles o perfiles de instancia mediante la consola de IAM, también debe añadir las siguientes acciones a la política:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  5. En la página Review policy (Revisar política), escriba un nombre y descripción de política y, a continuación, elija Create policy (Crear política).

  6. En el panel de navegación, elija Users (Usuarios) y seleccione el usuario.

  7. En la pestaña Permissions (Permisos), seleccione Add permissions (Añadir permisos).

  8. Elija Attach existing policies directly. Seleccione la política que ha creado antes y elija Next: Review (Siguiente: Revisar).

  9. Elija Add permissions.

Comprobaciones de estado de la Flota de EC2

Flota de EC2 comprueba el estado de las instancias de la flota cada dos minutos. El estado de una instancia puede ser healthy o unhealthy. La flota determina el estado de una instancia a partir de las comprobaciones de estado que proporciona Amazon EC2. Si el estado de la comprobación de estado de la instancia o del sistema es impaired durante tres comprobaciones de estado consecutivas, el estado de salud de la instancia es unhealthy. De lo contrario, el estado es healthy. Para obtener más información, consulte Comprobaciones de estado para sus instancias.

Puede configurar la Flota de EC2 para sustituir instancias en mal estado. Después de habilitar la sustitución de comprobación de estado, se sustituirán las instancias cuyo estado sea unhealthy. La flota podría ver reducida su capacidad de destino durante algunos minutos mientras se sustituye una instancia en mal estado.

Requisitos

  • La sustitución de comprobación de estado solo se admite con una instancia de tipo Flotas de EC2 que mantenga la capacidad de destino, pero no con las flotas puntuales.

  • Solo puede configurar una Flota de EC2 para sustituir instancias en mal estado al crearla.

  • Los usuarios de IAM pueden utilizar la sustitución de comprobación de estado únicamente si tienen permiso para llamar a la acción ec2:DescribeInstanceStatus.

Generación de un archivo de configuración JSON de Flota de EC2

Para crear una Flota de EC2, solo hay que especificar la plantilla de lanzamiento, la capacidad de destino total y si desea usar de forma predeterminada la opción de compra según demanda o de spot. Si no especifica este parámetro, la flota usa el valor predeterminado. Para ver la lista completa de parámetros de configuración de flota, puede crear un archivo JSON como se indica a continuación.

Para generar un archivo JSON con todos los parámetros de Flota de EC2 posibles usando la línea de comandos

  • Ejecute el comando create-fleet (AWS CLI) y el parámetro --generate-cli-skeleton para generar un archivo JSON de Flota de EC2.

    aws ec2 create-fleet \ --generate-cli-skeleton

    Están disponibles los siguientes parámetros de Flota de EC2:

    { "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "lowest-price", "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MaxTotalPrice": 0, "MinTargetCapacity": 0 }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "SingleInstanceType": true, "SingleAvailabilityZone": true, "MaxTotalPrice": 0, "MinTargetCapacity": 0 }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "t2.micro", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": null, "Priority": null, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "spot" }, "TerminateInstancesWithExpiration": true, "Type": "maintain", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ] }

Referencia para archivos de configuración JSON de Flota de EC2

nota

Use minúsculas para todos los valores de los parámetros; en caso contrario, recibirá un error cuando Amazon EC2 utilice el archivo JSON para lanzar la Flota de EC2.

AllocationStrategy (para SpotOptions)

(Opcional) Indica cómo asignar la capacidad de destino de la instancia de spot entre los grupos de instancia de spot especificados por la Flota de EC2. Los valores válidos son lowest-price, diversified y capacity-optimized. El valor predeterminado es lowest-price. Especifique la estrategia de asignación que se ajuste a sus necesidades. Para obtener más información, consulte Estrategias de asignación de Instancias de spot.

InstanceInterruptionBehavior

(Opcional) El comportamiento cuando una instancia de spot se interrumpe. Los valores válidos son hibernate, stop y terminate. De forma predeterminada, el servicio de spot termina las Instancias de spot cuando se interrumpen. Si el tipo de flota es maintain, puede especificar que el servicio de spot hiberne o detenga las Instancias de spot cuando se interrumpan.

InstancePoolsToUseCount

El número de grupos de spot en los que asignar la capacidad de spot de destino. Solo es válido cuando AllocationStrategy de para las instancias de spot se establece en lowest-price. Flota de EC2 selecciona los grupos de spot más baratos y asigna la capacidad de spot de destino de manera uniforme entre los grupos de spot que se hayan especificado.

SingleInstanceType

Indica que la flota utiliza un tipo de instancia único para lanzar todas las Instancias de spot en la flota.

SingleAvailabilityZone

Indica que la flota lanza todas las Instancias de spot en una sola zona de disponibilidad.

MaxTotalPrice

La cantidad máxima por hora por Instancias de spot que está dispuesto a pagar.

MinTargetCapacity

La capacidad de destino mínima para las Instancias de spot de la flota. Si no se alcanza la capacidad de destino mínima, la flota no lanza instancias.

AllocationStrategy (para OnDemandOptions)

El orden de las invalidaciones de plantillas de lanzamiento que se debe usar al cubrir la capacidad bajo demanda. Si especifica lowest-price, la Flota de EC2 utiliza el precio para determinar el orden y lanza primero las de precio más bajo. Si especifica la priorización, Flota de EC2 usa la prioridad que ha asignado a cada invalidación de la plantilla de lanzamiento y lanza primero la prioridad más alta. Si no especifica ningún valor, la Flota de EC2 utiliza lowest-price de forma predeterminada.

SingleInstanceType

Indica que la flota utiliza un tipo de instancia único para lanzar todas las instancias bajo demanda en la flota.

SingleAvailabilityZone

Indica que la flota lanza todas las instancias bajo demanda en una sola zona de disponibilidad.

MaxTotalPrice

La cantidad máxima por hora para las instancias bajo demanda que está dispuesto a pagar.

MinTargetCapacity

La capacidad de destino mínima para las instancias bajo demanda de la flota. Si no se alcanza la capacidad de destino mínima, la flota no lanza instancias.

ExcessCapacityTerminationPolicy

(Opcional) Indica si se deben terminar instancias en ejecución si se reduce la capacidad de destino total de la Flota de EC2 por debajo del tamaño actual de la Flota de EC2. Los valores válidos son no-termination y termination.

LaunchTemplateId

El ID de la plantilla de lanzamiento que se debe usar. Debe especificar el ID o el nombre de la plantilla de lanzamiento. La plantilla de lanzamiento debe especificar una Imagen de máquina de Amazon (AMI). Para obtener información acerca de la creación de plantillas de lanzamiento, consulte Lanzamiento de una instancia desde una plantilla de lanzamiento.

LaunchTemplateName

El nombre de la plantilla de lanzamiento que se debe usar. Debe especificar el ID o el nombre de la plantilla de lanzamiento. La plantilla de lanzamiento debe especificar una Imagen de máquina de Amazon (AMI). Para obtener más información, consulte Lanzamiento de una instancia desde una plantilla de lanzamiento.

Version

El número de versión de la plantilla de lanzamiento, $Latest o $Default. Debe especificar un valor; de lo contrario, la solicitud falla. Si el valor es $Latest, Amazon EC2 utiliza la versión más reciente de la plantilla de lanzamiento. Si el valor es $Default, Amazon EC2 utiliza la versión predeterminada de la plantilla de lanzamiento. Para obtener más información, consulte Administración de versiones de plantillas de lanzamiento.

InstanceType

(Opcional) El tipo de instancia. Si se escribe, este valor invalida la plantilla de lanzamiento. Los tipos de instancias deben tener las especificaciones de hardware mínimas que se necesitan (vCPU, memoria o almacenamiento).

MaxPrice

(Opcional) El precio máximo por hora de unidad que está dispuesto a pagar por una instancia de spot. Si se escribe, este valor invalida la plantilla de lanzamiento. Puede usar el precio máximo predeterminado (el precio bajo demanda) o bien especificar el precio máximo que está dispuesto a pagar. Las Instancias de spot no se lanzarán si el precio máximo es inferior al precio de spot de los tipos de instancias especificados.

SubnetId

(Opcional) El ID de la subred en la que lanzar las instancias. Si se escribe, este valor invalida la plantilla de lanzamiento.

Para crear una VPC nueva, vaya a la consola de Amazon VPC. Cuando haya terminado, vuelva al archivo JSON y escriba el ID de la nueva subred.

AvailabilityZone

(Opcional) La zona de disponibilidad en la que se van a lanzar las instancias. El valor predeterminado es permitir que AWS elija las zonas de las instancias. Si lo prefiere, puede especificar zonas concretas. Si se escribe, este valor invalida la plantilla de lanzamiento.

Especifique una o varias zonas de disponibilidad. Si tiene más de una subred en una zona, especifique la subred adecuada. Para agregar subredes, vaya a la consola de Amazon VPC. Cuando haya terminado, vuelva al archivo JSON y escriba el ID de la nueva subred.

WeightedCapacity

(Opcional) El número de unidades proporcionadas por el tipo de instancia especificado. Si se escribe, este valor invalida la plantilla de lanzamiento.

Prioridad

La prioridad para la invalidación de la plantilla de lanzamiento. Si AllocationStrategy está establecida en prioritized, la Flota de EC2 aplica la prioridad para determinar qué invalidación de la plantilla de lanzamiento debe usar primero para cubrir la capacidad bajo demanda. La prioridad más alta se lanza primero. Los valores válidos son números enteros, a partir de 0. Cuanto menor sea el número, mayor será la prioridad. Si no se establece ningún número, la invalidación tendrá la prioridad más baja.

TotalTargetCapacity

El número de instancias que se va a lanzar. Puede elegir instancias o características de rendimiento que son importantes para la carga de trabajo de su aplicación como la cantidad de vCPU, memoria o almacenamiento. Si el tipo de solicitud es maintain, puede especificar una capacidad de destino de 0 y añadir capacidad más tarde.

OnDemandTargetCapacity

(Opcional) El número de Instancias bajo demanda que se deben lanzar. Este número debe ser menor que TotalTargetCapacity.

SpotTargetCapacity

(Opcional) El número de Instancias de spot que se deben lanzar. Este número debe ser menor que TotalTargetCapacity.

DefaultTargetCapacityType

Si el valor de TotalTargetCapacity es mayor que los valores combinados de OnDemandTargetCapacity y SpotTargetCapacity, la diferencia se lanza con la opción de compra de instancias especificada aquí. Los valores válidos son on-demand o spot.

TerminateInstancesWithExpiration

(Opcional) De forma predeterminada, Amazon EC2 termina las instancias cuando caduca la solicitud de Flota de EC2. El valor predeterminado es true. Para que sigan ejecutándose después de que caduque la solicitud, no escriba ningún valor para este parámetro.

Tipo

(Opcional) Indica si la Flota de EC2 envía una solicitud puntual síncrona para la capacidad deseada (instant) o una solicitud puntual asíncrona para la capacidad deseada, pero sin intentar mantener la capacidad o enviar solicitudes en grupos de capacidad alternativos si la capacidad no está disponible (request), o envía una solicitud asíncrona para su capacidad deseada y continua para mantener la capacidad deseada completando las Instancias de spot interrumpidas (maintain). Los valores válidos son instant, request y maintain. El valor predeterminado es maintain. Para obtener más información, consulte Tipos de solicitudes de Flota de EC2.

ValidFrom

(Opcional) Para crear una solicitud que solo sea válida durante un periodo de tiempo específico, escriba una fecha de inicio.

ValidUntil

(Opcional) Para crear una solicitud que solo sea válida durante un periodo de tiempo específico, escriba una fecha de finalización.

ReplaceUnhealthyInstances

(Opcional) Para sustituir las instancias en mal estado de una Flota de EC2 configurada para maintain (mantener) la flota, escriba true. De lo contrario, deje este parámetro en blanco.

TagSpecifications

(Opcional) El par de clave-valor para etiquetar la solicitud de Flota de EC2 durante la creación. El valor para ResourceType debe ser fleet, de lo contrario la solicitud de flota devuelve un error. Para etiquetar instancias durante el lanzamiento, especifique las etiquetas en la plantilla de lanzamiento. Para obtener información acerca del etiquetado después del lanzamiento, consulte Etiquetado de los recursos.

Creación de un Flota de EC2

Al crear una Flota de EC2, es preciso especificar una plantilla de lanzamiento que incluya información acerca de las instancias que se van a lanzar, como el tipo de instancia, la zona de disponibilidad y el precio máximo que está dispuesto a pagar.

Puede crear una Flota de EC2 que incluya varias especificaciones de lanzamiento que invaliden la plantilla de lanzamiento. Las especificaciones de lanzamiento pueden variar según el tipo de instancia, la zona de disponibilidad, la subred y el precio máximo. Además, pueden incluir una capacidad ponderada distinta.

Al crear una Flota de EC2, use un archivo JSON para especificar la información sobre las instancias que se van a lanzar. Para obtener más información, consulte Referencia para archivos de configuración JSON de Flota de EC2.

Flotas de EC2 solo se puede crear con la AWS CLI.

Para crear una Flota de EC2 (AWS CLI)

  • Utilice el comando create-fleet (AWS CLI) para crear una Flota de EC2.

aws ec2 create-fleet \ --cli-input-json file://file_name.json

Para ver archivos de configuración de ejemplo, consulte Ejemplos de configuraciones de una Flota de EC2.

A continuación se muestra un resultado de ejemplo para una flota de tipo request o maintain.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

A continuación se muestra un resultado de ejemplo para una flota de tipo instant que lanzó la capacidad de destino.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-5678901234abcdef0", "i-5432109876abcdef9" ], "InstanceType": "c4.large", "Platform": null }, ] }

A continuación se muestra un resultado de ejemplo para una flota de tipo instant que lanzó parte de la capacidad de destino con errores para instancias que no se habían lanzado.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "", "InstanceType": "c4.xlarge", "Platform": null }, ], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, ] }

A continuación se muestra un resultado de ejemplo para una flota de tipo instant que lanzó sin instancias.

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "", "InstanceType": "c4.xlarge", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "", "InstanceType": "c5.large", "Platform": null }, ], "Instances": [] }

Etiquetado de Flota de EC2

Para ayudarle a categorizar y a administrar las solicitudes de Flota de EC2, puede etiquetarlas con metadatos personalizados. Puede asignar una etiqueta a una solicitud de Flota de EC2 cuando la cree o posteriormente.

Al etiquetar una solicitud de flota, las instancias y volúmenes lanzados por la flota no se etiquetan automáticamente. Tiene que etiquetar explícitamente las instancias y volúmenes lanzados por la flota. Puede elegir asignar etiquetas solo a la solicitud de flota, solo a las instancias iniciadas por la flota, solo a los volúmenes asociados a las instancias iniciadas por la flota o a las tres.

nota

Para los tipos de flota instant, puede etiquetar volúmenes asociados a Instancias bajo demanda y Instancias de spot. Para los tipos de flota request o maintain, solo puede etiquetar volúmenes asociados a Instancias bajo demanda.

Para obtener más información sobre cómo funcionan las etiquetas, consulte Etiquetado de los recursos de Amazon EC2.

Requisito previo

Otorgue al usuario de IAM el permiso para etiquetar recursos. Para obtener más información, consulte Ejemplo: Etiquetar recursos.

Para conceder a un usuario de IAM el permiso para etiquetar recursos

Cree una política de IAM que incluya lo siguiente:

  • La acción ec2:CreateTags. Esto concede al usuario de IAM permiso para crear etiquetas.

  • La acción ec2:CreateFleet. Esto concede al usuario de IAM permiso para crear una solicitud de Flota de EC2.

  • Para Resource, le recomendamos que especifique "*". Esto permite a los usuarios etiquetar todos los tipos de recursos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagEC2FleetRequest", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "*" }
importante

Actualmente no admitimos permisos de nivel de recursos para el recurso create-fleet. Si especifica create-fleet como recurso, obtendrá una excepción no autorizada cuando intente etiquetar la flota. En el ejemplo siguiente se muestra cómo no establecer la política.

{ "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:CreateFleet" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:create-fleet/*" }

Para etiquetar una nueva solicitud de Flota de EC2

Para etiquetar una solicitud de Flota de EC2 al crearla, especifique el par clave-valor en el archivo JSON utilizado para crear la flota. El valor para ResourceType debe ser fleet. Si especifica otro valor, la solicitud de flota devuelve un error.

Para etiquetar instancias y volúmenes lanzados por un Flota de EC2

Para etiquetar instancias y volúmenes cuando los lanza la flota, especifique las etiquetas en la plantilla de lanzamiento a la que se hace referencia en la solicitud de Flota de EC2.

nota

No puede etiquetar volúmenes asociados a los Instancias de spot que se inicien por un tipo de flota request o maintain.

Para etiquetar una solicitud de Flota de EC2, instancia y volumen existentes (AWS CLI)

Utilice el comando create-tags para etiquetar recursos existentes.

aws ec2 create-tags \ --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \ --tags Key=purpose,Value=test

Monitoreo de su Flota de EC2

La Flota de EC2 lanza las Instancias bajo demanda cuando hay capacidad disponible y lanza las Instancias de spot cuando el precio máximo que ha indicado es superior al precio de spot y hay capacidad disponible. Las Instancias bajo demanda se ejecutan hasta que usted las termina y las Instancias de spot hasta que se interrumpen o usted las termina.

La lista devuelta de instancias en ejecución se actualiza periódicamente y podría no estar actualizada.

Para monitorizar su Flota de EC2 (AWS CLI)

Utilice el comando describe-fleets para describir sus Flotas de EC2.

aws ec2 describe-fleets

A continuación, se muestra un ejemplo del resultado.

{ "Fleets": [ { "Type": "maintain", "FulfilledCapacity": 2.0, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "Version": "2", "LaunchTemplateId": "lt-07b3bc7625cdab851" } } ], "TerminateInstancesWithExpiration": false, "TargetCapacitySpecification": { "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 2, "TotalTargetCapacity": 2, "DefaultTargetCapacityType": "spot" }, "FulfilledOnDemandCapacity": 0.0, "ActivityStatus": "fulfilled", "FleetId": "fleet-76e13e99-01ef-4bd6-ba9b-9208de883e7f", "ReplaceUnhealthyInstances": false, "SpotOptions": { "InstanceInterruptionBehavior": "terminate", "InstancePoolsToUseCount": 1, "AllocationStrategy": "lowest-price" }, "FleetState": "active", "ExcessCapacityTerminationPolicy": "termination", "CreateTime": "2018-04-10T16:46:03.000Z" } ] }

Utilice el comando describe-fleet-instances para describir las instancias de la Flota de EC2 especificada.

aws ec2 describe-fleet-instances \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
{ "ActiveInstances": [ { "InstanceId": "i-09cd595998cb3765e", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-86k84j6p" }, { "InstanceId": "i-09cf95167ca219f17", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-dvxi7fsm" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

Utilice el comando describe-fleet-history para describir el historial de la Flota de EC2 especificada durante el tiempo indicado.

aws ec2 describe-fleet-history --fleet-request-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --start-time 2018-04-10T00:00:00Z
{ "HistoryRecords": [], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", "StartTime": "2018-04-09T23:53:20.000Z" }

Modificación de una Flota de EC2

Puede modificar una Flota de EC2 que se encuentre en el estado submitted o active. Al modificar una flota, esta pasa al estado modifying.

Solo se puede modificar una Flota de EC2 que sea de tipo maintain. No se puede modificar una Flota de EC2 del tipo request o instant.

Puede modificar los parámetros siguientes de una Flota de EC2:

  • target-capacity-specification – aumenta o reduce la capacidad de destino para TotalTargetCapacity, OnDemandTargetCapacity y SpotTargetCapacity.

  • excess-capacity-termination-policy – permite indicar si las instancias en ejecución deberán terminarse si se reduce la capacidad de destino total de la Flota de EC2 por debajo del tamaño actual de la flota. Los valores válidos son no-termination y termination.

Cuando se aumenta la capacidad de destino, la Flota de EC2 lanza instancias adicionales de acuerdo con la opción de compra de instancias especificada para DefaultTargetCapacityType, que pueden ser Instancias bajo demanda o Instancias de spot.

Si DefaultTargetCapacityType es spot, la Flota de EC2 lanza las Instancias de spot adicionales de acuerdo con su estrategia de asignación. Si la estrategia de asignación es lowest-price, la flota lanza las instancias del grupo de instancia de spot de menor precio de la solicitud. Si la estrategia de asignación es diversified, la flota distribuye las instancias entre los grupos restantes de la solicitud.

Cuando se reduce la capacidad de destino, la Flota de EC2 elimina todas las solicitudes abiertas que superen la nueva capacidad de destino. Puede solicitar que la flota termine las instancias hasta que el tamaño de la flota alcance la nueva capacidad de destino. Si la estrategia de asignación es lowest-price, la flota terminará las instancias con el mayor precio por unidad. Si la estrategia de asignación es diversified, la flota terminará instancias de los distintos grupos. También puede solicitar que la Flota de EC2 mantenga la flota con su tamaño actual, pero que no sustituya ninguna de las Instancias de spot que se hayan interrumpido ni ninguna instancia que el usuario haya terminado manualmente.

Cuando una Flota de EC2 termina una instancia de spot porque se ha reducido la capacidad de destino, la instancia recibe un aviso de interrupción de la instancia de spot.

Para modificar una Flota de EC2 (AWS CLI)

Utilice el comando modify-fleet para actualizar la capacidad de destino de la Flota de EC2 especificada.

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=20

Si va a reducir la capacidad de destino pero quiere conservar la flota con su tamaño actual, puede modificar el comando anterior como se indica a continuación.

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=10 \ --excess-capacity-termination-policy no-termination

Eliminación de una Flota de EC2

Si ya no necesita una Flota de EC2, puede eliminarla. Tras eliminar una flota, esta ya no lanza ninguna instancia nueva.

Debe especificar si la Flota de EC2 deberá terminar sus instancias. Si especifica que se terminen las instancias cuando se elimine la flota, esta pasará al estado deleted_terminating. En caso contrario, pasará al estado deleted_running y las instancias seguirán ejecutándose hasta que se interrumpan o usted las termine manualmente.

Solo puede eliminar flotas de tipo request y maintain. No puede eliminar una Flota de EC2 instant.

Para eliminar una Flota de EC2 (AWS CLI)

Utilice el comando delete-fleets y el parámetro --terminate-instances para eliminar la Flota de EC2 especificada y terminar las instancias.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --terminate-instances

A continuación, se muestra un ejemplo del resultado.

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_terminating", "PreviousFleetState": "active", "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" } ] }

Puede modificar el comando anterior con el parámetro --no-terminate-instances para eliminar la Flota de EC2 especificada sin terminar las instancias.

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --no-terminate-instances

A continuación, se muestra un ejemplo del resultado.

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_running", "PreviousFleetState": "active", "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE" } ] }

Motivos de una eliminación con error

Si una Flota de EC2 devuelve un error al eliminarla, UnsuccessfulFleetDeletions devuelve el ID de la Flota de EC2, un código de error y un mensaje de error. Los códigos de error son fleetIdDoesNotExist, fleetIdMalformed, fleetNotInDeletableState y unexpectedError.