Wie kann ich einen Amazon-Aurora-Cluster für länger als sieben Tage stoppen?

Lesedauer: 7 Minute
0

Ich möchte einen Amazon Relational Database Service (Amazon-Aurora-Cluster) für mehr als die Dauer von sieben Tagen stoppen.

Kurzbeschreibung

Sie können Ihre Amazon-Aurora-Cluster problemlos innerhalb weniger Minuten starten und stoppen. Diese Funktion unterstützt die Kostenersparnis für Datenbanken, die nicht ständig ausgeführt werden müssen. Sie können einen Datenbankcluster (DB-Cluster) für bis zu sieben Tage stoppen. Wenn Sie Ihren DB-Cluster nach sieben Tagen nicht manuell starten, wird Ihr DB-Cluster automatisch gestartet. Dies geschieht, damit der Cluster nicht hinter den erforderlichen Wartungsupdates zurückbleibt.

Gehen Sie wie folgt vor, um Ihren Aurora-Cluster für mehr als sieben Tage zu stoppen, ohne die erforderlichen Wartungsupdates zu verpassen:

1.    Richten Sie die AWS Identity Access Management (IAM)-Berechtigungen ein, damit AWS Lambda Folgendes ausführen kann: Starten Sie die Instance. Stoppen Sie die Instance. Rufen Sie Informationen über die Instance ab.

2.    Fügen Sie Tags für Aurora-Cluster hinzu, die Sie automatisch starten und beenden möchten.

3.    Erstellen Sie eine Lambda-Funktion, um den Cluster zu starten.

4.    Erstellen Sie eine Lambda-Funktion, um den Cluster zu stoppen.

5.    Erstellen Sie einen Zeitplan, um Folgendes zu tun: Starten Sie den Aurora-Cluster zu Beginn des wöchentlichen Wartungsfensters. Stoppen Sie den Aurora-Cluster am Ende des Wartungsfensters.

Lösung

Konfigurieren von IAM-Berechtigungen

Erstellen Sie eine IAM-Richtlinie, damit Lambda den Cluster starten und stoppen und Informationen über den Cluster abrufen kann.

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie Richtlinien im Navigationsbereich aus.

3.    Wählen Sie Richtlinie erstellen aus.

4.    Wählen Sie die Registerkarte JSON aus.

5.    Kopieren Sie die folgende Richtlinie und fügen Sie die Richtlinie auf der Registerkarte JSON ein, um die erforderlichen IAM-Berechtigungen zu erteilen:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "rds:StartDBCluster",
        "rds:StopDBCluster",
        "rds:ListTagsForResource",
        "rds:DescribeDBInstances",
        "rds:StopDBInstance",
        "rds:DescribeDBClusters",
        "rds:StartDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

6.    Wählen Sie Weiter: Tags aus.

7.    (Optional) Um ein Tag hinzuzufügen, wählen Sie Tag hinzufügen und geben dann die entsprechenden Werte für die optionalen Felder Schlüsel und Wert ein.

8.    Wählen Sie Weiter: Überprüfung.

9.    Geben Sie auf der Seite Richtlinie überprüfen für Name den Namen für Ihre Richtlinie ein. Lesen Sie den Abschnitt Zusammenfassung, um die Berechtigungen anzuzeigen, die von Ihrer Richtlinie gewährt werden.

10.    Wählen Sie Richtlinie erstellen aus.

Weitere Informationen finden Sie unter Erstellen von Richtlinien auf der Registerkarte JSON.

Erstellen einer IAM-Rolle und Hinzufügen der erforderlichen Richtlinien im Anschluss

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie im Navigationsbereich Rollen aus.

3.    Wählen Sie Rolle erstellen aus.

4.    Wählen Sie bei Typ der vertrauenswürdigen Entität auswählen AWS-Service aus.

5.    Wählen Sie unter Oder wählen Sie einen Service aus, um seine Anwendungsfälle anzuzeigen, Lambda aus.

6.    Wählen Sie Weiter: Berechtigungen aus.

7.    Geben Sie für Filterrichtlinien den Namen der im vorherigen Abschnitt erstellten Richtlinie ein. Wenn die von Ihnen erstellte Richtlinie angezeigt wird, wählen Sie die Richtlinie aus. Geben Sie für Filterrichtlinien****AWSLambdaBasicExecutionRole ein. Wenn die von Ihnen erstellte verwaltete Richtlinie AWSLambdaBasicExecutionRole angezeigt wird, wählen Sie die Richtlinie aus.

8.    Wählen Sie Weiter: Tags aus.

9.    (Optional) Um ein Tag hinzuzufügen, geben Sie die entsprechenden Werte für die Felder Schlüssel und Wert (optional) ein.

10.    Wählen Sie Weiter: Überprüfung aus.

11.    Geben Sie auf der Seite Rolle erstellen für Rollenname den Namen für die Rolle ein, die Sie erstellen.

12.    Wählen Sie Rolle erstellen aus.

Weitere Informationen finden Sie unter Erstellen einer Rolle für einen AWS-Service (Konsole).

Fügen Sie Tags für DB-Cluster hinzu

1.    Öffnen Sie die Amazon RDS-Konsole.

2.    Wählen Sie im Navigationsbereich Datenbanken aus.

3.    Wählen Sie den DB-Cluster aus, den Sie automatisch starten und beenden möchten.

4.    Scrollen Sie im Abschnitt Details nach unten zum Abschnitt Tags.

5.    Wählen Sie auf der Registerkarte Tags die Option Hinzufügen aus. Geben Sie für Tag-Taste****Autostart ein. Geben Sie für Wert****ja ein. Wählen Sie Hinzufügen, um Ihre Änderungen zu speichern.

6.    Wählen Sie erneut Hinzufügen. Geben Sie für Tag-Taste****Autostop ein. Geben Sie für Wert****ja ein. Wählen Sie Hinzufügen, um Ihre Änderungen zu speichern.

Weitere Informationen finden Sie unter Hinzufügen, Auflisten und Entfernen von Tags.

Erstellen Sie eine Lambda-Funktion, um die getaggten DB-Instances zu starten

1.    Öffnen Sie die Lambda-Konsole.

2.    Wählen Sie Funktionen im Navigationsbereich aus.

3.    Wählen Sie Funktion erstellen.

4.    Wählen Sie Von Grund auf neu verfassen.

5.    Geben Sie für Funktionsname den Namen Ihrer Funktion ein.

6.    Wählen Sie für Laufzeit Python 3.7 aus.

7.    Lassen Sie für Architektur die Standardauswahl von x86_64.

7.    Erweitern Sie Standardausführungsrolle ändern.

8.    Für Ausführungsrolle wählen Sie die Option Vorhandene Rolle verwenden aus.

9.    Wählen Sie für „Vorhandene Rolle“ die IAM-Rolle aus, die Sie zuvor erstellt haben.

10.    Wählen Sie Funktion erstellen.

11.    Wählen Sie die Registerkarte Code.

12.    Löschen Sie im Quellcode-Editor den Beispielcode und fügen Sie Folgendes ein:

import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):

    #Start DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster stopped. Start it if eligible.
        if (db['Status'] == 'stopped'):
            doNotStart=1
            try:
                GetTags=rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                #if tag "autostart=yes" is set for cluster, start it
                    if(tags['Key'] == 'autostart' and tags['Value'] == 'yes'):
                        result = rds.start_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print ("Starting cluster: {0}.".format(db['DBClusterIdentifier']))
                if(doNotStart == 1):
                    doNotStart=1
            except Exception as e:
                print ("Cannot start cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)
                

if __name__ == "__main__":
    lambda_handler(None, None)

13.    Wählen Sie Datei, wählen Sie Speichern und dann Bereitstellen.

15.    Wählen Sie die Registerkarte Konfiguration, wählen Sie Allgemeine Konfiguration und dann Bearbeiten.

16.    Gehen Sie unter Timeout wie folgt vor: Wählen Sie für Minute****0 aus. Wählen Sie für Sekunde****10 aus. 17.    Wählen Sie Speichern aus.

Erstellen Sie eine Lambda-Funktion, um die getaggten DB-Instances zu stoppen

Verwenden Sie die Anweisungen im vorherigen Abschnitt Erstellen Sie eine Lambda-Funktion, um die markierten DB-Cluster zu starten und die markierten DB-Cluster zu beenden. Sie müssen die folgende Änderung vornehmen:

Löschen Sie im Quellcode-Editor den Beispielcode und fügen Sie Folgendes ein:

import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):

    #Stop DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster started. Stop it if eligible.
        if (db['Status'] == 'available'):
            doNotStop=1
            try:
                GetTags=rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                #if tag "autostop=yes" is set for cluster, stop it
                    if(tags['Key'] == 'autostop' and tags['Value'] == 'yes'):
                        result = rds.stop_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print ("Stopping cluster: {0}.".format(db['DBClusterIdentifier']))
                if(doNotStop == 1):
                    doNotStop=1
            except Exception as e:
                print ("Cannot stop cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)
                

if __name__ == "__main__":
    lambda_handler(None, None)

Durchführen von Funktionstests

Angenommen, Ihre markierten DB-Cluster befinden sich im Status Gestoppt. Gehen Sie wie folgt vor, um Funktionstests durchzuführen:

1.    Öffnen Sie die Liste Lambda-Funktionen.

2.    Wählen Sie die Funktion, die Sie erstellt haben, um die DB-Cluster zu starten.

3.    Wählen Sie Aktionen und dann Testen.

4.    Geben Sie auf der Registerkarte Test für Name den Namen Ihrer Veranstaltung ein.

5.    Wählen Sie Änderungen speichern und dann Test.

Erstellen Sie den Zeitplan

Angenommen, das wöchentliche Wartungsfenster für die markierten DB-Cluster ist Sonntag von 22:00 bis 22:30 Uhr. Sie können einen Zeitplan einrichten, indem Sie zwei Regeln für Folgendes erstellen:

  • Automatischer Start des DB-Clusters 30 Minuten vor Beginn des Wartungsfensters
  • Automatisches Stoppen des DB-Clusters 30 Minuten nach Ende des Wartungsfensters

Gehen Sie wie folgt vor, um die Regel zum automatischen Starten der DB-Instance 30 Minuten vor dem Wartungsfenster zu erstellen:

1.    Öffnen Sie die Liste Lambda-Funktionen.

2.    Wählen Sie die Funktion aus, die Sie zum Starten der DB-Instances erstellt haben.

3.    Wählen Sie unter Funktionsübersicht Auslöser hinzufügen.

4.    Wählen Sie EventBridge (CloudWatch Events) und wählen Sie dann Neue Regel erstellen aus.

5.    Geben Sie für Regelname den Namen der Regel ein, die Sie erstellen möchten.

6.    Fügen Sie für Zeitplanausdruck einen Cron-Ausdruck für den automatisierten Zeitplan hinzu (Beispiel: cron(30 21 ? *SONNE*)).

7.    Wählen Sie Hinzufügen.

Verwenden Sie dieselben Anweisungen, um eine weitere Regel zu erstellen, um den DB-Cluster 30 Minuten nach dem Wartungsfenster automatisch zu stoppen. Achten Sie darauf, den Namen der Regel und den Cron-Ausdruck für den automatisierten Zeitplan entsprechend zu ändern (Beispiel: cron(0023? * SONNE *)).


Ähnliche Informationen

Wie kann ich eine Amazon-RDS-Instance länger als sieben Tage stoppen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr