

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 name="scheduler-cli-4"></a>

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 name="prerequisites"></a>

A CLI nesta solução requer o Python 3.8\$1 e a versão mais recente do boto3.

## Credenciais
<a name="credentials"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html) 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](#common-arguments).

## Instalar a CLI do agendador
<a name="install-the-scheduler-cli"></a>

1.  [Baixe](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli.zip) o pacote da CLI do agendador ** *(instance\$1scheduler\$1cli.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.

1. Descompacte o arquivo zip em seu próprio diretório (instance\$1scheduler\$1cli).

1. 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](https://pip.pypa.io/en/stable/getting-started/) 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
   ```

1. Verifique se a instalação foi bem-sucedida com:

   ```
   scheduler-cli --help
   ```

**nota**  
Se preferir, será possível instalar um [sdist da CLI](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli-3.0.0.tar.gz) usando o mesmo processo descrito anteriormente.

## Estrutura do comando
<a name="command-structure"></a>

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 name="common-arguments"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html) 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
<a name="available-commands"></a>
+  [create-period](#create-period) 
+  [create-schedule](#create-schedule) 
+  [delete-period](#delete-period) 
+  [delete-schedule](#delete-schedule) 
+  [describe-periods](#describe-periods) 
+  [describe-schedules](#describe-schedules) 
+  [describe-schedule-usage](#describe-schedule-usage) 
+  [update-period](#update-period) 
+  [update-schedule](#update-schedule) 
+  [help](#help) 

## create-period
<a name="create-period"></a>

### Description
<a name="create-period-description"></a>

Cria um período. Um período deve conter pelo menos um dos seguintes itens: `begintime`, `endtime`, `weekdays`, `months` ou `monthdays`.

### Argumentos
<a name="create-period-arguments"></a>

 `--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
<a name="create-period-example"></a>

```
$ 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
<a name="create-schedule"></a>

### Description
<a name="create-schedule-description"></a>

Cria um agendamento.

### Argumentos
<a name="create-schedule-arguments"></a>

 `--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
<a name="create-schedule-example"></a>

```
$ 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
<a name="delete-period"></a>

 `--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
<a name="delete-schedule"></a>

### Description
<a name="delete-schedule-description"></a>

Exclui um agendamento existente.

### Argumentos
<a name="delete-schedule-arguments"></a>

 `--name`   
+ O nome do agendamento aplicável

  Tipo: String

  Obrigatório: Sim

### Exemplo
<a name="delete-schedule-example"></a>

```
$ scheduler-cli delete-schedule --name LondonOfficeHours --stack Scheduler
{
   "Schedule": "LondonOfficeHours"
}
```

## describe-periods
<a name="describe-periods"></a>

### Description
<a name="describe-periods-description"></a>

Lista os períodos configurados para a pilha do Agendador de instâncias.

### Argumentos
<a name="describe-periods-arguments"></a>

 `--name`   
+ O nome de um período específico que você deseja descrever.

  Tipo: string

  Obrigatório: não

### Exemplo
<a name="describe-periods-example"></a>

```
$ 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
<a name="describe-schedules"></a>

### Description
<a name="describe-schedules-description"></a>

Lista os agendamentos configurados para a pilha do Agendador de instâncias.

### Argumentos
<a name="describe-schedules-arguments"></a>

 `--name`   
+ O nome de um agendamento específico que você deseja descrever.

  Tipo: string

  Obrigatório: não

### Exemplo
<a name="describe-schedules-example"></a>

```
$ 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
<a name="describe-schedule-usage"></a>

### Description
<a name="describe-schedule-usage-description"></a>

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
<a name="describe-schedule-usage-arguments"></a>

 `--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
<a name="describe-schedule-usage-example"></a>

```
$ 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
<a name="update-period"></a>

### Description
<a name="update-period-description"></a>

Atualiza um período existente.

### Argumentos
<a name="update-period-arguments"></a>

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](#create-period).

**Importante**  
Se você não especificar um argumento, esse argumento será removido do período.

## update-schedule
<a name="update-schedule"></a>

### Description
<a name="update-schedule-description"></a>

Atualiza um agendamento existente.

### Argumentos
<a name="update-schedule-arguments"></a>

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](#create-schedule).

**Importante**  
Se você não especificar um argumento, esse argumento será removido do agendamento.

## help
<a name="help"></a>

### Description
<a name="help-description"></a>

Exibe uma lista de comandos e argumentos válidos para a CLI do agendador.

### Exemplo
<a name="help-example"></a>

```
$ 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
<a name="help-example-specific-command"></a>

```
$ 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
```