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.
Vorbereiten des Hinzufügens eines Lebenszyklus-Hook zu einer Auto-Scaling-Gruppe
Stellen Sie sicher, dass Ihr Benutzerdatenskript oder Ihr Benachrichtigungsziel korrekt eingerichtet ist, bevor Sie Ihrer Auto-Scaling-Gruppe einen Lebenszyklus-Hook hinzufügen.
-
Um ein Benutzerdatenskript zu nutzen, um benutzerdefinierte Aktionen für Ihre Instances während des Starts auszuführen, müssen Sie kein Benachrichtigungsziel konfigurieren. Sie müssen jedoch bereits die Startvorlage oder die Startkonfiguration erstellt haben, die Ihr Benutzerdatenskript angibt und es Ihrer Auto-Scaling-Gruppe zuordnet. Weitere Informationen zu Benutzerdatenskripten finden Sie unter Befehle auf Ihrer Linux-Instance beim Start ausführen im EC2 Amazon-Benutzerhandbuch.
-
Um Amazon EC2 Auto Scaling zu signalisieren, dass die Lifecycle-Aktion abgeschlossen ist, müssen Sie den CompleteLifecycleActionAPI-Aufruf zum Skript hinzufügen und manuell eine IAM-Rolle mit einer Richtlinie erstellen, die es Auto Scaling Scaling-Instances ermöglicht, diese API aufzurufen. In Ihrer Startvorlage oder Startkonfiguration muss diese Rolle mithilfe eines IAM-Instance-Profils angegeben werden, das beim Start an Ihre EC2 Amazon-Instances angehängt wird. Weitere Informationen erhalten Sie unter Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen und IAM-Rolle für Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden.
-
Um einen Dienst wie Lambda zum Ausführen einer benutzerdefinierten Aktion zu verwenden, müssen Sie bereits eine EventBridge Regel erstellt und eine Lambda-Funktion als Ziel angegeben haben. Weitere Informationen finden Sie unter Konfigurieren eines Benachrichtigungsziels für Lebenszyklus-Benachrichtigungen.
-
Damit Lambda Amazon EC2 Auto Scaling signalisieren kann, wenn die Lebenszyklusaktion abgeschlossen ist, müssen Sie den CompleteLifecycleActionAPI-Aufruf zum Funktionscode hinzufügen. Sie müssen auch eine IAM-Richtlinie an die Ausführungsrolle der Funktion angehängt haben, um Lambda die Berechtigung zum Vervollständigen von Lebenszyklus-Aktionen zu erteilen. Weitere Informationen finden Sie unter Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft.
-
Um einen Service wie Amazon SNS oder Amazon SQS zum Ausführen einer benutzerdefinierten Aktion verwenden zu können, müssen Sie bereits das SNS-Thema oder die SQS-Warteschlange erstellt haben und über den Amazon-Ressourcennamen (ARN) verfügen. Sie müssen auch bereits die IAM-Rolle erstellt haben, die Amazon EC2 Auto Scaling Zugriff auf Ihr SNS-Thema oder SQS-Ziel gewährt, und den zugehörigen ARN bereit haben. Weitere Informationen finden Sie unter Konfigurieren eines Benachrichtigungsziels für Lebenszyklus-Benachrichtigungen.
Anmerkung
Wenn Sie einen Lifecycle-Hook in der Konsole hinzufügen, sendet Amazon EC2 Auto Scaling standardmäßig Lebenszyklusereignisbenachrichtigungen an Amazon EventBridge. Die Verwendung EventBridge eines Benutzerdatenskripts ist eine empfohlene bewährte Methode. Um einen Lifecycle-Hook zu erstellen, der Benachrichtigungen direkt an Amazon SNS oder Amazon SQS sendet, verwenden Sie das,, oder ein SDK AWS CLI AWS CloudFormation, um den Lifecycle-Hook hinzuzufügen.
Konfigurieren eines Benachrichtigungsziels für Lebenszyklus-Benachrichtigungen
Sie können einer Auto-Scaling-Gruppe Lebenszyklus-Hooks hinzufügen, um benutzerdefinierte Aktionen auszuführen, wenn eine Instance in einen Wartestatus wechselt. Sie können einen Zielservice auswählen, der diese Aktionen abhängig von Ihrem bevorzugten Entwicklungsansatz ausführt.
Der erste Ansatz verwendet Amazon EventBridge , um eine Lambda-Funktion aufzurufen, die die gewünschte Aktion ausführt. Der zweite Ansatz umfasst das Erstellen eines Amazon Simple Notification Service (Amazon SNS)-Themas, für das Benachrichtigungen veröffentlicht werden. Kunden können das SNS-Thema abonnieren und veröffentlichte Nachrichten über ein unterstütztes Protokoll empfangen. Der letzte Ansatz umfasst die Verwendung von Amazon Simple Queue Service (Amazon SQS), einem Messaging-System, das von verteilten Anwendungen verwendet wird, um Nachrichten über ein Abfragemodell auszutauschen.
Als bewährte Methode empfehlen wir die Verwendung von EventBridge. Die an Amazon SNS und Amazon SQS gesendeten Benachrichtigungen enthalten dieselben Informationen wie die Benachrichtigungen, an die Amazon EC2 Auto Scaling sendet. EventBridge Bisher bestand die Standardpraxis darin EventBridge, eine Benachrichtigung an SNS oder SQS zu senden und einen anderen Service in SNS oder SQS zu integrieren, um programmatische Aktionen durchzuführen. Heute stehen EventBridge Ihnen mehr Optionen zur Verfügung, auf welche Dienste Sie abzielen können, und erleichtert die Verarbeitung von Ereignissen mithilfe einer serverlosen Architektur.
In den folgenden Verfahren wird beschrieben, wie Sie Ihr Benachrichtigungsziel einrichten.
Denken Sie daran: Wenn Sie über ein Benutzerdatenskript in Ihrer Startvorlage- oder Startkonfiguration verfügen, das Ihre Instances beim Starten konfiguriert, müssen Sie keine Benachrichtigungen erhalten, um benutzerdefinierte Aktionen für Ihre Instances auszuführen.
Inhalt
Wichtig
Die EventBridge Regel, die Lambda-Funktion, das Amazon SNS SNS-Thema und die Amazon SQS SQS-Warteschlange, die Sie mit Lifecycle-Hooks verwenden, müssen sich immer in derselben Region befinden, in der Sie Ihre Auto Scaling Scaling-Gruppe erstellt haben.
Benachrichtigungen an Lambda weiterleiten mit EventBridge
Sie können eine EventBridge Regel so konfigurieren, dass sie eine Lambda-Funktion aufruft, wenn eine Instanz in den Wartezustand wechselt. Amazon EC2 Auto Scaling sendet eine Benachrichtigung EventBridge über ein Lifecycle-Ereignis an die Instance, die gestartet oder beendet wird, sowie ein Token, mit dem Sie die Lifecycle-Aktion steuern können. Beispiele für diese Ereignisse finden Sie unter Amazon EC2 Auto Scaling Scaling-Ereignisreferenz.
Anmerkung
Wenn Sie die verwenden, AWS Management Console um eine Ereignisregel zu erstellen, fügt die Konsole automatisch die IAM-Berechtigungen hinzu, die erforderlich sind, um die EventBridge Berechtigung zum Aufrufen Ihrer Lambda-Funktion zu erteilen. Wenn Sie eine Ereignisregel mit AWS CLI erstellen, müssen Sie diese Berechtigung ausdrücklich erteilen.
Informationen zum Erstellen von Ereignisregeln in der EventBridge Konsole finden Sie im EventBridge Amazon-Benutzerhandbuch unter Erstellen von EventBridge Amazon-Regeln, die auf Ereignisse reagieren.
– oder –
Ein einführendes Tutorial, das sich an Konsolenbenutzer richtet, finden Sie unter Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft. Dieses Tutorial zeigt Ihnen, wie Sie eine einfache Lambda-Funktion erstellen, die auf Startereignisse wartet und diese in ein CloudWatch Logs-Protokoll schreibt.
Um eine EventBridge Regel zu erstellen, die eine Lambda-Funktion aufruft
-
Erstellen Sie mithilfe der Lambda-Konsole
eine Lambda-Funktion und notieren Sie ihren Amazon-Ressourcennamen (ARN). Beispiel, arn:aws:lambda:
. Sie benötigen den ARN, um ein EventBridge Ziel zu erstellen. Weitere Informationen finden Sie unter Erste Schritte mit Lambda im AWS Lambda -Entwicklerhandbuch.region
:123456789012
:function:my-function
-
Um eine Regel zu erstellen, die auf Ereignisse für den Start der Instance passt, verwenden Sie den folgenden put-rule
-Befehl. aws events put-rule --name
my-rule
--event-pattern file://pattern.json --state ENABLEDIm folgenden Beispiel wird die Aktion
pattern.json
für eine Instance zum Starten des Lebenszyklus veranschaulicht. Ersetzen Sie den Textitalics
durch den Namen Ihrer Auto Scaling Scaling-Gruppe.{ "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "AutoScalingGroupName": [ "
my-asg
" ] } }Wenn der Befehl erfolgreich ausgeführt wird, EventBridge antwortet er mit dem ARN der Regel. Notieren Sie diesen ARN. Sie müssen ihn in Schritt 4 eingeben.
Um eine Regel zu erstellen, die mit anderen Ereignissen übereinstimmt, ändern Sie das Ereignismuster. Weitere Informationen finden Sie unter Wird EventBridge zur Behandlung von Auto Scaling Scaling-Ereignissen verwendet.
-
Verwenden Sie Folgendes, um die Lambda-Funktion anzugeben, die als Ziel für die Regel verwendet werden soll:put-targets
-Befehl. aws events put-targets --rule
my-rule
--targets Id=1,Arn=arn:aws:lambda:region
:123456789012
:function:my-function
Im vorherigen Befehl
my-rule
ist dies der Name, den Sie in Schritt 2 für die Regel angegeben haben, und der Wert für denArn
Parameter ist der ARN der Funktion, die Sie in Schritt 1 erstellt haben. -
Um Berechtigungen hinzuzufügen, die es der Regel erlauben, Ihre Lambda-Funktion aufzurufen, verwenden Sie den folgenden Lambda add-permission
-Befehl. Dieser Befehl vertraut dem EventBridge Dienstprinzipal ( events.amazonaws.com
) und beschränkt die Berechtigungen auf die angegebene Regel.aws lambda add-permission --function-name
my-function
--statement-idmy-unique-id
\ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region
:123456789012
:rule/my-rule
Beim vorhergehenden Befehl:
-
my-function
ist der Name der Lambda-Funktion, die die Regel als Ziel verwenden soll. -
my-unique-id
ist ein eindeutiger Bezeichner, den Sie definieren, um die Anweisung in der Lambda-Funktionsrichtlinie zu beschreiben. -
source-arn
ist der ARN der EventBridge Regel.
Wird der Befehl erfolgreich ausgeführt, erhalten Sie eine Ausgabe ähnlich der folgenden:
{ "Statement": "{\"Sid\":\"my-unique-id\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}" }
Der
Statement
-Wert ist eine JSON-Zeichenfolgenversion der Anweisung, die der Lambda-Funktionsrichtlinie hinzugefügt wurde. -
-
Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu fort.
Benachrichtigungen über Amazon SNS erhalten
Sie können Amazon SNS dazu verwenden, ein Benachrichtigungsziel (ein SNS-Thema) für den Empfang von Nachrichten im Falle einer Lebenszyklusaktion einzurichten. Amazon SNS sendet die Benachrichtigungen dann an die abonnierten Empfänger. Solange das Abonnement nicht bestätigt ist, werden keine Benachrichtigungen, die zum Thema veröffentlicht wurden, an die Empfänger gesendet.
Einrichten von Benachrichtigungen mithilfe von Amazon SNS
-
Erstellen Sie ein Amazon SNS-Thema mithilfe der Amazon SNS Konsole
oder dem folgenden create-topic -Befehl. Stellen Sie sicher, dass sich das Thema in derselben Region befindet wie die verwendete Auto-Scaling-Gruppe. Weitere Informationen finden Sie unter Erste Schritte mit Amazon SNS im Benutzerhandbuch für Amazon Simple Notification Service. aws sns create-topic --name
my-sns-topic
-
Notieren Sie den Amazon-Ressourcennamen (ARN) des Themas, zum Beispiel
arn:aws:sns:
. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.region
:123456789012
:my-sns-topic
-
Erstellen Sie eine IAM-Servicerolle, um Amazon EC2 Auto Scaling Zugriff auf Ihr Amazon SNS-Benachrichtigungsziel zu gewähren.
Um Amazon EC2 Auto Scaling Zugriff auf Ihr SNS-Thema zu gewähren
Öffnen Sie unter https://console.aws.amazon.com/iam/
die IAM-Konsole. -
Wählen Sie im Navigationsbereich auf der linken Seite Roles (Rollen).
-
Wählen Sie Rolle erstellen.
-
Wählen Sie für Select trusted entity (Vertrauenswürdige Entität auswählen) die Option AWS -Service.
-
Wählen Sie für Ihren Anwendungsfall unter Anwendungsfälle für andere AWS Dienste EC2 Auto Scaling und dann EC2 Auto Scaling Notification Access aus.
-
Klicken Sie zweimal auf Next (Weiter), um zur Seite Name, review, and create (Benennen, überprüfen und erstellen) zu gelangen.
-
Geben Sie für Role Name (Name der Rolle) einen Namen für Ihre Rolle ein (z. B.
my-notification-role
) und wählen Sie dann Create role (Rolle erstellen). -
Wählen Sie auf der Seite Roles (Rollen) die gerade erstellte Rolle aus, um die Seite Summary (Übersicht) zu öffnen. Notieren Sie sich den ARN der Rolle. Beispiel,
arn:aws:iam::
. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.123456789012
:role/my-notification-role
-
Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit Hinzufügen von Lebenszyklus-Hooks (AWS CLI) fort.
Benachrichtigungen über Amazon SQS erhalten
Sie können Amazon SQS dazu verwenden, ein Benachrichtigungsziel für den Empfang von Nachrichten im Falle einer Lebenszyklusaktion einzurichten. Ein Warteschlangen-Verbraucher muss dann eine SQS-Warteschlange abfragen, um auf diese Benachrichtigungen zu reagieren.
Wichtig
FIFO-Warteschlangen sind nicht kompatibel mit Lebenszyklus-Hooks.
Einrichten von Benachrichtigungen mithilfe von Amazon SQS
-
Mit der Amazon SQS-Konsole
erstellen Sie eine SQS-Warteschlange. Stellen Sie sicher, dass sich die Warteschlange in derselben Region befindet wie die von Ihnen verwendete Auto-Scaling-Gruppe. Weitere Informationen finden Sie unter Erste Schritte mit Amazon SQS im Benutzerhandbuch für Amazon Simple Queue Service. -
Notieren Sie den ARN der Warteschlange, z. B.
arn:aws:sqs:
. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.us-west-2
:123456789012
:my-sqs-queue
-
Erstellen Sie eine IAM-Servicerolle, um Amazon EC2 Auto Scaling Zugriff auf Ihr Amazon SQS SQS-Benachrichtigungsziel zu gewähren.
Um Amazon EC2 Auto Scaling Zugriff auf Ihre SQS-Warteschlange zu gewähren
Öffnen Sie unter https://console.aws.amazon.com/iam/
die IAM-Konsole. -
Wählen Sie im Navigationsbereich auf der linken Seite Roles (Rollen).
-
Wählen Sie Rolle erstellen.
-
Wählen Sie für Select trusted entity (Vertrauenswürdige Entität auswählen) die Option AWS -Service.
-
Wählen Sie für Ihren Anwendungsfall unter Anwendungsfälle für andere AWS Dienste EC2 Auto Scaling und dann EC2 Auto Scaling Notification Access aus.
-
Klicken Sie zweimal auf Next (Weiter), um zur Seite Name, review, and create (Benennen, überprüfen und erstellen) zu gelangen.
-
Geben Sie für Role Name (Name der Rolle) einen Namen für Ihre Rolle ein (z. B.
my-notification-role
) und wählen Sie dann Create role (Rolle erstellen). -
Wählen Sie auf der Seite Roles (Rollen) die gerade erstellte Rolle aus, um die Seite Summary (Übersicht) zu öffnen. Notieren Sie sich den ARN der Rolle. Beispiel,
arn:aws:iam::
. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.123456789012
:role/my-notification-role
-
Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit Hinzufügen von Lebenszyklus-Hooks (AWS CLI) fort.
Beispiel einer Benachrichtigungsnachricht für Amazon SNS und Amazon SQS
Während sich die Instance in einem Wartestatus befindet, wird im Amazon SNS- oder Amazon SQS-Benachrichtigungsziel eine Nachricht veröffentlicht. Die Nachricht enthält die folgenden Informationen:
-
LifecycleActionToken
– Das Token der Lebenszyklusaktion -
AccountId
— Die AWS-Konto ID. -
AutoScalingGroupName
– Der Name der Auto-Scaling-Gruppe. -
LifecycleHookName
– Der Name des Lebenszyklus-Hooks. -
EC2InstanceId
— Die ID der EC2 Instanz. -
LifecycleTransition
– Die Art des Lebenszyklus-Hooks. -
NotificationMetadata
– Die Benachrichtigungsmetadaten.
Im Folgenden finden Sie ein Beispiel für eine Benachrichtigungsmeldung.
Service: AWS Auto Scaling
Time: 2021-01-19T00:36:26.533Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40
AccountId: 123456789012
AutoScalingGroupName: my-asg
LifecycleHookName: my-hook
EC2InstanceId: i-0598c7d356eba48d7
LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
NotificationMetadata: hook message metadata
Beispiel für Benachrichtigungsnachricht testen
Wenn Sie zum ersten Mal einen Lebenszyklus-Hook hinzufügen, wird eine Testbenachrichtigung für das Benachrichtigungsziel veröffentlicht. Im Folgenden finden Sie ein Beispiel für eine Testbenachrichtigungsnachricht.
Service: AWS Auto Scaling
Time: 2021-01-19T00:35:52.359Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
Event: autoscaling:TEST_NOTIFICATION
AccountId: 123456789012
AutoScalingGroupName: my-asg
AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
Anmerkung
Beispiele für Ereignisse, die von Amazon EC2 Auto Scaling an übermittelt wurden EventBridge, finden Sie unterAmazon EC2 Auto Scaling Scaling-Ereignisreferenz.