Planer-CLI - Instance Scheduler auf AWS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Planer-CLI

Mit dem Instance Scheduler auf der AWS-Befehlszeilenschnittstelle (CLI) können Sie Zeitpläne und Zeiträume konfigurieren und die Kosteneinsparungen für einen bestimmten Zeitplan abschätzen.

Voraussetzungen

Die CLI in dieser Lösung erfordert Python 3.8+ und die neueste Version von boto3.

Erweitern Sie im angezeigten Detailbereich die Option

Um die Scheduler-CLI verwenden zu können, benötigen Sie Anmeldeinformationen für die AWS-CLI. Weitere Informationen finden Sie unter Konfiguration und Einstellungen für Anmeldeinformationsdateien im AWS-CLI-Benutzerhandbuch.

Ihre Anmeldeinformationen müssen über die folgenden Berechtigungen verfügen:

  • lambda:InvokeFunction- Um die InstanceSchedulerMain Funktion im Scheduler-Stack aufzurufen und die Zeitplan- und Periodeninformationen in der Scheduler-Konfigurationsdatenbank von der Befehlszeile aus zu aktualisieren

  • cloudformation:DescribeStackResource- Um die physische Ressourcen-ID der AWS-Lambda-Funktion aus dem Stack abzurufen, um die CLI-Anforderung zu bearbeiten

Von der Scheduler-CLI gestellte Anfragen und Antworten werden im AdminCliRequestHandler-yyyymmdd Protokollstream protokolliert.

Anmerkung

Wenn Sie ein Profil mit dem Argument profile-name angeben, muss das von Ihnen angegebene Profil über diese Berechtigungen verfügen. Weitere Informationen zum Argument Profilname finden Sie unter Allgemeine Argumente.

Installieren Sie die Scheduler-CLI

  1. Laden Sie das Scheduler-CLI-Paket (instance_scheduler_cli.zip) herunter und platzieren Sie es in einem Verzeichnis auf Ihrem Computer.

    Wichtig

    Die Installation schlägt fehl, wenn Sie die Dateien nicht in einem eigenen Verzeichnis platzieren und sie dann von diesem Verzeichnis aus installieren.

  2. Entpacken Sie das ZIP-Archiv in ein eigenes Verzeichnis (instance_scheduler_cli).

  3. Installieren Sie Scheduler-CLI aus demselben Verzeichnis, in dem Sie das entpackte CLI-Paket abgelegt haben, in Ihrer Umgebung:

    Anmerkung

    Scheduler-CLI benötigt Python 3.8 oder höher und die neuesten Versionen von pip und boto3. Wenn Sie nicht alle diese auf Ihrem lokalen Computer installiert haben, finden Sie in der offiziellen Dokumentation von pip Installationsanweisungen, bevor Sie versuchen, die Scheduler-CLI zu installieren.

    pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
  4. Überprüfen Sie, ob die Installation erfolgreich war mit:

    scheduler-cli --help
Anmerkung

Falls gewünscht, ein Sdist der CLI und kann mit demselben Verfahren wie oben installiert werden.

Befehlsstruktur

Die Scheduler-CLI verwendet eine mehrteilige Struktur in der Befehlszeile. Der nächste Teil spezifiziert das Scheduler-CLI-Python-Skript. Die Scheduler-CLI verfügt über Befehle, die die Operationen spezifizieren, die in Zeiträumen und Zeitplänen ausgeführt werden sollen. Die spezifischen Argumente für eine Operation können in der Befehlszeile in beliebiger Reihenfolge angegeben werden.

scheduler-cli <command> <arguments>

Allgemeine Argumente

Die Scheduler-CLI unterstützt die folgenden Argumente, die alle Befehle verwenden können:

Argument Beschreibung

--stack [replaceable]<stackname>

Der Name des Scheduler-Stacks.

Wichtig: Dieses Argument ist für alle Befehle erforderlich.

--region [replaceable]<regionname>

Der Name der Region, in der der Scheduler-Stack bereitgestellt wird.

Hinweis: Sie müssen dieses Argument verwenden, wenn die Standardkonfigurations- und Anmeldeinformationsdateien nicht in derselben Region wie der Lösungsstapel installiert sind.

--profile-name [replaceable] <profilename>

Der Name des Profils, das zur Ausführung von Befehlen verwendet werden soll. Wenn kein Profilname angegeben ist, wird das Standardprofil verwendet.

--query

Ein JMESPath Ausdruck, der die Befehlsausgabe steuert. Weitere Informationen zur Steuerung der Ausgabe finden Sie unter Steuern der Befehlsausgabe über die AWS-Befehlszeilenschnittstelle im AWS-CLI-Benutzerhandbuch.

--help

Zeigt gültige Befehle und Argumente für die Scheduler-CLI an. Bei Verwendung mit einem bestimmten Befehl werden gültige Unterbefehle und Argumente für diesen Befehl angezeigt.

--version

Zeigt die Versionsnummer der Scheduler-CLI an.

Verfügbare Befehle

Zeitraum erstellen

Beschreibung

Erzeugt eine Periode. Eine Periode muss mindestens eines der folgenden Elemente enthalten:begintime, endtimeweekdays,months, odermonthdays.

Argumente

--name
  • Der Name der Periode

    Typ: Zeichenfolge

    Erforderlich: Ja

--description
  • Eine Beschreibung des Zeitraums

    Typ: Zeichenfolge

    Erforderlich: Nein

--begintime
  • Der Zeitpunkt, zu dem die Laufzeit beginnt. Wenn begintime und nicht angegeben endtime sind, ist die Laufzeit von 00:00 bis 23:59.

    Typ: Zeichenfolge

    Einschränkungen: oder Format H:MM HH:MM

    Erforderlich: Nein

--endtime
  • Der Zeitpunkt, zu dem die Laufzeit endet. Wenn begintime und nicht angegeben endtime sind, ist die Laufzeit von 00:00 bis 23:59.

    Typ: Zeichenfolge

    Einschränkungen: oder Format H:MM HH:MM

    Erforderlich: Nein

--weekdays
  • Die Wochentage für den Zeitraum

    Typ: Zeichenfolge

    Einschränkungen: Durch Kommas getrennte Liste abgekürzter Tagesnamen (Mon) oder Zahlen (0). Verwenden Sie -, um einen Bereich anzugeben. Verwenden Sie/, um jeden n-ten ^ Tag der Woche anzugeben.

    Erforderlich: Nein

--months
  • Die Monate des Zeitraums

    Typ: Zeichenfolge

    Einschränkungen: Durch Kommas getrennte Liste abgekürzter Monatsnamen (Jan) oder Zahlen (1). Verwenden Sie -, um einen Bereich anzugeben. Verwenden Sie/, um jeden n-ten ^ Monat anzugeben.

    Erforderlich: Nein

--monthdays
  • Die Tage des Monats für den Zeitraum

    Typ: Zeichenfolge

    Einschränkungen: Durch Kommas getrennte Liste abgekürzter Monatsnamen (Jan) oder Zahlen (1). Verwenden Sie -, um einen Bereich anzugeben. Verwenden Sie/, um jeden n-ten ^ Tag des Monats anzugeben.

    Erforderlich: Nein

Beispiel

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

Zeitplan erstellen

Beschreibung

Erstellt einen Zeitplan.

Argumente

--name
  • Der Name des Zeitplans

    Typ: Zeichenfolge

    Erforderlich: Ja

--description
  • Eine Beschreibung des Zeitplans

    Typ: Zeichenfolge

    Erforderlich: Nein

--enforced
  • Erzwingt den geplanten Status für die Instanz

    Erforderlich: Nein

--use-metrics
  • CloudWatch Amazon-Metriken sammeln

    Erforderlich: Nein

--periods
  • Eine Liste der Laufzeiten für den Zeitplan. Wenn mehrere Perioden angegeben sind, startet die Lösung eine Instanz, wenn einer der Perioden als ausgewertet wird. true

    Typ: Zeichenfolge

    Einschränkungen: Durch Kommas getrennte Liste von Perioden. Wird verwendet<period-name>@[replaceable]<instance type>, um einen Instance-Typ für einen Zeitraum anzugeben. Beispiel, weekdays@t2.large.

    Erforderlich: Ja

--retain-running
  • Verhindert, dass eine Instanz am Ende einer Laufzeit von der Lösung gestoppt wird, wenn die Instanz vor Beginn des Zeitraums manuell gestartet wurde.

    Erforderlich: Nein

--ssm-maintenance-window
  • Fügt einem EC2 Amazon-Instance-Zeitplan ein AWS Systems Manager Manager-Wartungsfenster als Laufzeit hinzu.

    Typ: Zeichenfolge

    Erforderlich: Nein

--do-not-stop-new-instances
  • Stoppen Sie eine Instance nicht, wenn sie zum ersten Mal markiert wird, wenn sie außerhalb einer Laufzeit läuft

    Erforderlich: Nein

--timezone
  • Die Zeitzone, die der Zeitplan verwenden wird

    Typ: Zeichenfolgen-Array

    Erforderlich: Nein (Wenn dieses Argument nicht verwendet wird, wird die Standardzeitzone aus dem Hauptlösungsstapel verwendet.)

--use-maintenance-window
  • Fügt einem Amazon RDS-Instance-Zeitplan ein Amazon RDS-Wartungsfenster als Laufzeit oder ein AWS Systems Manager Manager-Wartungsfenster als Laufzeit zu einem EC2 Amazon-Instance-Zeitplan hinzu

    Typ: wahr/falsch

    Erforderlich: Nein (Standardeinstellung ist wahr)

Beispiel

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

Zeitraum löschen

--name
  • Der Name des entsprechenden Zeitraums

    Typ: Zeichenfolge

    Erforderlich: Ja

Wichtig

Wenn der Zeitraum in vorhandenen Zeitplänen verwendet wird, müssen Sie ihn aus diesen Zeitplänen entfernen, bevor Sie ihn löschen.

Beispiel

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

Zeitplan löschen

Beschreibung

Löscht einen vorhandenen Zeitplan

Argumente

--name
  • Der Name des entsprechenden Zeitplans

    Typ: Zeichenfolge

    Erforderlich: Ja

Beispiel

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

Zeiträume beschreiben

Beschreibung

Listet die konfigurierten Zeiträume für den Instance Scheduler-Stack auf

Argumente

--name
  • Der Name eines bestimmten Zeitraums, den Sie beschreiben möchten

    Typ: Zeichenfolge

    Erforderlich: Nein

Beispiel

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

Zeitpläne beschreiben

Beschreibung

Listet die konfigurierten Zeitpläne für den Instance Scheduler-Stack auf.

Argumente

--name
  • Der Name eines bestimmten Zeitplans, den Sie beschreiben möchten

    Typ: Zeichenfolge

    Erforderlich: Nein

Beispiel

$ 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

Beschreibung

Listet alle Perioden auf, die innerhalb eines Zeitplans laufen, und berechnet die Abrechnungsstunden für Instanzen. Verwenden Sie diesen Befehl, um einen Zeitplan zur Berechnung potenzieller Einsparungen und Laufzeiten nach der Erstellung oder Aktualisierung eines Zeitplans zu simulieren.

Argumente

--name
  • Der Name des entsprechenden Zeitplans

    Typ: Zeichenfolge

    Erforderlich: Ja

--startdate
  • Das Startdatum des für die Berechnung verwendeten Zeitraums. Das Standarddatum ist das aktuelle Datum.

    Typ: Zeichenfolge

    Erforderlich: Nein

--enddate
  • Das Enddatum des für die Berechnung verwendeten Zeitraums. Das Standarddatum ist das aktuelle Datum.

    Typ: Zeichenfolge

    Erforderlich: Nein

Beispiel

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

Aktualisierungszeitraum

Beschreibung

Aktualisiert einen bestehenden Zeitraum

Argumente

Der update-period Befehl unterstützt dieselben Argumente wie der create-period Befehl. Weitere Informationen zu den Argumenten finden Sie im Befehl create period.

Wichtig

Wenn Sie kein Argument angeben, wird dieses Argument aus dem Punkt entfernt.

Zeitplan für die Aktualisierung

Beschreibung

Aktualisiert einen vorhandenen Zeitplan

Argumente

Der update-schedule Befehl unterstützt dieselben Argumente wie der create-schedule Befehl. Weitere Informationen zu den Argumenten finden Sie im Befehl create schedule.

Wichtig

Wenn Sie kein Argument angeben, wird dieses Argument aus dem Zeitplan entfernt.

help

Beschreibung

Zeigt eine Liste gültiger Befehle und Argumente für die Scheduler-CLI an.

Beispiel

$ 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

Bei Verwendung mit einem bestimmten Befehl zeigt das --help Argument gültige Unterbefehle und Argumente für diesen Befehl an.

Beispiel für einen bestimmten Befehl

$ 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