Direkt zum Inhalt

Wie verwende ich den Instance Scheduler mit CloudFormation, um EC2-Instances zu planen?

Lesedauer: 8 Minute
0

Ich möchte den AWS Instance Scheduler mit AWS CloudFormation verwenden, um Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu planen.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Verwende CloudFormation-Vorlagen, um die Bereitstellung des AWS Instance Schedulers zu automatisieren.

Hinweis: Wenn du den Instance Scheduler für Amazon EC2-Instances mit einem verschlüsselten Amazon Elastic Block Store (Amazon EBS) verwenden, werden deine Instances nicht gestartet. Du musst die Schlüsselrichtlinie zum AWS Key Management Service (AWS KMS)-Schlüssel hinzufügen, damit die Schlüsselbenutzerrolle diesen Schlüssel verwenden kann.

Instance Scheduler installieren

Installiere den Instance Scheduler. Führe dann den folgenden Befehl aus, um zu überprüfen, ob die Installation erfolgreich ist:

$ scheduler-cli --version

Erstelle einen CloudFormation-Stack mit der Instance Scheduler-Vorlage

Gehe wie folgt vor, um eine AWS Lambda-Funktion, eine Amazon DynamoDB-Tabelle, eine Amazon EventBridge-Regel und benutzerdefinierte Amazon CloudWatch-Metriken bereitzustellen:

  1. Öffne die AWS-Managementkonsole.
  2. Öffne die CloudFormation-Konsole mit der Instance Scheduler-Vorlage. Standardmäßig wird die Vorlage in der Region USA Ost (Nord-Virginia) gestartet. Oder fahre mit Schritt 1 fort. Starte die Instance Scheduler Hub-Stack Seite und wähle Lösung starten aus.
    Wähle in der Navigationsleiste die AWS-Region aus, in der du deinen Stack mit der Vorlage starten möchtest, und klicke dann auf Weiter.
    Benenne für den Stacknamen deinen Stack.
    Für Instance Scheduler TagName, kannst du den Standardwert als Schedule beibehalten oder ihn anpassen.
    Wähle für Frequenz eine Frequenz in Minuten aus, um deinen Scheduler auszuführen. Du kannst beispielsweise 5 Minuten wählen.
    Hinweis: Die Frequenz ist die Anzahl der Minuten, die vergehen, bevor EventBridge die Lambda-Funktion für den Instance Scheduler erneut initiiert. Wenn du eine große Anzahl von Instances hast, verwende die höchstmögliche Frequenz, um eine Drosselung zu vermeiden. Wenn die Frequenz für deine Bedürfnisse oft nicht ausreicht, kannst du die Eigenschaft Frequenz später anpassen.
    Wähle für CloudWatch-Metriken aktivieren die Option Ja aus.
    Wähle für CloudWatch-Protokolle aktivieren die Option Ja aus.
    (Optional) Gib für Gestartete Tags Status=gestartet ein.
    (Optional) Gib für Angehaltene Tags Status=angehalten ein.
    Gib für die kontenübergreifende Planung den Parameter Kontoübergreifende Rollen an. Gib die Amazon-Ressourcennamen (ARNs) für jede Rolle aus den sekundären Konten ein, getrennt durch Kommas. Wenn du keine kontoübergreifende Planung verwendest, lasse den Parameter leer.
  3. Wähle Weiter aus.
  4. Wähle auf der Seite Optionen die Option Weiter aus.
  5. Überprüfe deine Einstellungen und wähle dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.
  6. Wähle Erstellen aus.

Erstelle die Perioden

Um Perioden zu erstellen, kannst du die Instance Scheduler CLI, die DynamoDB-Konsole oder benutzerdefinierte Ressourcen verwenden. Weitere Informationen zu Perioden findest du unter Start- und Stoppzeiten.

Verwenden der Instance Scheduler CLI

Stelle eine Verbindung zur Instance Scheduler-CLI her und führe dann die folgenden Create-period-AWS-CLI-Befehle aus:

$ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri    
$ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat

Hinweis: Ersetze your_stack_name durch den Stacknamen, den du in Schritt 2 ausgewählt hast, und aa-example-1 durch deine Region.

Verwende die DynamoDB-Konsole

Gehe wie folgt vor, um Perioden zu erstellen:

  1. Öffne die DynamoDB-Konsole.
  2. Wähle Tabellen und dann die Konfigurationstabelle aus.
    Hinweis: Die Instance Scheduler-Vorlage erstellt automatisch eine Status- und eine Konfigurations-DynamoDB-Tabelle. In der Statustabelle wird der Status der Instances gespeichert, bei denen die Vorlage beendet und gestartet wird. In der Konfigurationstabelle kannst du die Perioden und Zeitpläne für deine Anforderungen angeben.
  3. Wähle Tabellenelemente durchsuchen aus.
  4. Wähle dann Element erstellen aus.
  5. Wähle die JSON-Ansicht aus und verwende dann die folgende JSON-Vorlage:
    {    "type": {  
        "S": "period"  
      },  
      "name": {  
        "S": "mon-fri-9-5"  
      },  
      "begintime": {  
        "S": "9:00"  
      },  
      "endtime": {  
        "S": "16:59"  
      },  
      "weekdays": {  
        "SS": [  
          "mon-fri"  
        ]  
      }  
    }
    Hinweis: Die vorherige JSON-Vorlage erstellt die erste Periode. Verwende eine ähnliche JSON-Vorlage für die zweite Periode. Ersetze mon-fr-9-5 durch deinen Periodennamen, 9:00 durch deine Startzeit und 16:59 durch deine Endzeit.

Erstellen eines Zeitplans

Um einen Zeitplan zu erstellen, kannst du die Instance Scheduler CLI, die DynamoDB-Konsole oder benutzerdefinierte Ressourcen verwenden.

Verwenden der Instance Scheduler CLI

Um einen Zeitplan zu erstellen, führe den folgenden create-schedule-CLI-Befehl aus:

$ scheduler-cli create-schedule --stack your_stack_name --name m-f9-5-sat9-12 --region aa-example-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC

Hinweis: Ersetze your_stack_name durch deinen Stacknamen, aa-example-1 durch deine Region und mon-fr-9-5,sat-9-12 durch deinen Zeitplan.

Verwende die DynamoDB-Konsole

Gehe wie folgt vor, um einen Zeitplan zu erstellen:

  1. Öffne die DynamoDB-Konsole.
  2. Wähle Tabellen und dann die Konfigurationstabelle aus.
  3. Wähle Tabellenelemente durchsuchen aus.
  4. Wähle dann Element erstellen aus.
  5. Wähle die JSON-Ansicht aus und verwende dann die folgende JSON-Vorlage:
    {    "type": {  
        "S": "schedule"  
      },  
      "name": {  
        "S": "m-f9-5-sat9-12"  
      },  
      "timezone": {  
        "S": "UTC"  
      },  
      "periods": {  
        "SS": [  
          "mon-fri-9-5"  
        ]  
      }  
    }

Markiere die Instance und teste den Zeitplan

Instances markieren

Wenn du einen CloudFormation-Stack mit dem Instance Scheduler verwenden, musst du den Instance Scheduler TagName-Parameter definieren. Der Standardwert für diesen Parameter ist Zeitplan.

Der Instance Scheduler überwacht Tags auf Instances. Wenn der Instance-Tag-Schlüssel mit dem definierten Scheduler-Tag übereinstimmt, wendet der Instance Scheduler den Zeitplan an, der für den Instance-Tag-Wert festgelegt ist. Beispielsweise ist der Schlüssel eines Tags auf Zeitplan und der Wert auf m-f9-5-sat9-12 gesetzt. In diesem Beispiel beginnen die Instances um 9 Uhr und enden von Montag bis Freitag um 17 Uhr. Die Instances beginnen ebenfalls um 9 Uhr und enden am Samstag um 12 Uhr.

Hinweis: Bei Tag-Schlüsseln und -Werten wird zwischen Groß- und Kleinschreibung unterschieden. Wenn du Instances außerhalb des Ausführungszeitraums manuell startest, stoppt der Instance Scheduler die Ausführung der Instances nicht. Der Instance Scheduler startet auch keine Instance, wenn du die Instance während des Ausführungszeitraums manuell stoppst, es sei denn, du setzt den Zeitplan durch. Weitere Informationen findest du unter Zeitplandefinitionen.

Verwenden von vordefinierten Zeitplänen

Zusätzlich zu benutzerdefinierten Zeitplänen kannst du auch jeden der vordefinierten Zeitpläne aus der Konfigurationstabelle verwenden. Mit den folgenden Schritten wird der vordefinierte Zeitplan mit dem Namen wird ausgeführt getestet:

  1. Öffne die Amazon-EC2-Konsole.
  2. Wähle die angehaltenen Instances aus, die du taggen möchtest.
  3. Wähle die Ansicht Tags und dann Tags verwalten aus.
  4. Wähle Tag hinzufügen aus.
  5. Gib Zeitplan für Schlüssel ein.
  6. Gib als Wert den Wert wird ausgeführt ein.
  7. Wähle Speichern aus.
  8. Aktualisiere die Amazon EC2-Konsole und warte dann, bis die Lambda-Funktion initiiert wird.
    Hinweis: Wenn die Lambda-Funktion initiiert und ohne Fehler ausgeführt wird, wird der Status der Instance als wird ausgeführt angezeigt. Das hängt von dem Zeitplan ab, den du testest. In der CloudWatch-Konsole kannst du die CloudWatch-Metriken auf Lambda-Aufrufe und -Fehler überprüfen.
  9. Öffne die DynamoDB-Konsole.
  10. Wähle Tabellen und dann die Statustabelle aus.
  11. Wähle Tabellenelemente erkunden und bestätige, dass die markierte Instance gestartet ist.
    Wichtig: Je nach Häufigkeit und Dauer der von dir verwendeten Lambda-Funktion können dir zusätzliche Kosten in Rechnung gestellt werden. Für die von dir erstellten DynamoDB-Tabellen oder EventBridge-Regeln können dir auch zusätzliche Kosten in Rechnung gestellt werden.

Kontoübergreifende Zeitpläne

Um den Instance Scheduler zum Planen von Instances in sekundären Konten zu verwenden, stelle die CloudFormation-Vorlage aws-instance-scheduler-remote bereit. Diese Vorlage erstellt die Rolle, die es dem Instance Scheduler vom primären Konto aus ermöglicht, Instances im sekundären Konto zu verwalten.

Hinweis: Du musst die ARN der Rolle als Parameter für den Instance Scheduler-Stack im primären Konto angeben. Stelle sicher, dass du deinen Instance Scheduler-Stack mit dem richtigen Parameter erstellst oder aktualisierst.

Gehe wie folgt vor, um den Remote-Stack in sekundären Konten zu starten:

  1. Öffne die AWS-Managementkonsole des sekundären Kontos und starte die CloudFormation-Vorlage aws-instance-scheduler-remote. Du kannst die Vorlage auch für die zukünftige Verwendung herunterladen.

    Hinweis: Standardmäßig wird die Vorlage in der Region USA Ost (Nord-Virginia) gestartet.

  2. Wähle in der Navigationsleiste die Region aus, in der du deinen Stack mit der Vorlage starten möchtest, und klicke dann auf Weiter.

  3. Vergewissere dich auf der Seite Vorlage auswählen, dass du die richtige Vorlage ausgewählt hast, und klicke dann auf Weiter.

  4. Weise dem Remote-Stack auf der Seite Details angeben einen Namen zu.

  5. Überprüfe und ändere unter Parameter den Parameter Hauptkonto. Gib die Kontonummer des Hauptkontos ein.

  6. Wähle Weiter aus.

  7. Wähle auf der Seite Optionen die Option Weiter aus.

  8. Überprüfe deine Einstellungen und wähle dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.

  9. Wähle Erstellen aus.

  10. Wähle die Registerkarte Stack-Ausgaben und kopiere dann den Wert CrossAccountRole.

  11. Wähle im Hauptkonto deinen CloudFormation-Stack aus und wähle dann Aktualisieren aus.

  12. Wähle auf der Seite Stack aktualisieren die Option Aktuelle Vorlage verwenden aus.

  13. Füge in den Parameter kontoübergreifende Rollen den Wert CrossAccountRole ein.

  14. Wähle Weiter aus und dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.

  15. Wähle Stack aktualisieren aus.