Implemente contenedores sin servidor en la nube desde su línea de comando
fargate es una interfaz de línea de comandos para implementar contenedores en AWS Fargate. Con fargate , los desarrolladores pueden operar fácilmente servicios de fargate, incluidas cosas como: implementar aplicaciones (imágenes y variables de entorno), monitorear implementaciones, ver registros de contenedores, reiniciar y escalar.
Puede instalar la última CLI estable con un script de utilidad curl o descargando el binario desde la página de versiones. Una vez instalado, obtendrás el comando fargate
.
curl -s get-fargate.turnerlabs.io | sh
Si desea instalar la última versión preliminar, utilice este comando:
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
De forma predeterminada, fargate utiliza us-east-1 ya que esta es la única región donde AWS Fargate está disponible. La CLI acepta un parámetro --region para uso futuro y respetará la configuración del entorno AWS_REGION y AWS_DEFAULT_REGION . Tenga en cuenta que especificar una región donde todos los servicios requeridos no están disponibles generará un error.
Consulte la tabla de regiones para obtener un desglose de los servicios que están disponibles en cada región.
fargate se crea utilizando AWS SDK for Go, que busca credenciales en las siguientes ubicaciones:
Variables de entorno
Archivo de credenciales compartido
Perfil de instancia EC2
Para obtener más información, consulte Especificación de credenciales en la documentación de AWS SDK for Go.
Hay varias formas de especificar parámetros. Cada elemento tiene prioridad sobre el elemento que se encuentra debajo:
Argumentos de CLI (p. ej., --cluster my-cluster
)
Variables de entorno (p. ej., FARGATE_CLUSTER=my-cluster
)
fargate.yml
(por ejemplo, a continuación)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
Bandera | Corto | Por defecto | Descripción |
---|---|---|---|
--grupo | -do | Nombre del clúster ECS | |
--región | nosotros-este-1 | Región de AWS | |
--sin color | FALSO | Desactivar salida de color | |
--verboso | -v | FALSO | Salida detallada |
Los servicios administran instancias de larga duración de sus contenedores que se ejecutan en AWS Fargate. Si su contenedor sale por algún motivo, el programador de servicios reiniciará sus contenedores y se asegurará de que su servicio tenga la cantidad deseada de tareas en ejecución. Los servicios se pueden utilizar junto con un equilibrador de carga para distribuir el tráfico entre las tareas de su servicio.
Bandera | Corto | Por defecto | Descripción |
---|---|---|---|
--servicio | -s | Nombre del servicio ECS |
fargate service list
Listar servicios
fargate service deploy [--image <docker-image>]
Implementar nueva imagen en el servicio
La imagen del contenedor Docker que se utilizará en el servicio se puede especificar mediante la marca --image.
fargate service deploy [--file docker-compose.yml]
Implementar imagen, variables de entorno y secretos definidos en un archivo de composición de Docker para dar servicio
Implemente una imagen de la ventana acoplable y las variables de entorno definidas en un archivo de composición de la ventana acoplable juntas como una sola unidad. Tenga en cuenta que las variables de entorno y los secretos se reemplazan con lo que hay en el archivo de redacción.
Los secretos se pueden definir como pares clave-valor en el campo de extensión de archivo de composición de la ventana acoplable x-fargate-secrets
. Para utilizar campos de extensión, la versión del archivo de redacción debe ser al menos 2.4
para la serie 2.x o al menos 3.7
para la serie 3.x.
Esto le permite ejecutar docker-compose up
localmente para ejecutar su aplicación de la misma manera que se ejecutará en AWS. Tenga en cuenta que, si bien la configuración yaml de docker-compose admite numerosas opciones, solo las variables de imagen y de entorno se implementan en fargate. Si el archivo de composición de la ventana acoplable define más de un contenedor, puede usar la etiqueta aws.ecs.fargate.deploy: 1
para indicar qué contenedor desea implementar. Por ejemplo:
version : " 3.7 "
services :
web :
build : .
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-service:0.1.0
ports :
- 80:5000
environment :
FOO : bar
BAZ : bam
env_file :
- hidden.env
x-fargate-secrets :
QUX : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : 1
redis :
image : redis
fargate service info
inspeccionar el servicio
Muestre información ampliada para un servicio, incluida la configuración del equilibrador de carga, implementaciones activas, variables de entorno y secretos.
Las implementaciones muestran versiones activas de su servicio que se están ejecutando. Se muestran varias implementaciones si un servicio está en transición debido a una implementación o actualización de la configuración, como CPU, memoria o variables de entorno.
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
Mostrar registros de tareas en un servicio
Devuelve un segmento específico de registros de servicio o registros finales en tiempo real usando la opción --follow. Los registros tienen como prefijo el nombre de la secuencia de registro, que tiene el formato "fargate/<nombre-servicio>/<id-tarea>".
Seguir continuará ejecutándose y devolviendo registros hasta que Control-C lo interrumpa. Si se pasa --follow --end no se puede especificar.
Se pueden devolver registros para tareas específicas dentro de un servicio pasando un ID de tarea a través del indicador --task. Pase --task con un ID de tarea varias veces para recuperar registros de varias tareas específicas.
Se puede solicitar una ventana específica de registros pasando las opciones --start y --end con una expresión de tiempo. La expresión de tiempo puede ser una duración o una marca de tiempo:
Puede filtrar registros para un término específico pasando una expresión de filtro a través del indicador --filter. Pase un solo término para buscar ese término, pase varios términos para buscar mensajes de registro que incluyan todos los términos. Consulte la documentación de CloudWatch Logs para obtener más detalles.
--time incluye la marca de tiempo del registro en la salida
--no-prefix excluye el prefijo del flujo de registro de la salida
fargate service ps
Listar tareas en ejecución para un servicio
fargate service scale <scale-expression>
Escalar el número de tareas en un servicio
Cambia el número de tareas deseadas que se ejecutarán en un servicio según la expresión de escala dada. Una expresión de escala puede ser un número absoluto o un delta especificado con un signo como +5 o -2.
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
Establecer variables de entorno y secretos
Se debe especificar al menos una variable de entorno o un secreto mediante los indicadores --env, --file, --secret o --secret-file. Puede especificar cualquier número de variables en la línea de comando repitiendo --env antes de cada una, o colocar múltiples variables en un archivo de texto, una por línea, y especificar el nombre del archivo con --file y/o --secret-file .
Cada cadena o línea de parámetro --env y --secret en el archivo debe tener el formato "clave=valor", sin comillas ni espacios en blanco alrededor de "=" a menos que desee espacios en blanco literales al principio del valor. Además, el lado "clave" debe ser un identificador de shell legal, lo que significa que debe comenzar con una letra ASCII AZ o un guión bajo y constar únicamente de letras, dígitos y guiones bajos.
El "valor" en "clave=valor" para cada indicador --secret debe hacer referencia al ARN del secreto de AWS Secrets Manager o al parámetro del almacén de parámetros de AWS Systems Manager.
fargate service env unset --key <key-name>
Secretos y variables de entorno sin configurar
Desconfigura la variable de entorno o el secreto especificado mediante el indicador --key. Especifique --key con un nombre de clave varias veces para desarmar múltiples variables.
fargate service env list
Mostrar variables de entorno
Bandera | Corto | Por defecto | Descripción |
---|---|---|---|
--UPC | Cantidad de unidades de CPU a asignar para cada tarea | ||
--memoria | -metro | Cantidad de MiB a asignar para cada tarea |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
Actualizar la configuración del servicio
Las configuraciones de CPU y memoria se especifican como unidades de CPU y mebibytes respectivamente usando los indicadores --cpu y --memory. Cada 1024 unidades de CPU equivale a una sola vCPU. AWS Fargate solo admite determinadas combinaciones de configuraciones de CPU y memoria:
CPU (unidades CPU) | Memoria (MiB) |
---|---|
256 | 512, 1024 o 2048 |
512 | 1024 a 4096 en incrementos de 1GiB |
1024 | 2048 a 8192 en incrementos de 1GiB |
2048 | 4096 a 16384 en incrementos de 1GiB |
4096 | 8192 a 30720 en incrementos de 1GiB |
Se debe especificar al menos uno de --cpu o --memory.
fargate service restart
Reiniciar servicio
Crea un nuevo conjunto de tareas para el servicio y detiene las tareas anteriores. Esto es útil si su servicio necesita recargar datos almacenados en caché desde una fuente externa, por ejemplo.
Bandera | Corto | Por defecto | Descripción |
---|---|---|---|
--tarea | -t | Familia de definiciones de tareas |
Las tareas son ejecuciones únicas de su contenedor. Las instancias de su tarea se ejecutan hasta que las detiene manualmente, ya sea a través de las API de AWS, la Consola de administración de AWS o hasta que se interrumpen por cualquier motivo.
fargate task register [--image <docker-image>]
[-e KEY=value -e KEY2=value] [--env-file dev.env]
[--secret KEY3=valueFrom] [--secret-file secrets.env]
Registra una nueva definición de tarea para la imagen de la ventana acoplable, las variables de entorno o los secretos especificados en función de la última revisión de la familia de tareas y devuelve el nuevo número de revisión.
La imagen del contenedor Docker que se utilizará en la nueva definición de tarea se puede especificar mediante la marca --image.
Las variables de entorno se pueden especificar usando uno o varios indicadores --env
o el indicador --env-file
.
Los secretos se pueden especificar usando uno o varios indicadores --secret
o el indicador --secret-file
.
fargate task register [--file docker-compose.yml]
Registra una nueva definición de tarea utilizando la imagen, las variables de entorno y los secretos definidos en un archivo de composición de Docker. Tenga en cuenta que las variables de entorno se reemplazan con lo que hay en el archivo de redacción.
Los secretos se pueden definir como pares clave-valor en el campo de extensión de archivo de composición de la ventana acoplable x-fargate-secrets
. Para utilizar campos de extensión, la versión del archivo de redacción debe ser al menos 2.4
para la serie 2.x o al menos 3.7
para la serie 3.x.
Si el archivo de composición de la ventana acoplable define más de un contenedor, puede usar la etiqueta aws.ecs.fargate.deploy: 1
para indicar qué contenedor desea implementar.
fargate task describe
El comando describe describe una definición de tarea en formato Docker Compose. La imagen de Docker, las variables de entorno, los secretos y el puerto de destino son los elementos mapeados.
Este comando puede resultar útil para observar los cambios realizados por los comandos task register
, service deploy
o service env set
. También puede resultar útil para ejecutar una definición de tarea localmente con fines de depuración o resolución de problemas.
fargate task describe -t my-app > docker-compose.yml
docker-compose up
Puede especificar la familia de definición de tareas utilizando un archivo fargate.yml
, el envvar FARGATE_TASK
o utilizando el indicador -t
, incluido un número de revisión opcional.
fargate task describe -t my-app
fargate task describe -t my-app:42
Salida de ejemplo:
version : " 3.7 "
services :
app :
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-app:1.0
ports :
- published : 8080
target : 8080
environment :
AWS_REGION : us-east-1
ENVIRONMENT : dev
FOO : bar
x-fargate-secrets :
KEY : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : " 1 "
fargate task logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--container-name] [--time] [--no-prefix]
Mostrar registros de tareas
Asume un grupo de registros de Cloudwatch con la siguiente convención: fargate/task/<task>
donde task
se especifica mediante --task
, fargate.yml u opciones de variables de entorno.
Devuelve un segmento específico de registros de tareas o registros finales en tiempo real usando la opción --follow. Los registros tienen como prefijo el nombre de la secuencia de registros, que tiene el formato fargate/<container-name>/<task-id>.
--container-name
le permite especificar el contenedor dentro de la definición de tarea para obtener registros (el valor predeterminado es app
)
Seguir continuará ejecutándose y devolviendo registros hasta que Control-C lo interrumpa. Si se pasa --follow
--end
no se puede especificar.
Se pueden devolver registros para tareas específicas pasando un ID de tarea a través del indicador --task
. Pase --task
con un ID de tarea varias veces para recuperar registros de varias tareas específicas.
Se puede solicitar una ventana específica de registros pasando las opciones --start
y --end
con una expresión de tiempo. La expresión de tiempo puede ser una duración o una marca de tiempo:
Puede filtrar registros para un término específico pasando una expresión de filtro a través del indicador --filter
. Pase un solo término para buscar ese término, pase varios términos para buscar mensajes de registro que incluyan todos los términos.
--time
incluye la marca de tiempo del registro en la salida
--no-prefix
excluye el prefijo del flujo de registro de la salida
Bandera | Corto | Por defecto | Descripción |
---|---|---|---|
--regla | -r | Regla de eventos de CloudWatch |
El comando events
proporciona subcomandos para trabajar con eventos de CloudWatch (tareas programadas, etc.)
fargate events target --revision <revision>
"Implementa" (hace que la siguiente invocación de regla de evento ejecute la nueva versión) una revisión de definición de tarea en una regla de evento de CloudWatch actualizando EcsParameters.TaskDefinitionArn
del destino de la regla.
Un sistema CI/CD típico podría hacer algo como:
REVISION=$(fargate task register -i 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:${VERSION}-${CIRCLE_BUILD_NUM} -e FOO=bar)
fargate events target -r ${REVISION}