AWS hat die Tag-Management-Funktionalität des Tag-Editors von der AWS Resource Groups Konsole auf die AWS Resource Explorer Konsole verschoben. Mit Resource Explorer können Sie Ressourcen suchen und filtern und anschließend Ressourcen-Tags von einer einzigen Konsole aus verwalten. Weitere Informationen zur Verwaltung von Ressourcen-Tags im Resource Explorer finden Sie unter Ressourcen verwalten im Resource Explorer-Benutzerhandbuch.
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.
Tutorial: Automatisches Stoppen von EC2 Amazon-Instances, denen die erforderlichen Tags fehlen
Wenn Ihr AWS Ressourcenpool AWS-Konten , den Sie verwalten, wächst, können Sie Tags verwenden, um Ihre Ressourcen einfacher zu kategorisieren. Tags werden häufig für kritische Anwendungsfälle wie Kostenverteilung und Sicherheit verwendet. Um AWS Ressourcen effektiv zu verwalten, müssen Ihre Ressourcen konsistent gekennzeichnet werden. Wenn eine Ressource bereitgestellt wird, erhält sie häufig alle entsprechenden Tags. Ein späterer Prozess kann jedoch zu einer Änderung des Tags führen, was zu einer Abweichung von der unternehmenseigenen Tag-Richtlinie führt. Indem Sie die Änderungen an Ihren Tags überwachen, können Sie Abweichungen bei den Stichwörtern erkennen und sofort reagieren. Dies gibt Ihnen mehr Sicherheit, dass die Prozesse, die von der richtigen Kategorisierung Ihrer Ressourcen abhängen, zu den gewünschten Ergebnissen führen.
Das folgende Beispiel zeigt, wie Sie Tag-Änderungen auf EC2 Amazon-Instances überwachen können, um sicherzustellen, dass eine angegebene Instance weiterhin über die erforderlichen Tags verfügt. Wenn sich die Tags der Instanz ändern und die Instance nicht mehr über die erforderlichen Tags verfügt, wird eine Lambda-Funktion aufgerufen, um die Instance automatisch herunterzufahren. Warum sollten Sie das tun wollen? Es stellt sicher, dass alle Ressourcen gemäß Ihrer unternehmenseigenen Tag-Richtlinie gekennzeichnet sind, um eine effektive Kostenzuweisung zu gewährleisten oder um der Sicherheit auf der Grundlage der attributebasierten Zugriffskontrolle (ABAC) vertrauen zu können.
Wichtig
Wir empfehlen dringend, dass Sie dieses Tutorial in einem Konto durchführen, das nicht zur Produktion gehört, sodass Sie wichtige Instanzen nicht versehentlich herunterfahren können.
Der Beispielcode in diesem Tutorial beschränkt die Auswirkungen dieses Szenarios bewusst nur auf die Instanzen in einer Instanzliste. IDs Sie müssen die Liste mit der Instanz aktualisieren IDs , die Sie für den Test herunterfahren möchten. Dadurch wird sichergestellt, dass Sie nicht versehentlich jede Instanz in einer Region in Ihrer herunterfahren können AWS-Konto.
Stellen Sie nach dem Testen sicher, dass alle Ihre Instanzen gemäß der Tagging-Strategie Ihres Unternehmens gekennzeichnet sind. Anschließend können Sie den Code entfernen, der die Funktion nur IDs auf die Instanz in der Liste beschränkt.
Dieses Beispiel verwendet JavaScript und die 16.x-Version von Node.js. Das Beispiel verwendet die AWS-Konto Beispiel-ID 123456789012 und die AWS-Region USA Ost (Nord-Virginia) (). us-east-1
Ersetzen Sie diese durch Ihre eigene Testkonto-ID und Region.
Anmerkung
Wenn Ihre Konsole standardmäßig eine andere Region verwendet, stellen Sie sicher, dass Sie bei jedem Konsolenwechsel die Region, die Sie in diesem Tutorial verwenden, wechseln. Ein häufiger Grund dafür, dass dieses Tutorial fehlschlägt, ist, dass sich die Instanz und die Funktion in zwei verschiedenen Regionen befinden.
Wenn Sie eine andere Region als verwendenus-east-1
, stellen Sie sicher, dass Sie alle Verweise in den folgenden Codebeispielen auf Ihre gewählte Region ändern.
Themen
Schritt 1. So erstellen Sie die Lambda-Funktion:
So erstellen Sie die Lambda-Funktion:
-
Öffnen Sie die AWS Lambda Management Console
. -
Wählen Sie „Funktion erstellen“ und anschließend „Von Grund auf neu erstellen“.
-
Geben Sie im Feld Function name (Funktionsname)
AutoEC2Termination
ein. -
Wählen Sie unter Laufzeit die Option Node.js 16.x aus.
-
Behalten Sie die Standardwerte für alle anderen Felder bei und wählen Sie „Funktion erstellen“.
-
Öffnen Sie auf der
AutoEC2Termination
Detailseite auf der Registerkarte Code die Datei index.js, um den zugehörigen Code anzuzeigen.-
Wenn eine Registerkarte mit index.js geöffnet ist, können Sie das Bearbeitungsfeld auf dieser Registerkarte auswählen, um den Code zu bearbeiten.
-
Wenn eine Registerkarte mit index.js nicht geöffnet ist, klicken Sie im Navigationsbereich unter dem Ordner Auto EC2 Terminator sekundär auf die Datei index.js. Klicken Sie auf Open.
-
-
Fügen Sie auf der Registerkarte index.js den folgenden Code in das Editorfeld ein und ersetzen Sie alles, was bereits vorhanden ist.
Ersetzen Sie den Wert
RegionToMonitor
durch die Region, in der Sie diese Funktion ausführen möchten.// Set the following line to specify which Region's instances you want to monitor // Only instances in this Region are succesfully stopped on a match const RegionToMonitor = "us-east-1" // Specify the instance ARNs to check. // This limits the function for safety to avoid the tutorial shutting down all instances in account // The first ARN is a "dummy" that matches the test event you create in Step 3. // Replace the second ARN with one that matches a real instance that you want to monitor and that you can // safely stop const InstanceList = [ "i-0000000aaaaaaaaaa", "i-05db4466d02744f07" ]; // The tag key name and value that marks a "valid" instance. Instances in the previous list that // do NOT have the following tag key and value are stopped by this function const ValidKeyName = "valid-key"; const ValidKeyValue = "valid-value"; // Load and configure the AWS SDK const AWS = require('aws-sdk'); // Set the AWS Region AWS.config.update({region: RegionToMonitor}); // Create EC2 service object. const ec2 = new AWS.EC2({apiVersion: '2016-11-15'}); exports.handler = (event, context, callback) => { // Retrieve the details of the reported event. var detail = event.detail; var tags = detail["tags"]; var service = detail["service"]; var resourceType = detail["resource-type"]; var resource = event.resources[0]; var resourceSplit = resource.split("/"); var instanceId = resourceSplit[resourceSplit.length - 1]; // If this event is not for an EC2 resource, then do nothing. if (!(service === "ec2")) { console.log("Event not for correct service -- no action (", service, ")" ); return; } // If this event is not about an instance, then do nothing. if (!(resourceType === "instance")) { console.log("Event not for correct resource type -- no action (", resourceType, ")" ); return; } // CAUTION - Removing the following 'if' statement causes the function to run against // every EC2 instance in the specified Region in the calling AWS-Konto. // If you do this and an instance is not tagged with the approved tag key // and value, this function stops that instance. // If this event is not for the ARN of an instance in our include list, then do nothing. if (InstanceList.indexOf(instanceId)<0) { console.log("Event not for one of the monitored instances -- no action (", resource, ")"); return; } console.log("Tags changed on monitored EC2 instance (",instanceId,")"); // Check attached tags for expected tag key and value pair if ( tags.hasOwnProperty(ValidKeyName) && tags[ValidKeyName] == "valid-value"){ // Required tags ARE present console.log("The instance has the required tag key and value -- no action"); callback(null, "no action"); return; } // Required tags NOT present console.log("This instance is missing the required tag key or value -- attempting to stop the instance"); var params = { InstanceIds: [instanceId], DryRun: true }; // call EC2 to stop the selected instances ec2.stopInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { // dryrun succeeded, so proceed with "real" stop operation params.DryRun = false; ec2.stopInstances(params, function(err, data) { if (err) { console.log("Failed to stop instance"); callback(err, "fail"); } else if (data) { console.log("Successfully stopped instance", data.StoppingInstances); callback(null, "Success"); } }); } else { console.log("Dryrun attempt failed"); callback(err); } }); };
-
Wählen Sie Deploy, um Ihre Änderungen zu speichern und die neue Version der Funktion zu aktivieren.
Diese Lambda-Funktion überprüft die Tags einer EC2 Amazon-Instance, wie sie vom Tag-Änderungsereignis in EventBridge gemeldet wurden. In diesem Beispiel versucht die Funktion, die Instance zu stoppen, wenn der Instanz in dem Ereignis der erforderliche Tag-Schlüssel fehlt valid-key
oder wenn das Tag nicht den Wert valid-value
hat. Sie können diese logische Prüfung oder die Tag-Anforderungen für Ihre eigenen spezifischen Anwendungsfälle ändern.
Lassen Sie das Lambda-Konsolenfenster in Ihrem Browser geöffnet.
Schritt 2. Richten Sie die erforderlichen IAM-Berechtigungen ein
Bevor die Funktion erfolgreich ausgeführt werden kann, müssen Sie der Funktion die Berechtigung zum Stoppen einer EC2 Instanz erteilen. Die AWS bereitgestellte Rolle lambda_basic_executionAutoEC2Termination-role-
Ausführungsrolle der Funktion zugeordnet ist. Für dieses Tutorial ist uniqueid
ec2:StopInstances
mindestens eine zusätzliche Berechtigung erforderlich.
Weitere Informationen zur Erstellung von EC2 Amazon-spezifischen IAM-Richtlinien finden Sie unter Amazon EC2: Ermöglicht das programmgesteuerte Starten oder Stoppen einer EC2 Instance und das Ändern einer Sicherheitsgruppe, programmgesteuert und in der Konsole im IAM-Benutzerhandbuch.
Um eine IAM-Berechtigungsrichtlinie zu erstellen und sie an die Ausführungsrolle der Lambda-Funktion anzuhängen
-
Öffnen Sie in einer anderen Browser-Registerkarte oder einem anderen Browserfenster die Rollenseite
der IAM-Konsole. -
Beginnen Sie mit der Eingabe des Rollennamens
AutoEC2Termination
, und wählen Sie den Rollennamen aus, wenn er in der Liste angezeigt wird. -
Wählen Sie auf der Übersichtsseite der Rolle die Registerkarte Berechtigungen und dann den Namen der Richtlinie aus, die bereits angehängt ist.
-
Wählen Sie auf der Übersichtsseite der Richtlinie die Option Richtlinie bearbeiten aus.
-
Wählen Sie auf der Registerkarte Visual Editor die Option Zusätzliche Berechtigungen hinzufügen aus.
-
Wählen Sie unter Service die Option EC2aus.
-
Wählen Sie für Aktionen die Option StopInstances. Sie können
Stop
in die Suchleiste etwas eingeben und dann auswählen,StopInstances
wann sie angezeigt wird. -
Wählen Sie unter Ressourcen die Option Alle Ressourcen, dann Richtlinie überprüfen und anschließend Änderungen speichern aus.
Dadurch wird automatisch eine neue Version der Richtlinie erstellt und diese Version als Standardversion festgelegt.
Ihre endgültige Richtlinie sollte dem folgenden Beispiel ähneln.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:StopInstances", "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:us-east-1:123456789012:*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/AutoEC2Termination:*" } ] }
Schritt 3. Führen Sie einen Vortest Ihrer Lambda-Funktion durch
In diesem Schritt reichen Sie ein Testereignis für Ihre Funktion ein. Die Lambda-Testfunktion funktioniert, indem ein manuell bereitgestelltes Testereignis gesendet wird. Die Funktion verarbeitet das Testereignis so, als ob das Ereignis von EventBridge gekommen wäre. Sie können mehrere Testereignisse mit unterschiedlichen Werten definieren, um all die verschiedenen Teile Ihres Codes auszuführen. In diesem Schritt reichen Sie ein Testereignis ein, das darauf hinweist, dass sich die Tags einer EC2 Amazon-Instance geändert haben und die neuen Tags nicht den erforderlichen Tag-Schlüssel und -Wert enthalten.
Um Ihre Lambda-Funktion zu testen
-
Kehren Sie zum Fenster oder zur Registerkarte mit der Lambda-Konsole zurück und öffnen Sie die Registerkarte Test für Ihre EC2Auto-Termination-Funktion.
-
Wählen Sie Neues Ereignis erstellen aus.
-
Geben Sie für Event name (Ereignisname)
SampleBadTagChangeEvent
ein. -
Ersetzen Sie in der Event-JSON den Text durch das Beispielereignis, das im folgenden Beispieltext gezeigt wird. Sie müssen die Konten, die Region oder die Instanz-ID nicht ändern, damit dieses Testereignis ordnungsgemäß funktioniert.
{ "version": "0", "id": "bddcf1d6-0251-35a1-aab0-adc1fb47c11c", "detail-type": "Tag Change on Resource", "source": "aws.tag", "account": "123456789012", "time": "2018-09-18T20:41:38Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-0000000aaaaaaaaaa" ], "detail": { "changed-tag-keys": [ "valid-key" ], "tags": { "valid-key": "NOT-valid-value" }, "service": "ec2", "resource-type": "instance", "version": 3 } }
-
Wählen Sie Save (Speichern) und dann Test aus.
Der Test scheint fehlgeschlagen zu sein, aber das ist in Ordnung.
Auf der Registerkarte Ausführungsergebnisse unter Antwort sollte der folgende Fehler angezeigt werden.
{ "errorType": "InvalidInstanceID.NotFound", "errorMessage": "The instance ID 'i-0000000aaaaaaaaaa' does not exist", ... }
Der Fehler tritt auf, weil die im Testereignis angegebene Instanz nicht existiert.
Die Informationen auf der Registerkarte Ausführungsergebnisse im Abschnitt Funktionsprotokolle zeigen, dass Ihre Lambda-Funktion erfolgreich versucht hat, eine EC2 Instanz zu stoppen. Dies schlug jedoch fehl, da der Code zunächst versucht, die
DryRun
Instanz zu stoppen, was darauf hinwies, dass die Instanz-ID nicht gültig war.START RequestId: 390c1f8d-0d9b-4b44-b087-8de64479ab44 Version: $LATEST 2022-11-30T20:17:30.427Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO Tags changed on monitored EC2 instance ( i-0000000aaaaaaaaaa ) 2022-11-30T20:17:30.427Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO This instance is missing the required tag key or value -- attempting to stop the instance 2022-11-30T20:17:31.206Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO Dryrun attempt failed 2022-11-30T20:17:31.207Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 ERROR Invoke Error {"errorType":"InvalidInstanceID.NotFound","errorMessage":"The instance ID 'i-0000000aaaaaaaaaa' does not exist","code":"InvalidInstanceID.NotFound","message":"The instance ID 'i-0000000aaaaaaaaaa' does not exist","time":"2022-11-30T20:17:31.205Z","requestId":"a5192c3b-142d-4cec-bdbc-685a9b7c7abf","statusCode":400,"retryable":false,"retryDelay":36.87870631147607,"stack":["InvalidInstanceID.NotFound: The instance ID 'i-0000000aaaaaaaaaa' does not exist"," at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/ec2.js:50:35)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"]} END RequestId: 390c1f8d-0d9b-4b44-b087-8de64479ab44
-
Um zu beweisen, dass der Code nicht versucht, die Instanz zu stoppen, wenn das richtige Tag verwendet wird, können Sie ein weiteres Testereignis erstellen und einreichen.
Wählen Sie über der Codequelle den Tab Test aus. In der Konsole wird Ihr vorhandenes SampleBadTagChangeEventTestereignis angezeigt.
-
Wählen Sie Neues Ereignis erstellen aus.
-
Geben Sie für Event Name (Ereignisname) den Namen
SampleGoodTagChangeEvent
ein. -
Löschen Sie in Zeile 17,
NOT-
um den Wert auf zu zu ändernvalid-value
. -
Wählen Sie oben im Fenster „Testereignis“ die Option „Speichern“ und anschließend „Testen“ aus.
In der Ausgabe wird Folgendes angezeigt, was zeigt, dass die Funktion das gültige Tag erkennt und nicht versucht, die Instanz herunterzufahren.
START RequestId: 53631a49-2b54-42fe-bf61-85b9e91e86c4 Version: $LATEST 2022-12-01T23:24:12.244Z 53631a49-2b54-42fe-bf61-85b9e91e86c4 INFO Tags changed on monitored EC2 instance ( i-0000000aaaaaaaaaa ) 2022-12-01T23:24:12.244Z 53631a49-2b54-42fe-bf61-85b9e91e86c4 INFO The instance has the required tag key and value -- no action END RequestId: 53631a49-2b54-42fe-bf61-85b9e91e86c4
Lassen Sie die Lambda-Konsole in Ihrem Browser geöffnet.
Schritt 4. Erstellen Sie die EventBridge Regel, die die Funktion startet
Jetzt können Sie eine EventBridge Regel erstellen, die dem Ereignis entspricht und auf Ihre Lambda-Funktion verweist.
Um die Regel zu erstellen EventBridge
-
Öffnen Sie in einer anderen Browser-Registerkarte oder einem anderen Browserfenster die EventBridge Konsole
und öffnen Sie die Seite „Regel erstellen“. -
Geben Sie als Namen ein
ec2-instance-rule
, und wählen Sie dann Weiter aus. -
Scrollen Sie nach unten zu Erstellungsmethode und wählen Sie Benutzerdefiniertes Muster (JSON-Editor) aus.
-
Fügen Sie den folgenden Mustertext in das Bearbeitungsfeld ein und wählen Sie dann Weiter.
{ "source": [ "aws.tag" ], "detail-type": [ "Tag Change on Resource" ], "detail": { "service": [ "ec2" ], "resource-type": [ "instance" ] } }
Diese Regel ordnet
Tag Change on Resource
Ereignisse für EC2 Amazon-Instances zu und ruft alles auf, was Sie im nächsten Schritt als Ziel angeben. -
Fügen Sie als Nächstes Ihre Lambda-Funktion als Ziel hinzu. Wählen Sie im Feld Ziel 1 unter Ziel auswählen die Option Lambda-Funktion aus.
-
Wählen Sie unter Funktion die Funktion Automatische EC2 Terminierung aus, die Sie zuvor erstellt haben, und klicken Sie dann auf Weiter.
-
Wählen Sie auf der Seite „Tags konfigurieren“ die Option Weiter aus. Wählen Sie dann auf der Seite Überprüfen und erstellen die Option Regel erstellen aus. Dadurch wird auch automatisch die Erlaubnis erteilt EventBridge , die angegebene Lambda-Funktion aufzurufen.
Schritt 5. Testen Sie die komplette Lösung
Sie können Ihr Endergebnis testen, indem Sie eine EC2 Instanz erstellen und beobachten, was passiert, wenn Sie ihre Tags ändern.
Um die Monitoring-Lösung mit einer echten Instanz zu testen
-
Öffnen Sie die EC2Amazon-Konsole
auf der Instance-Seite. -
Erstellen Sie eine EC2 Amazon-Instance. Bevor Sie sie starten, fügen Sie ein Tag mit dem Schlüssel
valid-key
und dem Wert hinzuvalid-value
. Informationen zum Erstellen und Starten einer Instance finden Sie unter Schritt 1: Starten einer Instance im EC2 Amazon-Benutzerhandbuch. In dem Verfahren Um eine Instance zu starten, wählen Sie in Schritt 3, in dem Sie das Namen-Tag eingeben, auch Zusätzliche Tags hinzufügen, wählen Sie Tag hinzufügen und geben Sie dann den Schlüssel vonvalid-key
und den Wert von einvalid-value
. Sie können ohne key pair fortfahren, wenn diese Instanz ausschließlich für die Zwecke dieses Tutorials bestimmt ist und Sie planen, diese Instanz zu löschen, nachdem Sie sie abgeschlossen haben. Kehren Sie zu diesem Tutorial zurück, wenn Sie das Ende von Schritt 1 erreicht haben. Sie müssen Schritt 2: Verbindung mit Ihrer Instance herstellen nicht ausführen. -
Kopieren Sie das InstanceIdvon der Konsole.
-
Wechseln Sie von der EC2 Amazon-Konsole zur Lambda-Konsole. Wählen Sie Ihre automatische EC2 Terminierungsfunktion, wählen Sie die Registerkarte Code und dann die Registerkarte index.js, um Ihren Code zu bearbeiten.
-
Ändern Sie den zweiten Eintrag in der,
InstanceList
indem Sie den Wert einfügen, den Sie aus der EC2 Amazon-Konsole kopiert haben. Stellen Sie sicher, dass derRegionToMonitor
Wert mit der Region übereinstimmt, die die Instance enthält, die Sie eingefügt haben. -
Wählen Sie Deploy, um Ihre Änderungen zu aktivieren. Die Funktion kann jetzt durch Tag-Änderungen an dieser Instanz in der angegebenen Region aktiviert werden.
-
Wechseln Sie von der Lambda-Konsole zur EC2 Amazon-Konsole.
-
Ändern Sie die der Instance zugewiesenen Tags, indem Sie entweder das Gültigkeitsschlüssel-Tag löschen oder den Wert dieses Schlüssels ändern.
Anmerkung
Informationen zum Ändern der Tags auf einer laufenden EC2 Amazon-Instance finden Sie unter Hinzufügen und Löschen von Tags auf einer einzelnen Ressource im EC2 Amazon-Benutzerhandbuch.
-
Warten Sie ein paar Sekunden und aktualisieren Sie dann die Konsole. Die Instanz sollte ihren Instanzstatus in Stopping und dann in Stopped ändern.
-
Wechseln Sie mit Ihrer Funktion von der EC2 Amazon-Konsole zur Lambda-Konsole und wählen Sie die Registerkarte Überwachen.
-
Wählen Sie die Registerkarte Protokolle und wählen Sie in der Tabelle Letzte Aufrufe den neuesten Eintrag in der Spalte aus. LogStream
In der CloudWatch Amazon-Konsole wird die Seite Ereignisse protokollieren für den letzten Aufruf Ihrer Lambda-Funktion geöffnet. Der letzte Eintrag sollte dem folgenden Beispiel ähneln.
2022-11-30T12:03:57.544-08:00 START RequestId: b5befd18-2c41-43c8-a320-3a4b2317cdac Version: $LATEST 2022-11-30T12:03:57.548-08:00 2022-11-30T20:03:57.548Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO Tags changed on monitored EC2 instance ( arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0 ) 2022-11-30T12:03:57.548-08:00 2022-11-30T20:03:57.548Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO This instance is missing the required tag key or value -- attempting to stop the instance 2022-11-30T12:03:58.488-08:00 2022-11-30T20:03:58.488Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO Successfully stopped instance [ { CurrentState: { Code: 64, Name: 'stopping' }, InstanceId: 'i-1234567890abcdef0', PreviousState: { Code: 16, Name: 'running' } } ] 2022-11-30T12:03:58.546-08:00 END RequestId: b5befd18-2c41-43c8-a320-3a4b2317cdac
Zusammenfassung des Tutorials
In diesem Tutorial wurde gezeigt, wie Sie eine EventBridge Regel erstellen, die mit einer Tagänderung bei einem Ressourcenereignis für EC2 Amazon-Instances übereinstimmt. Die Regel wies auf eine Lambda-Funktion hin, die die Instanz automatisch herunterfährt, wenn sie nicht über das erforderliche Tag verfügt.
Die EventBridge Unterstützung von Amazon für Tag-Änderungen an AWS Ressourcen eröffnet Möglichkeiten, ereignisgesteuerte Automatisierung für viele Ressourcen aufzubauen. AWS-Services In Kombination mit dieser Funktion stehen Ihnen Tools zur AWS Lambda Verfügung, mit denen Sie serverlose Lösungen entwickeln können, die sicher auf AWS Ressourcen zugreifen, bei Bedarf skalieren und kostengünstig sind.
Zu den weiteren möglichen Anwendungsfällen für die tag-change-on-resource EventBridge Veranstaltung gehören:
-
Eine Warnung ausgeben, wenn jemand über eine ungewöhnliche IP-Adresse auf Ihre Ressource zugreift — Verwenden Sie ein Tag, um die Quell-IP-Adresse jedes Besuchers zu speichern, der auf Ihre Ressource zugreift. Änderungen am Tag führen zu einem CloudWatch Ereignis. Sie können dieses Ereignis verwenden, um die Quell-IP-Adresse mit einer Liste gültiger IP-Adressen zu vergleichen und eine Warnmail zu aktivieren, falls die Quell-IP-Adresse nicht gültig ist.
-
Überwachen Sie, ob es Änderungen an Ihrer tagbasierten Zugriffskontrolle für eine Ressource gibt — Wenn Sie den Zugriff auf eine Ressource mithilfe der attribut- (tag-) basierten Zugriffskontrolle (ABAC) eingerichtet haben, können Sie EventBridge Ereignisse verwenden, die durch Änderungen am Tag generiert werden, um eine Prüfung durch Ihr Sicherheitsteam zu veranlassen.