CLI do agendador
A interface de linha de comandos (CLI) do Agendador de instâncias na AWS permite que você configure agendamentos e períodos e estime a economia de custos para um determinado agendamento.
Pré-requisitos
A CLI nesta solução requer o Python 3.8+ e a versão mais recente do boto3.
Credenciais
Para usar a CLI do agendador, você deve ter credenciais para a AWS CLI. Para obter mais informações, consulte Configurações de arquivo de configuração e credenciais no Guia de usuário da AWS CLI.
Suas credenciais devem ter as seguintes permissões:
-
lambda:InvokeFunction- para invocar a função InstanceSchedulerMain na pilha do agendador e atualizar as informações de agendamento e período no banco de dados de configuração do agendador na linha de comandos -
cloudformation:DescribeStackResource- para recuperar o ID do recurso físico da função do AWS Lambda da pilha para lidar com a solicitação da CLI
As solicitações feitas pela CLI do agendador e as respostas são registradas no fluxo de logs AdminCliRequestHandler-yyyymmdd.
nota
Se você especificar um perfil usando o argumento profile-name, o perfil especificado deverá ter essas permissões. Para obter mais informações sobre o argumento profile-name, consulte Argumentos comuns.
Instalar a CLI do agendador
-
Baixe
o pacote da CLI do agendador (instance_scheduler_cli.zip) e coloque-o em um diretório no computador. Importante
A instalação falhará se você não colocar os arquivos em seu próprio diretório e, em seguida, instalá-los desse diretório.
-
Descompacte o arquivo zip em seu próprio diretório (instance_scheduler_cli).
-
Do mesmo diretório em que você colocou o pacote da CLI descompactado, instale o scheduler-cli em seu ambiente:
nota
O Scheduler-CLI requer Python 3.8 ou superior e as versões mais recentes de pip e boto3. Se você não tiver tudo isso instalado na máquina local, consulte a documentação oficial do pip
para obter instruções de instalação antes de tentar instalar o Scheduler-CLI. pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
-
Verifique se a instalação foi bem-sucedida com:
scheduler-cli --help
nota
Se preferir, será possível instalar um sdist da CLI
Estrutura do comando
A CLI do agendador usa uma estrutura de várias partes na linha de comando. A próxima parte especifica o script do python da CLI do agendador. A CLI do agendador tem comandos que especificam as operações a serem executadas em períodos e agendamentos. Os argumentos específicos para uma operação podem ser especificados na linha de comando em qualquer ordem.
scheduler-cli <command> <arguments>
Argumentos comuns
A CLI do agendador tem suporte para os seguintes argumentos que todos os comandos podem usar:
| Argumento | Descrição |
|---|---|
|
|
O nome da pilha do agendador. Importante: esse argumento é obrigatório para todos os comandos. |
|
|
O nome da região em que a pilha do agendador é implantada. Observação: você deve usar esse argumento quando a configuração padrão e os arquivos de credenciais não estão instalados na mesma região da pilha de soluções. |
|
|
O nome do perfil a ser usado para executar comandos. Se nenhum nome de perfil for especificado, o perfil padrão será usado. |
|
|
Uma expressão JMESPath que controla a saída do comando. Para obter mais informações sobre o controle de saída, consulte Controlar a saída do comando da AWS Command Line Interface no Guia do usuário da AWS CLI. |
|
|
Mostra comandos e argumentos válidos para a CLI do agendador. Quando usado com um comando específico, mostra subcomandos e argumentos válidos para esse comando. |
|
|
Mostra o número da versão da CLI do agendador. |
Comandos disponíveis
create-period
Descrição
Cria um período. Um período deve conter pelo menos um dos seguintes itens: begintime, endtime, weekdays, months ou monthdays.
Argumentos
-
--name -
-
O nome do período
Tipo: String
Obrigatório: Sim
-
-
--description -
-
Uma descrição do período
Tipo: String
Obrigatório: Não
-
-
--begintime -
-
O horário que o período de execução é iniciado. Se
begintimeeendtimenão forem especificados, o período de execução será das 00:00 às 23:59.Tipo: String
Restrições: formato
H:MMouHH:MMObrigatório: Não
-
-
--endtime -
-
O horário que o período de execução é interrompido. Se
begintimeeendtimenão forem especificados, o período de execução será das 00:00 às 23:59.Tipo: String
Restrições: formato
H:MMouHH:MMObrigatório: Não
-
-
--weekdays -
-
Os dias da semana do período
Tipo: String
Restrições: lista delimitada por vírgula de nomes de dia abreviados (seg) ou números (0). Use o meia-risca (–) para especificar um intervalo. Use a barra (/) para especificar cada n^º^ dia da semana.
Obrigatório: Não
-
-
--months -
-
Os meses do período
Tipo: String
Restrições: lista delimitada por vírgula de nomes de mês abreviados (jan) ou números (1). Use o meia-risca (–) para especificar um intervalo. Use a barra (/) para especificar a cada n^º^ mês.
Obrigatório: Não
-
-
--monthdays -
-
Os dias do mês do período
Tipo: String
Restrições: lista delimitada por vírgula de nomes de mês abreviados (jan) ou números (1). Use o meia-risca (–) para especificar um intervalo. Use a barra (/) para especificar cada n^º^ dia do mês.
Obrigatório: Não
-
Exemplo
$ scheduler-cli create-period --name "weekdays" --begintime 09:00 --endtime 18:00 --weekdays mon-fri --stack Scheduler { "Period": { "Name": "weekdays", "Endtime": "18:00", "Type": "period", "Begintime": "09:00", "Weekdays": [ "mon-fri" ] } }
create-schedule
Descrição
Cria um agendamento.
Argumentos
-
--name -
-
O nome do agendamento
Tipo: String
Obrigatório: Sim
-
-
--description -
-
Uma descrição do agendamento
Tipo: String
Obrigatório: Não
-
-
--enforced -
-
Impõe o estado agendado para a instância
Obrigatório: Não
-
-
--use-metrics -
-
Coleta métricas do Amazon CloudWatch
Obrigatório: Não
-
-
--periods -
-
Uma lista dos períodos de execução do agendamento. Se vários períodos forem especificados, a solução iniciará uma instância se um dos períodos for avaliado como
true.Tipo: String
Restrições: lista delimitada por vírgula de períodos. Use
<period-name>@[replaceable]<instance type>para especificar um tipo de instância para um período. Por exemplo,weekdays@t2.large.Obrigatório: Sim
-
-
--retain-running -
-
Impede que uma instância seja interrompida pela solução no final de um período de execução, se a instância tiver sido iniciada manualmente antes do início do período.
Obrigatório: Não
-
-
--ssm-maintenance-window -
-
Adiciona uma janela de manutenção do AWS Systems Manager como um período de execução a um agendamento de instâncias do Amazon EC2.
Tipo: String
Obrigatório: Não
-
-
--do-not-stop-new-instances -
-
Não interrompa uma instância na primeira vez em que ela for marcada se estiver sendo executada fora de um período de execução.
Obrigatório: Não
-
-
--timezone -
-
O fuso horário a ser usado no agendamento.
Tipo: matriz de strings
Obrigatório: Não (se esse argumento não for usado, o fuso horário padrão da pilha de soluções principal será usado).
-
-
--use-maintenance-window -
-
Adiciona uma janela de manutenção do Amazon RDS como período de execução a um agendamento de instância do Amazon RDS ou uma janela de manutenção do AWS Systems Manager como período de execução a um agendamento de instância do Amazon EC2.
Tipo: true/false
Obrigatório: Não (padrão: true)
-
Exemplo
$ scheduler-cli create-schedule --name LondonOfficeHours --periods weekdays,weekends --timezone Europe/London --stack Scheduler { "Schedule": { "Enforced": false, "Name": "LondonOfficeHours", "StopNewInstances": true, "Periods": [ "weekends", "weekdays" ], "Timezone": "Europe/London", "Type": "schedule" } }
delete-period
-
--name -
-
O nome do período aplicável
Tipo: String
Obrigatório: Sim
-
Importante
Se o período for usado em agendamentos existentes, você deverá removê-lo desses agendamentos antes de excluí-lo.
Exemplo
$ scheduler-cli delete-period --name weekdays --stack Scheduler
{
"Period": "weekdays"
}
delete-schedule
Descrição
Exclui um agendamento existente.
Argumentos
-
--name -
-
O nome do agendamento aplicável
Tipo: String
Obrigatório: Sim
-
Exemplo
$ scheduler-cli delete-schedule --name LondonOfficeHours --stack Scheduler
{
"Schedule": "LondonOfficeHours"
}
describe-periods
Descrição
Lista os períodos configurados para a pilha do Agendador de instâncias.
Argumentos
-
--name -
-
O nome de um período específico que você deseja descrever.
Tipo: String
Obrigatório: Não
-
Exemplo
$ scheduler-cli describe-periods --stack Scheduler { "Periods": [ { "Name": "first-monday-in-quarter", "Months": [ "jan/3" ], "Type": "period", "Weekdays": [ "mon#1" ], "Description": "Every first Monday of each quarter" }, { "Description": "Office hours", "Weekdays": [ "mon-fri" ], "Begintime": "09:00", "Endtime": "17:00", "Type": "period", "Name": "office-hours" }, { "Name": "weekdays", "Endtime": "18:00", "Type": "period", "Weekdays": [ "mon-fri" ], "Begintime": "09:00" }, { "Name": "weekends", "Type": "period", "Weekdays": [ "sat-sun" ], "Description": "Days in weekend" } ] }
describe-schedules
Descrição
Lista os agendamentos configurados para a pilha do Agendador de instâncias.
Argumentos
-
--name -
-
O nome de um agendamento específico que você deseja descrever.
Tipo: String
Obrigatório: Não
-
Exemplo
$ scheduler-cli describe-schedules --stack Scheduler { "Schedules": [ { "OverrideStatus": "running", "Type": "schedule", "Name": "Running", "UseMetrics": false }, { "Timezone": "UTC", "Type": "schedule", "Periods": [ "working-days@t2.micro", "weekends@t2.nano" ], "Name": "scale-up-down" }, { "Timezone": "US/Pacific", "Type": "schedule", "Periods": [ "office-hours" ], "Name": "seattle-office-hours" }, { "OverrideStatus": "stopped", "Type": "schedule", "Name": "stopped", "UseMetrics": true } ] }
describe-schedule-usage
Descrição
Lista todos os períodos em execução dentro de um agendamento e calcula as horas de cobrança das instâncias. Use esse comando para simular um agendamento para calcular possíveis economias e períodos de execução após criar ou atualizar um agendamento.
Argumentos
-
--name -
-
O nome do agendamento aplicável
Tipo: String
Obrigatório: Sim
-
-
--startdate -
-
A data de início do período usado para o cálculo. A data padrão é a data atual.
Tipo: String
Obrigatório: Não
-
-
--enddate -
-
A data de término do período usado para o cálculo. A data padrão é a data atual.
Tipo: String
Obrigatório: Não
-
Exemplo
$ scheduler-cli describe-schedule-usage --stack InstanceScheduler --name seattle-office-hours { "Usage": { "2017-12-04": { "BillingHours": 8, "RunningPeriods": { "Office-hours": { "Begin": "12/04/17 09:00:00", "End": "12/04/17 17:00:00", "BillingHours": 8, "BillingSeconds": 28800 } }, "BillingSeconds": 28800 } }, "Schedule": "seattle-office-hours"
update-period
Descrição
Atualiza um período existente.
Argumentos
O comando update-period é compatível com os mesmos argumentos do comando create-period. Para obter mais informações sobre os argumentos, consulte o comando create-period.
Importante
Se você não especificar um argumento, esse argumento será removido do período.
update-schedule
Descrição
Atualiza um agendamento existente.
Argumentos
O comando update-schedule é compatível com os mesmos argumentos do comando create-schedule. Para obter mais informações sobre os argumentos, consulte o comando create-schedule.
Importante
Se você não especificar um argumento, esse argumento será removido do agendamento.
help
Descrição
Exibe uma lista de comandos e argumentos válidos para a CLI do agendador.
Exemplo
$ scheduler-cli --help
usage: scheduler-cli [-h] [--version]
{create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
...
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
subcommands:
Valid subcommands
{create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
Commands help
create-period Creates a period
create-schedule Creates a schedule
delete-period Deletes a period
delete-schedule Deletes a schedule
describe-periods Describes configured periods
describe-schedule-usage
Calculates periods and billing hours in which
instances are running
describe-schedules Described configured schedules
update-period Updates a period
update-schedule Updates a schedule
Quando usado com um comando específico, o argumento --help mostra subcomandos e argumentos válidos para esse comando.
Exemplo de comando específico
$ scheduler-cli describe-schedules --help
usage: scheduler-cli describe-schedules [-h] [--name NAME] [--query QUERY]
[--region REGION] --stack STACK
optional arguments:
-h, --help show this help message and exit
--name NAME Name of the schedule
--query QUERY JMESPath query to transform or filter the result
--region REGION Region in which the Instance Scheduler stack is
deployed
--stack STACK, -s STACK
Name of the Instance Scheduler stack