

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# CLI del programador
<a name="scheduler-cli-4"></a>

La interfaz de la línea de comandos (CLI) del programador de instancias de AWS permite configurar programaciones y períodos, así como estimar el ahorro de costos para una programación determinada.

## Requisitos previos
<a name="prerequisites"></a>

La CLI de esta solución requiere Python 3.8 o versiones posteriores y la última versión de boto3.

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

Para usar la CLI del programador, debe tener credenciales para la CLI de AWS. Para obtener más información, consulte [Opciones de los archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html) de la *Guía del usuario de AWS CLI*.

Sus credenciales deben tener los siguientes permisos:
+  `lambda:InvokeFunction`- Para invocar la InstanceSchedulerMain función en la pila de planificadores y actualizar la información de programación y período en la base de datos de configuración del programador desde la línea de comandos
+  `cloudformation:DescribeStackResource`: para recuperar el ID de recurso físico de la función de AWS Lambda de la pila a fin de controlar la solicitud de la CLI

Las solicitudes realizadas por la CLI del programador y las respuestas se registran en el flujo de registro `AdminCliRequestHandler-yyyymmdd`.

**nota**  
Si especifica un perfil mediante el argumento profile-name, el perfil que especifique debe tener estos permisos. Para obtener más información sobre el argumento profile-name, consulte [Argumentos comunes](#common-arguments).

## Instalación de la CLI del programador
<a name="install-the-scheduler-cli"></a>

1.  [Descargue](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli.zip) el paquete de la CLI del programador ** *(instance\$1scheduler\$1cli.zip)* ** y colóquelo en un directorio de su computadora.
**importante**  
Si no coloca los archivos en su propio directorio y, después, los instala desde este, se producirá un error en la instalación.

1. Descomprima el archivo zip en su propio directorio (instance\$1scheduler\$1cli).

1. En el mismo directorio en el que colocó el paquete de la CLI descomprimido, instale scheduler-cli en su entorno:
**nota**  
Scheduler-CLI requiere Python 3.8 o una versión posterior y las últimas versiones de pip y boto3. Si no tiene todos estos componentes instalados en su máquina local, consulte la [documentación oficial de pip](https://pip.pypa.io/en/stable/getting-started/) para obtener instrucciones de instalación antes de intentar instalar Scheduler-CLI.

   ```
   pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
   ```

1. Compruebe que la instalación se ha realizado correctamente con:

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

**nota**  
Si lo prefiere, se puede instalar un [archivo de distribución de código fuente (sdist) de la CLI](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance_scheduler_cli-3.0.0.tar.gz) mediante el mismo proceso descrito anteriormente.

## Estructura de comandos
<a name="command-structure"></a>

La CLI del programador usa una estructura multiparte en la línea de comandos. En la parte siguiente se especifica el script de Python de la CLI del programador. La CLI del programador tiene comandos que especifican las operaciones que se deben realizar en los períodos y las programaciones. Los argumentos específicos de una operación se pueden especificar en la línea de comandos en cualquier orden.

```
scheduler-cli <command> <arguments>
```

## Argumentos comunes
<a name="common-arguments"></a>

La CLI del programador admite los siguientes argumentos que pueden usar todos los comandos:


| Argumento | Description (Descripción) | 
| --- | --- | 
|   `--stack [replaceable]<stackname>`   |  Nombre de la pila del programador.  **Importante:** Este argumento es obligatorio para todos los comandos.  | 
|   `--region [replaceable]<regionname>`   |  Nombre de la región en la que se implementa la pila del programador.  **Nota:** Debe usar este argumento cuando los archivos de configuración y credenciales predeterminados no estén instalados en la misma región que la pila de soluciones.  | 
|   `--profile-name [replaceable] <profilename>`   |  Nombre del perfil que se utilizará para ejecutar comandos. Si no se especifica ningún nombre de perfil, se utiliza el perfil predeterminado.  | 
|   `--query`   |   JMESPath Expresión que controla el resultado del comando. Para obtener más información sobre cómo controlar la salida, consulte [Control de la salida de comandos en la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html) de la *Guía del usuario de AWS CLI*.  | 
|   `--help`   |  Muestra comandos y argumentos válidos para la CLI del programador. Cuando se usa con un comando específico, muestra subcomandos y argumentos válidos para ese comando.  | 
|   `--version`   |  Muestra el número de versión de la CLI del programador.  | 

## Comandos disponibles
<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 (Descripción)
<a name="create-period-description"></a>

Crea un período. Un período debe contener al menos uno de los siguientes elementos: `begintime`, `endtime`, `weekdays`, `months` o `monthdays`.

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

 `--name`   
+ Nombre del período

  Tipo: cadena

  Obligatorio: sí

 `--description`   
+ Descripción del período

  Tipo: cadena

  Requerido: no

 `--begintime`   
+ Hora de inicio del período de ejecución. Si no se especifican `begintime` y `endtime`, el período de ejecución es de 0:00 h a 23:59 h.

  Tipo: cadena

  Restricciones: formato `H:MM` o `HH:MM`

  Obligatorio: no

 `--endtime`   
+ Hora de detención del período de ejecución. Si no se especifican `begintime` y `endtime`, el período de ejecución es de 0:00 h a 23:59 h.

  Tipo: cadena

  Restricciones: formato `H:MM` o `HH:MM`

  Obligatorio: no

 `--weekdays`   
+ Días de la semana correspondientes al período

  Tipo: cadena

  Restricciones: lista delimitada por comas de nombres de días abreviados (lun.) o números (0). Utilice - para especificar un intervalo. Utilice / para especificar cada día X de la semana.

  Obligatorio: no

 `--months`   
+ Meses del período

  Tipo: cadena

  Restricciones: lista delimitada por comas de nombres de meses abreviados (en.) o números (1). Utilice - para especificar un intervalo. Utilice / para especificar cada mes X.

  Obligatorio: no

 `--monthdays`   
+ Días del mes correspondientes al período

  Tipo: cadena

  Restricciones: lista delimitada por comas de nombres de meses abreviados (en.) o números (1). Utilice - para especificar un intervalo. Utilice / para especificar cada día X del mes.

  Obligatorio: no

### Ejemplo
<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 (Descripción)
<a name="create-schedule-description"></a>

Crea una programación.

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

 `--name`   
+ Nombre de la programación

  Tipo: cadena

  Obligatorio: sí

 `--description`   
+ Descripción de la programación

  Tipo: cadena

  Requerido: no

 `--enforced`   
+ Aplica el estado programado para la instancia

  Obligatorio: no

 `--use-metrics`   
+ Recopila CloudWatch las métricas de Amazon

  Obligatorio: no

 `--periods`   
+ Lista de períodos de ejecución de la programación. Si se especifican varios períodos, la solución iniciará una instancia si uno de los períodos se evalúa como `true`.

  Tipo: cadena

  Restricciones: lista delimitada por comas de períodos. Utilice `<period-name>@[replaceable]<instance type>` a fin de especificar un tipo de instancia para un período. Por ejemplo, `weekdays@t2.large`.

  Obligatorio: sí

 `--retain-running`   
+ Impide que la solución detenga una instancia al final de un período de ejecución si la instancia se inició de forma manual antes de comenzar el período.

  Obligatorio: no

 `--ssm-maintenance-window`   
+ Agrega una ventana de mantenimiento de AWS Systems Manager como período de ejecución a una programación de instancias de Amazon EC2.

  Tipo: cadena

  Requerido: no

 `--do-not-stop-new-instances`   
+ No detenga una instancia la primera vez que se etiquete si se ejecuta fuera de un período de ejecución

  Obligatorio: no

 `--timezone`   
+ Zona horaria que la programación utilizará

  Tipo: matriz de cadenas

  Obligatorio: No (si no se usa este argumento, se utilizará la zona horaria predeterminada de la pila de soluciones principal).

 `--use-maintenance-window`   
+ Agrega una ventana de mantenimiento de Amazon RDS como período de ejecución a una programación de instancias de Amazon RDS, o bien una ventana de mantenimiento de AWS Systems Manager como período de ejecución a una programación de instancias de Amazon EC2.

  Tipo: verdadero o falso

  Obligatorio: No (el valor predeterminado es true)

### Ejemplo
<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`   
+ Nombre del período aplicable

  Tipo: cadena

  Obligatorio: sí

**importante**  
Si el período se utiliza en las programaciones existentes, debe eliminarlo de dichas programaciones *antes* de eliminarlo.

 **Ejemplo** 

```
$ scheduler-cli delete-period --name weekdays --stack Scheduler
{
   "Period": "weekdays"
}
```

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

### Description (Descripción)
<a name="delete-schedule-description"></a>

Elimina una programación existente

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

 `--name`   
+ Nombre de la programación aplicable

  Tipo: cadena

  Obligatorio: sí

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

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

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

### Description (Descripción)
<a name="describe-periods-description"></a>

Enumera los períodos configurados para la pila del programador de instancias

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

 `--name`   
+ Nombre de un período específico que desea que se describa

  Tipo: cadena

  Requerido: no

### Ejemplo
<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 (Descripción)
<a name="describe-schedules-description"></a>

Enumera las programaciones configuradas para la pila del programador de instancias.

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

 `--name`   
+ Nombre de una programación específica que desea que se describa

  Tipo: cadena

  Requerido: no

### Ejemplo
<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 (Descripción)
<a name="describe-schedule-usage-description"></a>

Enumera todos los períodos que se ejecutan en una programación y calcula las horas de facturación correspondientes a las instancias. Utilice este comando a fin de simular una programación para calcular los posibles ahorros y los períodos de ejecución después de crear o actualizar una programación.

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

 `--name`   
+ Nombre de la programación aplicable

  Tipo: cadena

  Obligatorio: sí

 `--startdate`   
+ Fecha de inicio del período utilizado para el cálculo. La fecha predeterminada es la fecha actual.

  Tipo: cadena

  Requerido: no

 `--enddate`   
+ Fecha de finalización del período utilizado para el cálculo. La fecha predeterminada es la fecha actual.

  Tipo: cadena

  Requerido: no

### Ejemplo
<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 (Descripción)
<a name="update-period-description"></a>

Actualiza un período existente

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

El comando `update-period` admite los mismos argumentos que el comando `create-period`. Para obtener más información sobre los argumentos, consulte el [comando de creación de períodos](#create-period).

**importante**  
Si no especifica un argumento, ese argumento se eliminará del período.

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

### Description (Descripción)
<a name="update-schedule-description"></a>

Actualiza una programación existente

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

El comando `update-schedule` admite los mismos argumentos que el comando `create-schedule`. Para obtener más información sobre los argumentos, consulte el [comando de creación de programaciones](#create-schedule).

**importante**  
Si no especifica un argumento, ese argumento se eliminará de la programación.

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

### Description (Descripción)
<a name="help-description"></a>

Muestra una lista de comandos y argumentos válidos para la CLI del programador.

### Ejemplo
<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
```

Cuando se usa con un comando específico, el argumento `--help` muestra subcomandos y argumentos válidos para a ese comando.

### Ejemplo 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
```