Implante contêineres sem servidor na nuvem por meio da linha de comando
fargate é uma interface de linha de comando para implantar contêineres no AWS Fargate. Usando fargate , os desenvolvedores podem operar facilmente serviços fargate, incluindo coisas como: implantação de aplicativos (imagens e variáveis de ambiente), monitoramento de implantações, visualização de logs de contêiner, reinicialização e escalonamento.
Você pode instalar a CLI estável mais recente com um script do utilitário curl ou baixando o binário na página de lançamentos. Depois de instalado, você receberá o comando fargate
.
curl -s get-fargate.turnerlabs.io | sh
Se desejar instalar o pré-lançamento mais recente, use este comando:
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
Por padrão, o fargate usa us-east-1 , pois esta é a única região onde o AWS Fargate está disponível. A CLI aceita um parâmetro --region para uso futuro e respeitará as configurações de ambiente AWS_REGION e AWS_DEFAULT_REGION . Observe que especificar uma região onde todos os serviços necessários não estejam disponíveis retornará um erro.
Consulte a Tabela de Regiões para ver quais serviços estão disponíveis em quais regiões.
fargate é criado usando o AWS SDK for Go, que procura credenciais nos seguintes locais:
Variáveis de ambiente
Arquivo de credenciais compartilhadas
Perfil de instância EC2
Para obter mais informações, consulte Especificar credenciais na documentação do AWS SDK for Go.
Existem diversas maneiras de especificar parâmetros. Cada item tem precedência sobre o item abaixo dele:
Argumentos CLI (por exemplo, --cluster my-cluster
)
Variáveis de ambiente (por exemplo, FARGATE_CLUSTER=my-cluster
)
fargate.yml
(por exemplo, abaixo)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
Bandeira | Curto | Padrão | Descrição |
---|---|---|---|
--conjunto | -c | Nome do cluster ECS | |
--região | nós-leste-1 | Região AWS | |
--sem cor | falso | Desativar saída colorida | |
--verbose | -v | falso | Saída detalhada |
Os serviços gerenciam instâncias de longa duração de seus contêineres executadas no AWS Fargate. Se o seu contêiner for encerrado por qualquer motivo, o agendador de serviço reiniciará seus contêineres e garantirá que seu serviço tenha o número desejado de tarefas em execução. Os serviços podem ser usados em conjunto com um balanceador de carga para distribuir o tráfego entre as tarefas do seu serviço.
Bandeira | Curto | Padrão | Descrição |
---|---|---|---|
--serviço | -s | Nome do serviço ECS |
fargate service list
Listar serviços
fargate service deploy [--image <docker-image>]
Implantar nova imagem no serviço
A imagem do contêiner Docker a ser usada no serviço pode ser especificada por meio do sinalizador --image.
fargate service deploy [--file docker-compose.yml]
Implantar imagem, variáveis de ambiente e segredos definidos em um arquivo docker compose para o serviço
Implante uma imagem do docker e variáveis de ambiente definidas em um arquivo docker compose juntos como uma única unidade. Observe que as variáveis de ambiente e os segredos são substituídos pelo que está no arquivo de composição.
Os segredos podem ser definidos como pares de valores-chave no campo de extensão de arquivo docker compose x-fargate-secrets
. Para usar campos de extensão, a versão do arquivo de composição deve ser pelo menos 2.4
para a série 2.x ou pelo menos 3.7
para a série 3.x.
Isso permite que você execute docker-compose up
localmente para executar seu aplicativo da mesma forma que ele será executado na AWS. Observe que, embora a configuração docker-compose yaml ofereça suporte a diversas opções, apenas as variáveis de imagem e de ambiente são implantadas no fargate. Se o arquivo docker compose definir mais de um contêiner, você poderá usar o rótulo aws.ecs.fargate.deploy: 1
para indicar qual contêiner você gostaria de implantar. Por exemplo:
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
Inspecionar serviço
Mostre informações estendidas de um serviço, incluindo configuração do balanceador de carga, implantações ativas, variáveis de ambiente e segredos.
As implantações mostram versões ativas do seu serviço em execução. Várias implantações serão mostradas se um serviço estiver em transição devido a uma implantação ou atualização de configuração, como CPU, memória ou variáveis de ambiente.
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
Mostrar logs de tarefas em um serviço
Retorne um segmento específico de logs de serviço ou logs finais em tempo real usando a opção --follow. Os logs são prefixados pelo nome do fluxo de logs, que está no formato "fargate/<service-name>/<task-id>".
Follow continuará a ser executado e retornará logs até ser interrompido por Control-C. Se --follow for passado --end não pode ser especificado.
Os logs podem ser retornados para tarefas específicas dentro de um serviço, passando um ID de tarefa por meio do sinalizador --task. Passe --task com um ID de tarefa várias vezes para recuperar logs de várias tarefas específicas.
Uma janela específica de logs pode ser solicitada passando as opções --start e --end com uma expressão de tempo. A expressão de tempo pode ser uma duração ou um carimbo de data/hora:
Você pode filtrar logs para termos específicos passando uma expressão de filtro por meio do sinalizador --filter. Passe um único termo para pesquisar esse termo, passe vários termos para pesquisar mensagens de log que incluam todos os termos. Consulte a documentação do CloudWatch Logs para obter mais detalhes.
--time inclui o carimbo de data/hora do log na saída
--no-prefix exclui o prefixo do fluxo de log da saída
fargate service ps
Listar tarefas em execução para um serviço
fargate service scale <scale-expression>
Dimensionar o número de tarefas em um serviço
Altera o número de tarefas desejadas a serem executadas em um serviço pela expressão de escala fornecida. Uma expressão de escala pode ser um número absoluto ou um delta especificado com um sinal como +5 ou -2.
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
Definir variáveis e segredos de ambiente
Pelo menos uma variável de ambiente ou segredo deve ser especificado por meio dos sinalizadores --env, --file, --secret ou --secret-file. Você pode especificar qualquer número de variáveis na linha de comando repetindo --env antes de cada uma, ou então colocar múltiplas variáveis em um arquivo de texto, uma por linha, e especificar o nome do arquivo com --file e/ou --secret-file .
Cada string ou linha de parâmetro --env e --secret no arquivo deve ter o formato "key=value", sem aspas e sem espaços em branco ao redor de "=", a menos que você queira espaços em branco iniciais literais no valor. Além disso, o lado "chave" deve ser um identificador de shell legal, o que significa que deve começar com uma letra ASCII AZ ou sublinhado e consistir apenas em letras, dígitos e sublinhados.
O "valor" em "key=value" para cada sinalizador --secret deve fazer referência ao ARN do segredo do AWS Secrets Manager ou do parâmetro AWS Systems Manager Parameter Store.
fargate service env unset --key <key-name>
Desdefinir variáveis de ambiente e segredos
Desativa a variável de ambiente ou segredo especificado por meio do sinalizador --key. Especifique --key com um nome de chave várias vezes para remover a definição de múltiplas variáveis.
fargate service env list
Mostrar variáveis de ambiente
Bandeira | Curto | Padrão | Descrição |
---|---|---|---|
--CPU | Quantidade de unidades de CPU a serem alocadas para cada tarefa | ||
--memória | -m | Quantidade de MiB a ser alocada para cada tarefa |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
Atualizar configuração do serviço
As configurações de CPU e memória são especificadas como unidades de CPU e mebibytes, respectivamente, usando os sinalizadores --cpu e --memory. Cada 1.024 unidades de CPU equivalem a uma única vCPU. O AWS Fargate oferece suporte apenas a determinadas combinações de configurações de CPU e memória:
CPU (unidades de CPU) | Memória (MiB) |
---|---|
256 | 512, 1024 ou 2048 |
512 | 1.024 a 4.096 em incrementos de 1 GiB |
1024 | 2048 a 8192 em incrementos de 1GiB |
2048 | 4096 a 16384 em incrementos de 1GiB |
4096 | 8192 a 30720 em incrementos de 1GiB |
Pelo menos um entre --cpu ou --memory deve ser especificado.
fargate service restart
Reiniciar serviço
Cria um novo conjunto de tarefas para o serviço e interrompe as tarefas anteriores. Isto é útil se o seu serviço precisar recarregar dados armazenados em cache de uma fonte externa, por exemplo.
Bandeira | Curto | Padrão | Descrição |
---|---|---|---|
--tarefa | -t | Família de definição de tarefas |
As tarefas são execuções únicas do seu contêiner. As instâncias da sua tarefa são executadas até que você as interrompa manualmente por meio das APIs da AWS, do AWS Management Console ou até que sejam interrompidas por qualquer 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 uma nova definição de tarefa para a imagem do Docker, variáveis de ambiente ou segredos especificados com base na revisão mais recente da família de tarefas e retorna o novo número de revisão.
A imagem do contêiner Docker a ser usada na nova definição de tarefa pode ser especificada por meio do sinalizador --image.
As variáveis de ambiente podem ser especificadas usando um ou vários sinalizadores --env
ou o sinalizador --env-file
.
Os segredos podem ser especificados usando um ou vários sinalizadores --secret
ou o sinalizador --secret-file
.
fargate task register [--file docker-compose.yml]
Registra uma nova definição de tarefa usando a imagem, variáveis de ambiente e segredos definidos em um arquivo docker compose. Observe que as variáveis de ambiente são substituídas pelo que está no arquivo de composição.
Os segredos podem ser definidos como pares de valores-chave no campo de extensão de arquivo docker compose x-fargate-secrets
. Para usar campos de extensão, a versão do arquivo de composição deve ser pelo menos 2.4
para a série 2.x ou pelo menos 3.7
para a série 3.x.
Se o arquivo docker compose definir mais de um contêiner, você poderá usar o rótulo aws.ecs.fargate.deploy: 1
para indicar qual contêiner você gostaria de implantar.
fargate task describe
O comando description descreve uma definição de tarefa no formato Docker Compose. A imagem Docker, variáveis de ambiente, segredos e porta de destino são os elementos mapeados.
Este comando pode ser útil para observar alterações feitas pelos comandos task register
, service deploy
ou service env set
. Também pode ser útil para executar uma definição de tarefa localmente para fins de depuração ou solução de problemas.
fargate task describe -t my-app > docker-compose.yml
docker-compose up
Você pode especificar a família de definição de tarefa usando um arquivo fargate.yml
, o envvar FARGATE_TASK
ou usando o sinalizador -t
, incluindo um número de revisão opcional.
fargate task describe -t my-app
fargate task describe -t my-app:42
Exemplo de saída:
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 tarefas
Assume um grupo de logs do Cloudwatch com a seguinte convenção: fargate/task/<task>
onde task
é especificada por meio de --task
ou fargate.yml ou opções de variáveis de ambiente
Retorne um segmento específico de logs de tarefas ou logs finais em tempo real usando a opção --follow. Os logs são prefixados pelo nome do fluxo de logs, que está no formato fargate/<container-name>/<task-id>.
--container-name
permite que você especifique o contêiner dentro da definição da tarefa para obter logs (o padrão é app
)
Follow continuará a ser executado e retornará logs até ser interrompido por Control-C. Se --follow
for passado --end
não pode ser especificado.
Os logs podem ser retornados para tarefas específicas passando um ID de tarefa por meio do sinalizador --task
. Passe --task
com um ID de tarefa várias vezes para recuperar logs de várias tarefas específicas.
Uma janela específica de logs pode ser solicitada passando as opções --start
e --end
com uma expressão de tempo. A expressão de tempo pode ser uma duração ou um carimbo de data/hora:
Você pode filtrar logs para termos específicos passando uma expressão de filtro por meio do sinalizador --filter
. Passe um único termo para pesquisar esse termo, passe vários termos para pesquisar mensagens de log que incluam todos os termos.
--time
inclui o carimbo de data/hora do log na saída
--no-prefix
exclui o prefixo do fluxo de log da saída
Bandeira | Curto | Padrão | Descrição |
---|---|---|---|
--regra | -r | Regra de eventos do CloudWatch |
O comando events
fornece subcomandos para trabalhar com eventos do CloudWatch (tarefas agendadas, etc.)
fargate events target --revision <revision>
"Implanta" (faz com que a próxima invocação de regra de evento execute a nova versão) uma revisão de definição de tarefa em uma regra de evento do CloudWatch atualizando o EcsParameters.TaskDefinitionArn
do destino da regra.
Um sistema CI/CD típico pode fazer 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}