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.

Kurzbeschreibung

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

Wichtig: Wenn Sie den Instance Scheduler für EC2-Instances mit einem verschlüsselten Amazon Elastic Block Store (Amazon EBS) verwenden, können Ihre Instances nicht gestartet werden. Um Ihre Instances zu starten, müssen Sie dem Instance Scheduler eine Schlüsselbenutzerrolle mit einer Schlüsselrichtlinie zum Verschlüsseln oder Entschlüsseln von EBS-Volumes zuweisen. Sie müssen die Schlüsselrichtlinie zum AWS Key Management Service (AWS KMS)-Schlüssel hinzufügen, damit die Schlüsselbenutzerrolle diesen Schlüssel verwenden kann.

Behebung

Installieren Sie den Instance Scheduler

Falls Sie dies noch nicht getan haben, folgen Sie den Anweisungen zur Installation der Instance Scheduler-Befehlszeilenschnittstelle (CLI).

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Installation erfolgreich ist:

$ scheduler-cli --version

Erstellen Sie einen CloudFormation-Stack mit der Instance Scheduler-Vorlage

Der Stack stellt eine AWS Lambda-Funktion, eine Amazon DynamoDB-Tabelle, eine Amazon EventBridge-Regel und benutzerdefinierte Amazon CloudWatch-Metriken bereit.

  1. Öffnen Sie die AWS-Managementkonsole.
  2. Öffnen Sie CloudFormation mit der Instance Scheduler Vorlage. Oder fahren Sie mit Schritt 1 fort. Starten Sie die Instance Scheduler Hub-Stack Seite und wählen Sie Lösung starten aus.
    Hinweis: Die Vorlage wird standardmäßig in der Region USA Ost (Nord-Virginia) gestartet.
  3. Wählen Sie in der Navigationsleiste die AWS-Region aus, in der Sie Ihren Stack mit der Vorlage starten möchten, und klicken Sie dann auf Weiter.
  4. Benennen Sie für den Stacknamen Ihren Stack.
  5. Für Instance Scheduler TagName, können Sie den Standardwert als Schedule beibehalten oder ihn anpassen.
  6. Wählen Sie für Frequenz eine Frequenz in Minuten aus, um Ihren Scheduler auszuführen. Sie können 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 Sie eine große Anzahl von Instances haben, verwenden Sie die höchstmögliche Frequenz, um eine Drosselung zu vermeiden. Wenn die Frequenz für Ihre Bedürfnisse oft nicht ausreicht, können Sie die Eigenschaft Frequenz später anpassen.
  7. Wählen Sie für CloudWatch-Metriken aktivieren die Option Ja aus.
  8. Wählen Sie für CloudWatch Logs aktivieren die Option Ja aus.
  9. (Optional) Geben Sie für Gestartete Tags Status-gestartet ein.
  10. (Optional) Geben Sie für Angehaltene Tags Status=angehalten ein.
  11. Geben Sie für die kontenübergreifende Planung den Parameter Kontoübergreifende Rollen an. Geben Sie die ARNs für jede Rolle aus den sekundären Konten ein, getrennt durch Kommas. Wenn Sie keine kontoübergreifende Planung verwenden, lassen Sie den Parameter leer.
  12. Passen Sie den Stack für alle anderen Parameter an Ihre Bedürfnisse an.
  13. Klicken Sie auf Weiter.
  14. Wählen Sie auf der Seite Optionen die Option Weiter aus.
  15. Überprüfen Sie Ihre Einstellungen und wählen Sie dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.
  16. Wählen Sie Erstellen aus.

Erstellen Sie die Perioden

Um Perioden zu erstellen, können Sie die Instance Scheduler CLI, die DynamoDB-Konsole oder benutzerdefinierte Ressourcen verwenden. Weitere Informationen zu Zeiträumen finden Sie unter Start- und Stoppzeiten.

Das folgende Beispiel zeigt Ihnen, wie Sie Instances erstellen, die:

  • montags bis freitags um 9 Uhr beginnen und um 17 Uhr enden
  • samstags um 9 Uhr beginnen und um 12 Uhr enden

Für dieses Beispiel müssen Sie zwei Perioden erstellen. Erstellen Sie für Ihr eigenes Szenario die entsprechende Anzahl von Perioden.

Verwenden der Instance Scheduler CLI

Stellen Sie eine Verbindung zur Instance Scheduler CLI her und führen Sie dann die folgenden Befehle aus:

$ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri  

$ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat

Hinweis: Ersetzen Sie your\ _stack\ _name durch den Stacknamen, den Sie in Schritt 4 gewählt haben, und eu-west-1 durch Ihre eigene Region.
Verwenden der DynamoDB-Konsole

  1. Öffnen Sie die DynamoDB-Konsole.
  2. Wählen Sie Tabellen und dann die Konfigurationstabelle aus.
    Hinweis: Die Instance Scheduler-Vorlage erstellt automatisch zwei DynamoDB-Tabellen: Status und Konfiguration. In der Statustabelle wird der Status der Instances gespeichert, bei denen die Vorlage beendet und gestartet wird. In der Konfigurationstabelle können Sie die Zeiträume und Zeitpläne für Ihre Anforderungen angeben.
  3. Wählen Sie Tabellenelemente durchsuchen aus.
  4. Wählen Sie dann Element erstellen aus.
  5. Wählen Sie die JSON -Ansicht und verwenden Sie dann die folgende JSON-Vorlage (JavaScript Object Notation):
{  
  "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. Verwenden Sie eine ähnliche JSON-Vorlage für die zweite Periode. Stellen Sie sicher, dass Sie die Vorlagen an Ihre Anforderungen anpassen.

Erstellen eines Zeitplans

Um einen Zeitplan zu erstellen, können Sie die Instance Scheduler CLI, die DynamoDB-Konsole oder benutzerdefinierte Ressourcen verwenden.

Verwenden der Instance Scheduler CLI

Führen Sie folgenden Befehl aus:

$ scheduler-cli create-schedule --stack your\_stack\_name --name m-f9-5-sat9-12 --region eu-west-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC

Verwenden der DynamoDB-Konsole

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

Markieren Sie die Instance und testen Sie den Zeitplan

Wenn Sie einen CloudFormation-Stack mit dem Instance Scheduler verwenden, müssen Sie 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. Der Instance Scheduler stoppt die Ausführung von Instances nicht, wenn sie außerhalb des Ausführungszeitraums manuell gestartet werden. Der Instance Scheduler startet auch keine Instance, wenn die Instance während der Laufzeit manuell gestoppt wird, es sei denn, der Zeitplan wird durchgesetzt. Weitere Informationen finden Sie unter Zeitplandefinitionen.

Verwenden von vordefinierten Zeitplänen

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

  1. Öffnen Sie die Amazon-EC2-Konsole.
  2. Wählen Sie die angehaltenen Instances aus, die Sie taggen möchten.
  3. Wählen Sie die Ansicht Tags und dann Tags verwalten aus.
  4. Wählen Sie Tag hinzufügen aus.
  5. Geben Sie Zeitplan für Schlüssel ein.
  6. Geben Sie als Wert den Wert wird ausgeführt ein.
  7. Wählen Sie Speichern aus.
  8. Aktualisieren Sie die Amazon EC2-Konsole und warten Sie dann, bis die Lambda-Funktion initiiert wird.
    Hinweis: Wenn die Lambda-Funktion initiiert wird und ohne Fehler ausgeführt wird, wird der Instance-Status je nach dem Zeitplan, den Sie testen, als wird ausgeführt angezeigt. In der CloudWatch-Konsole, können Sie Lambda-Metriken auf Aufrufe und Fehler überprüfen.
  9. Öffnen Sie die DynamoDB-Konsole.
  10. Wählen Sie Tabellen und dann die Statustabelle aus.
  11. Wählen Sie Tabellenartikel erkunden und bestätigen Sie, dass die markierte Instance gestartet ist. Die Zustandsdaten werden in der Statustabelle gespeichert.
    Wichtig: Je nach Häufigkeit und Dauer der von Ihnen verwendeten Lambda-Funktion können Ihnen zusätzliche Kosten in Rechnung gestellt werden. Für die von Ihnen erstellten DynamoDB-Tabellen oder EventBridge-Regeln können Ihnen auch zusätzliche Kosten in Rechnung gestellt werden.

Für die kontenübergreifende Planung: Starten Sie den Remote-Stack in sekundären Konten

Um Instances in sekundären Konten mithilfe des Instance Schedulers zu planen, stellen Sie die aws-instance-scheduler-remote CloudFormation Vorlage 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: Sie müssen die ARN der Rolle als Parameter für den Instance Scheduler-Stack im primären Konto angeben. Stellen Sie sicher, dass Sie Ihren Instance Scheduler-Stack mit dem richtigen Parameter erstellen oder aktualisieren.

  1. Öffnen Sie die AWS-Managementkonsole des sekundären Kontos und starten Sie die Vorlage aws-instance-scheduler-remote CloudFormation. Sie können die Vorlage auch für die zukünftige Verwendung herunterladen.
    Hinweis: Die Vorlage wird standardmäßig in der Region USA Ost (Nord-Virginia) gestartet.
  2. Wählen Sie in der Navigationsleiste die AWS-Region aus, in der Sie Ihren Stack mit der Vorlage starten möchten, und klicken Sie dann auf Weiter.
  3. Vergewissern Sie sich auf der Seite Vorlage auswählen, dass Sie die richtige Vorlage ausgewählt haben, und klicken Sie dann auf Weiter.
  4. Weisen Sie Ihrem Remote-Stack auf der Seite Details angeben einen Namen zu.
  5. Überprüfen und ändern Sie unter Parameter den Parameter Hauptkonto. Geben Sie die Kontonummer des Hauptkontos ein.
  6. Klicken Sie auf Weiter.
  7. Wählen Sie auf der Seite Optionen die Option Weiter aus.
  8. Überprüfen Sie Ihre Einstellungen und wählen Sie dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.
  9. Wählen Sie Erstellen aus.
  10. Wählen Sie die Registerkarte Stack-Ausgaben und kopieren Sie dann den Wert CrossAccountRole.
  11. Wählen Sie im Hauptkonto Ihren CloudFormation-Stack aus und wählen Sie dann Aktualisieren aus.
  12. Wählen Sie auf der Seite Stapel aktualisieren die Option Aktuelle Vorlage verwenden aus.
  13. Fügen Sie in den Parameter kontoübergreifende Rollen den Wert CrossAccountRole ein.
  14. Wählen Sie Weiter aus und dann Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt.
  15. Wählen Sie Stack aktualisieren aus.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr