CLI dell'utilità di pianificazione - Instance Scheduler su AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CLI dell'utilità di pianificazione

L'Instance Scheduler sull'interfaccia a riga di comando (CLI) di AWS consente di configurare pianificazioni e periodi e stimare i risparmi sui costi per una determinata pianificazione.

Prerequisiti

La CLI di questa soluzione richiede Python 3.8+ e l'ultima versione di boto3.

Credenziali

Per utilizzare l'interfaccia a riga di comando dello scheduler, devi disporre delle credenziali per l'interfaccia a riga di comando di AWS. Per ulteriori informazioni, consulta le impostazioni dei file di configurazione e credenziali nella AWS CLI User Guide.

Le tue credenziali devono avere le seguenti autorizzazioni:

  • lambda:InvokeFunction- Per richiamare la InstanceSchedulerMain funzione nello stack dello scheduler e per aggiornare le informazioni sulla pianificazione e sul periodo nel database di configurazione dello scheduler dalla riga di comando

  • cloudformation:DescribeStackResource- Recuperare l'ID della risorsa fisica della funzione AWS Lambda dallo stack per gestire la richiesta CLI

Le richieste e le risposte effettuate dalla CLI dello scheduler vengono registrate nel AdminCliRequestHandler-yyyymmdd flusso di log.

Nota

Se si specifica un profilo utilizzando l'argomento profile-name, il profilo specificato deve disporre di queste autorizzazioni. Per ulteriori informazioni sull'argomento nome-profilo, consultate Common Arguments.

Installare la CLI Scheduler

  1. Scarica il pacchetto CLI dello scheduler (instance_scheduler_cli.zip) e inseriscilo in una directory sul tuo computer.

    Importante

    L'installazione avrà esito negativo se non inserite i file nella relativa directory e quindi li installate da quella directory.

  2. Decomprimi l'archivio zip nella sua directory (instance_scheduler_cli).

  3. Dalla stessa directory in cui hai inserito il pacchetto CLI decompresso, installa scheduler-cli nel tuo ambiente:

    Nota

    Scheduler-CLI richiede Python 3.8 o versioni successive e le ultime versioni di pip e boto3. Se non li hai tutti installati sul tuo computer locale, consulta la documentazione ufficiale di pip per le istruzioni di installazione prima di tentare di installare Scheduler-CLI.

    pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
  4. Verifica che l'installazione sia riuscita con:

    scheduler-cli --help
Nota

Se si preferisce, un sdist della CLI può essere installato utilizzando lo stesso processo di cui sopra.

Struttura dei comandi

La CLI dello scheduler utilizza una struttura multiparte sulla riga di comando. La parte successiva specifica lo script python della CLI dello scheduler. La CLI dello scheduler dispone di comandi che specificano le operazioni da eseguire su periodi e pianificazioni. Gli argomenti specifici per un'operazione possono essere specificati nella riga di comando in qualsiasi ordine.

scheduler-cli <command> <arguments>

Argomenti comuni

La CLI dello scheduler supporta i seguenti argomenti che tutti i comandi possono utilizzare:

Argomento Descrizione

--stack [replaceable]<stackname>

Il nome dello stack di pianificazione.

Importante: questo argomento è obbligatorio per tutti i comandi.

--region [replaceable]<regionname>

Il nome della regione in cui viene distribuito lo stack di pianificazione.

Nota: è necessario utilizzare questo argomento quando i file di configurazione e le credenziali predefiniti non sono installati nella stessa area dello stack di soluzioni.

--profile-name [replaceable] <profilename>

Il nome del profilo da utilizzare per eseguire i comandi. Se non viene specificato alcun nome di profilo, viene utilizzato il profilo predefinito.

--query

Un' JMESPath espressione che controlla l'output del comando. Per ulteriori informazioni sul controllo dell'output, consulta Controlling Command Output from the AWS Command Line Interface nella AWS CLI User Guide.

--help

Mostra comandi e argomenti validi per la CLI dello scheduler. Se utilizzato con un comando specifico, mostra sottocomandi e argomenti validi per quel comando.

--version

Mostra il numero di versione della CLI dello scheduler.

Comandi disponibili

periodo di creazione

Descrizione

Crea un periodo. Un periodo deve contenere almeno uno dei seguenti elementi:begintime, endtimeweekdays,months, omonthdays.

Argomenti

--name
  • Il nome del periodo

    Tipo: stringa

    Campo obbligatorio: sì

--description
  • Una descrizione del periodo

    ▬Tipo: stringa

    Campo obbligatorio: no

--begintime
  • L'ora in cui inizia il periodo corrente. Se begintime e non endtime sono specificati, il periodo di esecuzione è compreso tra 00:00 e 23:59.

    ▬Tipo: stringa

    Vincoli: o formato H:MM HH:MM

    Campo obbligatorio: no

--endtime
  • L'ora in cui si interrompe il periodo di esecuzione. Se begintime e non endtime sono specificati, il periodo di esecuzione è compreso tra 00:00 e 23:59.

    ▬Tipo: stringa

    Vincoli: o formato H:MM HH:MM

    Campo obbligatorio: no

--weekdays
  • I giorni della settimana per il periodo

    ▬Tipo: stringa

    Vincoli: elenco delimitato da virgole di nomi abbreviati di giorni (mon) o numeri (0). Usa - per specificare un intervallo. Usa/per specificare ogni n ^^ giorno della settimana.

    Campo obbligatorio: no

--months
  • I mesi del periodo

    ▬Tipo: stringa

    Vincoli: elenco delimitato da virgole di nomi di mesi abbreviati (jan) o numeri (1). Usa - per specificare un intervallo. Usa/per specificare ogni n ^^ mese.

    Campo obbligatorio: no

--monthdays
  • I giorni del mese per il periodo

    ▬Tipo: stringa

    Vincoli: elenco delimitato da virgole di nomi di mesi abbreviati (jan) o numeri (1). Usa - per specificare un intervallo. Usa/per specificare ogni n ^^ giorno del mese.

    Campo obbligatorio: no

Esempio

$ 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"
      ]
   }
    }

crea-pianificazione

Descrizione

Crea una pianificazione.

Argomenti

--name
  • Il nome della pianificazione

    Tipo: stringa

    Campo obbligatorio: sì

--description
  • Una descrizione del programma

    ▬Tipo: stringa

    Campo obbligatorio: no

--enforced
  • Implica lo stato pianificato per l'istanza

    Campo obbligatorio: no

--use-metrics
  • Raccogli i CloudWatch parametri di Amazon

    Campo obbligatorio: no

--periods
  • Un elenco dei periodi di esecuzione della pianificazione. Se vengono specificati più periodi, la soluzione avvierà un'istanza se uno dei periodi restituisce lo stesso risultato. true

    ▬Tipo: stringa

    Vincoli: elenco di periodi delimitato da virgole. Viene utilizzato <period-name>@[replaceable]<instance type> per specificare un tipo di istanza per un periodo. Ad esempio, weekdays@t2.large.

    Campo obbligatorio: sì

--retain-running
  • Impedisce che un'istanza venga interrotta dalla soluzione alla fine di un periodo di esecuzione, se l'istanza è stata avviata manualmente prima dell'inizio del periodo.

    Campo obbligatorio: no

--ssm-maintenance-window
  • Aggiunge una finestra di manutenzione di AWS Systems Manager come periodo di esecuzione alla pianificazione di un' EC2 istanza Amazon.

    ▬Tipo: stringa

    Campo obbligatorio: no

--do-not-stop-new-instances
  • Non interrompere un'istanza la prima volta che viene taggata se è in esecuzione al di fuori di un periodo di esecuzione

    Campo obbligatorio: no

--timezone
  • Il fuso orario utilizzato dalla pianificazione

    Tipo: matrice di stringhe

    Obbligatorio: No (se questo argomento non viene utilizzato, viene utilizzato il fuso orario predefinito dello stack di soluzioni principale).

--use-maintenance-window
  • Aggiunge una finestra di manutenzione di Amazon RDS come periodo di esecuzione alla pianificazione di un'istanza Amazon RDS o una finestra di manutenzione di AWS Systems Manager come periodo di esecuzione alla pianificazione di un'istanza Amazon EC2

    Tipo: vero/falso

    Obbligatorio: No (impostazione predefinita: true)

Esempio

$ 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"
   }
}

periodo di eliminazione

--name
  • Il nome del periodo applicabile

    Tipo: stringa

    Campo obbligatorio: sì

Importante

Se il periodo viene utilizzato in pianificazioni esistenti, è necessario rimuoverlo da tali pianificazioni prima di eliminarlo.

Esempio

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

elimina-pianificazione

Descrizione

Elimina una pianificazione esistente

Argomenti

--name
  • Il nome della pianificazione applicabile

    Tipo: stringa

    Campo obbligatorio: sì

Esempio

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

descrivere i periodi

Descrizione

Elenca i periodi configurati per lo stack Instance Scheduler

Argomenti

--name
  • Il nome di un periodo specifico che desideri descrivere

    ▬Tipo: stringa

    Campo obbligatorio: no

Esempio

$ 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

Descrizione

Elenca le pianificazioni configurate per lo stack Instance Scheduler.

Argomenti

--name
  • Il nome di una pianificazione specifica che desideri descrivere

    ▬Tipo: stringa

    Campo obbligatorio: no

Esempio

$ 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

Descrizione

Elenca tutti i periodi compresi in una pianificazione e calcola le ore di fatturazione per le istanze. Utilizza questo comando per simulare una pianificazione per calcolare i potenziali risparmi e per eseguire i periodi dopo la creazione o l'aggiornamento di una pianificazione.

Argomenti

--name
  • Il nome della pianificazione applicabile

    Tipo: stringa

    Campo obbligatorio: sì

--startdate
  • La data di inizio del periodo utilizzato per il calcolo. La data predefinita è la data corrente.

    ▬Tipo: stringa

    Campo obbligatorio: no

--enddate
  • La data di fine del periodo utilizzato per il calcolo. La data predefinita è la data corrente.

    ▬Tipo: stringa

    Campo obbligatorio: no

Esempio

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

periodo di aggiornamento

Descrizione

Aggiorna un periodo esistente

Argomenti

Il update-period comando supporta gli stessi argomenti del create-period comando. Per ulteriori informazioni sugli argomenti, fare riferimento al comando create period.

Importante

Se non si specifica un argomento, tale argomento verrà rimosso dal periodo.

pianificazione degli aggiornamenti

Descrizione

Aggiorna una pianificazione esistente

Argomenti

Il update-schedule comando supporta gli stessi argomenti del create-schedule comando. Per ulteriori informazioni sugli argomenti, fare riferimento al comando create schedule.

Importante

Se non si specifica un argomento, tale argomento verrà rimosso dalla pianificazione.

aiuto

Descrizione

Visualizza un elenco di comandi e argomenti validi per la CLI dello scheduler.

Esempio

$ 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

Se utilizzato con un comando specifico, l'--helpargomento mostra sottocomandi e argomenti validi per quel comando.

Esempio di comando specifico

$ 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