CLI do agendador - Agendador de instâncias na AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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 InstanceSchedulerMain função na pilha do agendador e atualizar as informações do cronograma e do período no banco de dados de configuração do agendador a partir da linha de comando

  • 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

  1. 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.

  2. Descompacte o arquivo zip em seu próprio diretório (instance_scheduler_cli).

  3. 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
  4. Verifique se a instalação foi bem-sucedida com:

    scheduler-cli --help
nota

Se preferir, será possível instalar um sdist da CLI usando o mesmo processo descrito anteriormente.

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 Description

--stack [replaceable]<stackname>

O nome da pilha do agendador.

Importante: esse argumento é obrigatório para todos os comandos.

--region [replaceable]<regionname>

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.

--profile-name [replaceable] <profilename>

O nome do perfil a ser usado para executar comandos. Se nenhum nome de perfil for especificado, o perfil padrão será usado.

--query

Uma JMESPath expressão 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.

--help

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.

--version

Mostra o número da versão da CLI do agendador.

Comandos disponíveis

create-period

Description

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 begintime e endtime não forem especificados, o período de execução será das 00:00 às 23:59.

    Tipo: string

    Restrições: formato H:MM ou HH:MM

    Obrigatório: não

--endtime
  • O horário que o período de execução é interrompido. Se begintime e endtime não forem especificados, o período de execução será das 00:00 às 23:59.

    Tipo: string

    Restrições: formato H:MM ou HH:MM

    Obrigató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

Description

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
  • Colete CloudWatch métricas da Amazon

    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

Description

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

Description

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

Description

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

Description

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

Description

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

Description

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

Description

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