

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 Amazon EC2 EC2-Instances, denen erforderliche Tags fehlen
<a name="monitor-example"></a>

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. Auf diese Weise können Sie sich darauf verlassen, 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 Amazon EC2 EC2-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 (](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)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.

In diesem Beispiel wird JavaScript die 16.x-Version von Node.js verwendet. 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 verwenden`us-east-1`, stellen Sie sicher, dass Sie alle Verweise in den folgenden Codebeispielen auf Ihre gewählte Region ändern.

**Topics**
+ [Schritt 1. So erstellen Sie die Lambda-Funktion:](#monitor-example-step-1)
+ [Schritt 2. Richten Sie die erforderlichen IAM-Berechtigungen ein](#monitor-example-step-2)
+ [Schritt 3. Führen Sie einen Vortest Ihrer Lambda-Funktion durch](#monitor-example-step-3)
+ [Schritt 4. Erstellen Sie die EventBridge Regel, die die Funktion startet](#monitor-example-step-4)
+ [Schritt 5. Testen Sie die komplette Lösung](#monitor-example-step-6)
+ [Zusammenfassung des Tutorials](#summary)

## Schritt 1. So erstellen Sie die Lambda-Funktion:
<a name="monitor-example-step-1"></a>

**So erstellen Sie die Lambda-Funktion:**

1. Öffnen Sie die [AWS Lambda Management Console](https://console.aws.amazon.com/lambda/home).

1. Wählen Sie „**Funktion erstellen**“ und anschließend „**Von Grund auf neu erstellen**“.

1. Geben Sie im Feld **Function name (Funktionsname)** **AutoEC2Termination** ein.

1. Wählen Sie unter **Laufzeit** die Option **Node.js 16.x** aus.

1. Behalten Sie die Standardwerte für alle anderen Felder bei und wählen Sie „**Funktion erstellen**“.

1. Ö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**.

1. 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);
       }
     });
   };
   ```

1. 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 Amazon EC2 EC2-Instance, wie vom Tag-Änderungsereignis in gemeldet. EventBridge 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
<a name="monitor-example-step-2"></a>

Bevor die Funktion erfolgreich ausgeführt werden kann, müssen Sie der Funktion die Berechtigung zum Stoppen einer EC2-Instance erteilen. Die AWS angegebene Rolle [https://console.aws.amazon.com/iamv2/home#/roles/details/lambda_basic_execution](https://console.aws.amazon.com/iamv2/home#/roles/details/lambda_basic_execution)hat diese Berechtigung nicht. In diesem Tutorial ändern Sie die standardmäßige IAM-Berechtigungsrichtlinie, die der genannten `AutoEC2Termination-role-uniqueid` Ausführungsrolle der Funktion zugeordnet ist. Für dieses Tutorial ist `ec2:StopInstances` mindestens eine zusätzliche Berechtigung erforderlich. 

*Weitere Informationen zur Erstellung von Amazon EC2-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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_ec2_instance-securitygroup.html) IAM-Benutzerhandbuch.*

**Um eine IAM-Berechtigungsrichtlinie zu erstellen und sie an die Ausführungsrolle der Lambda-Funktion anzuhängen**

1. Öffnen Sie in einer anderen Browser-Registerkarte oder einem anderen Browserfenster die [Rollenseite](https://console.aws.amazon.com/iamv2/home#/roles) der IAM-Konsole.

1. Beginnen Sie mit der Eingabe des Rollennamens**AutoEC2Termination**, und wählen Sie den Rollennamen aus, wenn er in der Liste angezeigt wird. 

1. Wählen Sie auf der **Übersichtsseite** der Rolle die Registerkarte **Berechtigungen** und dann den Namen der Richtlinie aus, die bereits angehängt ist.

1. Wählen Sie auf der **Übersichtsseite** der Richtlinie die Option **Richtlinie bearbeiten** aus.

1. Wählen Sie auf der Registerkarte **Visual Editor** die Option **Zusätzliche Berechtigungen hinzufügen** aus.

1. Wählen Sie für **Service** die Option **EC2** aus.

1. 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.

1. 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.

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="monitor-example-step-3"></a>

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 Amazon EC2 EC2-Instance geändert haben und die neuen Tags nicht den erforderlichen Tag-Schlüssel und -Wert enthalten.

**Um Ihre Lambda-Funktion zu testen**

1. 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**.

1. Wählen Sie **Neues Ereignis erstellen** aus.

1. Geben Sie für **Event name (Ereignisname)** **SampleBadTagChangeEvent** ein.

1. 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
     }
   }
   ```

1. 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-Instance zu stoppen. Dies schlug jedoch fehl, da der Code zunächst versucht, die [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html#API_StartInstances_RequestParameters](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html#API_StartInstances_RequestParameters)Instance 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
   ```

1. 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 **SampleBadTagChangeEvent**Testereignis angezeigt.

1. Wählen Sie **Neues Ereignis erstellen** aus.

1. Geben Sie für **Event Name (Ereignisname)** den Namen **SampleGoodTagChangeEvent** ein.

1. Löschen Sie in Zeile 17, **NOT-** um den Wert auf zu zu ändern**valid-value**.

1. 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
<a name="monitor-example-step-4"></a>

Jetzt können Sie eine EventBridge Regel erstellen, die dem Ereignis entspricht und auf Ihre Lambda-Funktion verweist.

**Um die Regel zu erstellen EventBridge**

1. Öffnen Sie in einem anderen Browser-Tab oder Fenster die [EventBridge Konsole](https://console.aws.amazon.com/events/home#/rules/create) und öffnen Sie die Seite **Regel erstellen**.

1. Geben Sie als **Namen** ein**ec2-instance-rule**, und wählen Sie dann **Weiter** aus.

1. Scrollen Sie nach unten zu **Erstellungsmethode** und wählen Sie **Benutzerdefiniertes Muster (JSON-Editor)** aus.

1. 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 Amazon EC2 EC2-Instances zu und ruft alles auf, was Sie im nächsten Schritt als **Ziel** angeben. 

1. 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.

1. Wählen Sie unter **Funktion** die Funktion **Automatische EC2 Terminierung** aus, die Sie zuvor erstellt haben, und klicken Sie dann auf **Weiter**.

1. 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
<a name="monitor-example-step-6"></a>

Sie können Ihr Endergebnis testen, indem Sie eine EC2-Instance erstellen und beobachten, was passiert, wenn Sie ihre Tags ändern.

**Um die Monitoring-Lösung mit einer echten Instanz zu testen**

1. Öffnen Sie die [Amazon EC2 EC2-Konsole](https://console.aws.amazon.com/ec2/v2/home#Instances:) auf der Seite **Instances**.

1. Erstellen Sie eine Amazon EC2 EC2-Instance. Bevor Sie sie starten, fügen Sie ein Tag mit dem Schlüssel `valid-key` und dem Wert `valid-value` hinzu. Informationen zum Erstellen und Starten einer Instance finden Sie unter [Schritt 1: Starten einer Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance) im *Amazon EC2 EC2-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** von **valid-key** und den **Wert** von **valid-value** ein. 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**.

1. Kopieren Sie das **InstanceId**von der Konsole.

1. Wechseln Sie von der Amazon EC2 EC2-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.

1. Ändern Sie den zweiten Eintrag in, `InstanceList` indem Sie den Wert einfügen, den Sie aus der Amazon EC2 EC2-Konsole kopiert haben. Stellen Sie sicher, dass der `RegionToMonitor` Wert mit der Region übereinstimmt, die die Instance enthält, die Sie eingefügt haben.

1. 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.

1. Wechseln Sie von der Lambda-Konsole zur Amazon EC2 EC2-Konsole.

1. Ändern Sie die an die Instance angehängten **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 Amazon EC2 EC2-Instance finden [Sie unter Hinzufügen und Löschen von Tags auf einer einzelnen Ressource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags) im *Amazon EC2 EC2-Benutzerhandbuch*.

1. Warten Sie ein paar Sekunden und aktualisieren Sie dann die Konsole. **Die Instanz sollte ihren **Instanzstatus** in **Stopping** und dann in Stopped ändern.**

1. Wechseln Sie mit Ihrer Funktion von der Amazon EC2 EC2-Konsole zur Lambda-Konsole und wählen Sie die Registerkarte **Monitor**. 

1. 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
<a name="summary"></a>

In diesem Tutorial wurde gezeigt, wie Sie eine EventBridge Regel erstellen, die mit einer Tagänderung bei einem Ressourcenereignis für Amazon EC2 EC2-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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) eingerichtet haben, können Sie EventBridge Ereignisse verwenden, die durch Änderungen am Tag generiert werden, um eine Prüfung durch Ihr Sicherheitsteam zu veranlassen.