

• Das AWS Systems Manager CloudWatch Dashboard wird nach dem 30. April 2026 nicht mehr verfügbar sein. Kunden können weiterhin die CloudWatch Amazon-Konsole verwenden, um ihre CloudWatch Amazon-Dashboards anzusehen, zu erstellen und zu verwalten, so wie sie es heute tun. Weitere Informationen finden Sie in der [Amazon CloudWatch Dashboard-Dokumentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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.

# Aktualisieren Sie ein Golden AMI mithilfe von Automation, AWS Lambda, und Parameter Store
<a name="automation-tutorial-update-patch-golden-ami"></a>

Im folgenden Beispiel wird das Modell verwendet, bei dem eine Organisation ihre eigenen, proprietären AMIs verwaltet und regelmäßig patcht, anstatt aus Amazon Elastic Compute Cloud (Amazon EC2)-AMIs aufzubauen.

Das folgende Verfahren zeigt, wie Betriebssystem-Patches automatisch auf ein Betriebssystem angewendet werdenAMI, das bereits als die *aktuellsten up-to-date oder aktuellsten* giltAMI. In diesem Beispiel `SourceAmiId` wird der Standardwert des Parameters durch einen AWS Systems Manager Parameter Store Parameter definiert, der aufgerufen wird`latestAmi`. Der Wert von `latestAmi` wird durch eine AWS Lambda Funktion aktualisiert, die am Ende der Automatisierung aufgerufen wird. Durch diesen Automatisierungsprozess werden der Zeit- und Arbeitsaufwand für das Patchen minimiert, da AMIs das Patchen immer auf die meisten angewendet wird. up-to-date AMI Parameter Storeund Automatisierung sind Werkzeuge von. AWS Systems Manager

**Bevor Sie beginnen**  
Konfigurieren Sie Automatisierungsrollen und optional Amazon EventBridge for Automation. Weitere Informationen finden Sie unter [Einrichten der Automatisierung](automation-setup.md).

**Topics**
+ [Aufgabe 1: Erstellen eines Parameters im Systems Manager-Parameter Store](#create-parameter-ami)
+ [Aufgabe 2: Erstellen Sie eine IAM-Rolle für AWS Lambda](#create-lambda-role)
+ [Aufgabe 3: Eine AWS Lambda Funktion erstellen](#create-lambda-function)
+ [Aufgabe 4: Erstellen eines Runbooks und Patchen des AMI](#create-custom-ami-update-runbook)

## Aufgabe 1: Erstellen eines Parameters im Systems Manager-Parameter Store
<a name="create-parameter-ami"></a>

Erstellen Sie einen Zeichenfolgen-Parameter in Parameter Store, der die folgenden Informationen verwendet:
+ **Name**: `latestAmi`.
+ **Value** (Wert): Eine AMI-ID. Zum Beispiel:` ami-188d6e0e`.

Informationen zur Erstellung eines Parameter Store-Zeichenfolgenparameters finden Sie unter [Parameter Store-Parameter im Systems Manager erstellen](sysman-paramstore-su-create.md).

## Aufgabe 2: Erstellen Sie eine IAM-Rolle für AWS Lambda
<a name="create-lambda-role"></a>

Gehen Sie wie folgt vor, um eine IAM-Dienstrolle für zu erstellen. AWS Lambda Diese Richtlinien erteilen Lambda die Berechtigung zum Aktualisieren des Werts des `latestAmi`-Parameters mithilfe einer Lambda-Funktion und von Systems Manager.

**So erstellen Sie eine IAM-Service-Rolle für Lambda**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die IAM-Konsole unter. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Wählen Sie im Navigationsbereich **Richtlinien** und dann **Richtlinie erstellen**.

1. Wählen Sie den Tab **JSON**.

1. Ersetzen Sie den Standardinhalt durch die folgende Richtlinie. Ersetzen Sie jeden *example resource placeholder* durch Ihre Informationen.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "logs:CreateLogGroup",
               "Resource": "arn:aws:logs:us-east-1:111122223333:*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/lambda/function name:*"
               ]
           }
       ]
   }
   ```

------

1. Wählen Sie **Weiter: Tags** aus.

1. (Optional) Fügen Sie ein oder mehrere Tag-Schlüssel-Wert-Paare hinzu, um den Zugriff für diese Richtlinie zu organisieren, zu verfolgen oder zu steuern. 

1. Wählen Sie **Weiter: Prüfen** aus.

1. Geben Sie auf der Seite **Richtlinie prüfen** im Feld **Name** einen Namen für die Inline-Richtlinie ein, z. B. **amiLambda**.

1. Wählen Sie **Richtlinie erstellen** aus.

1. Wiederholen Sie die Schritte 2 und 3.

1. Fügen Sie die folgende Richtlinie ein. Ersetzen Sie jeden *example resource placeholder* durch Ihre Informationen.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:PutParameter",
               "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/latestAmi"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeParameters",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Wählen Sie **Weiter: Tags** aus.

1. (Optional) Fügen Sie ein oder mehrere Tag-Schlüssel-Wert-Paare hinzu, um den Zugriff für diese Richtlinie zu organisieren, zu verfolgen oder zu steuern. 

1. Wählen Sie **Weiter: Prüfen** aus.

1. Geben Sie auf der Seite **Richtlinie prüfen** im Feld **Name** einen Namen für die Inline-Richtlinie ein, z. B. **amiParameter**.

1. Wählen Sie **Richtlinie erstellen** aus.

1. Wählen Sie im Navigationsbereich **Rollen** und dann **Rolle erstellen**.

1. Wählen Sie direkt unter **Anwendungsfall** die Option **Lambda** und dann **Weiter** aus.

1. Suchen Sie auf der Seite **Berechtigungsrichtlinien anfügen** im Feld **Suche** die beiden Richtlinien, die Sie zuvor erstellt haben.

1. Aktivieren Sie das Kontrollkästchen neben den Richtlinien und wählen Sie anschließend **Weiter** aus.

1. Geben Sie unter **Role name (Rollenname)** einen Namen für Ihre neue Rolle, wie z. B. **lambda-ssm-role**, oder einen anderen von Ihnen bevorzugten Namen ein. 
**Anmerkung**  
Da möglicherweise verschiedene Entitäten auf die Rolle verweisen, kann der Rollenname nach der Erstellung nicht geändert werden.

1. (Optional) Fügen Sie ein oder mehrere Tag-Schlüssel-Wert-Paare hinzu, um den Zugriff für diese Rolle zu organisieren, nachzuverfolgen oder zu steuern, und wählen Sie dann **Rolle erstellen** aus.

## Aufgabe 3: Eine AWS Lambda Funktion erstellen
<a name="create-lambda-function"></a>

Führen Sie die folgenden Schritte zum Erstellen einer Lambda-Funktion aus, die den Wert des `latestAmi`-Parameters automatisch aktualisiert.

**So erstellen Sie eine Lambda-Funktion**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Lambda Konsole unter [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Wählen Sie **Funktion erstellen**.

1. Wählen Sie auf der Seite **Create function** die Option **Author from scratch**.

1. Geben Sie für **Function name** (Funktionsname) **Automation-UpdateSsmParam** ein.

1. Wählen Sie für **Runtime** **Python 3.11**.

1. Wählen Sie unter **Architektur** den Computerprozessortyp aus, den Lambda zum Ausführen der Funktion verwenden soll, **x86\$164** oder **arm64**, 

1. Erweitern Sie im Abschnitt **Berechtigungen** die Option **Standardausführungsrolle ändern**.

1. Wählen Sie **Use an existing role** (Vorhandene Rolle verwenden) aus und wählen Sie dann die Servicerolle für Lambda aus, die Sie in Aufgabe 2 erstellt haben.

1. Wählen Sie **Funktion erstellen**.

1. Löschen Sie im Bereich **Code-Quelle** in der Registerkarte **lambda\$1function** den vorab ausgefüllten Code im Feld und fügen Sie das folgende Codebeispiel ein.

   ```
   from __future__ import print_function
   
   import json
   import boto3
   
   print('Loading function')
   
   
   #Updates an SSM parameter
   #Expects parameterName, parameterValue
   def lambda_handler(event, context):
       print("Received event: " + json.dumps(event, indent=2))
   
       # get SSM client
       client = boto3.client('ssm')
   
       #confirm  parameter exists before updating it
       response = client.describe_parameters(
          Filters=[
             {
              'Key': 'Name',
              'Values': [ event['parameterName'] ]
             },
           ]
       )
   
       if not response['Parameters']:
           print('No such parameter')
           return 'SSM parameter not found.'
   
       #if parameter has a Description field, update it PLUS the Value
       if 'Description' in response['Parameters'][0]:
           description = response['Parameters'][0]['Description']
           
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Description=description,
             Type='String',
             Overwrite=True
           )
       
       #otherwise just update Value
       else:
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Type='String',
             Overwrite=True
           )
           
       responseString = 'Updated parameter %s with value %s.' % (event['parameterName'], event['parameterValue'])
           
       return responseString
   ```

1. Klicken Sie auf **Datei, Speichern**.

1. Um die Lambda-Funktion zu testen, wählen Sie im Menü **Test** die Option **Testereignis konfigurieren** aus.

1. Geben Sie für **Event name (Ereignisname)** einen Namen für das Testereignis ein, z. B. **MyTestEvent**.

1. Ersetzen Sie den vorhandenen Text durch folgendes JSON-Objekt. *AMI ID*Ersetzen Sie es durch Ihre eigenen Informationen, um Ihren `latestAmi` Parameterwert festzulegen.

   ```
   {
      "parameterName":"latestAmi",
      "parameterValue":"AMI ID"
   }
   ```

1. Wählen Sie **Speichern**.

1. Wählen Sie **Test** aus, um die Funktion zu testen. Auf der Registerkarte **Ausführungsergebnis** sollte der Status als **Erfolgreich** gemeldet werden, zusammen mit anderen Details zur Aktualisierung.

## Aufgabe 4: Erstellen eines Runbooks und Patchen des AMI
<a name="create-custom-ami-update-runbook"></a>

Verwenden Sie die folgende Vorgehensweise zum Erstellen und Ausführen eines Runbooks, das das von Ihnen angegebene AMI für den **latestAmi**-Parameter patcht. Nach dem Abschluss der Automatisierung wird der Wert **latestAmi** mit der ID des neu gepatchten AMI aktualisiert. Bei nachfolgenden Automatisierungen verwenden Sie das AMI, das in der vorherigen Ausführung erstellt wurde.

**Erstellen und Ausführen des Runbooks**

1. Öffnen Sie die AWS Systems Manager Konsole unter [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Wählen Sie im Navigationsbereich die Option **Dokumente** aus.

1. Wählen Sie für **Dokument erstellen** die Option **Automatisierung** aus.

1. Geben Sie unter **Name** **UpdateMyLatestWindowsAmi** ein.

1. Wählen Sie die Registerkarte **Editor** und wählen Sie **Edit (Bearbeiten)** aus.

1. Wählen Sie bei Aufforderung **OK** aus.

1. Ersetzen Sie im Feld **Dokument-Editor** den Standardinhalt durch den folgenden Inhalt des YAML-Beispiel-Runbooks.

   ```
   ---
   description: Systems Manager Automation Demo - Patch AMI and Update ASG
   schemaVersion: '0.3'
   assumeRole: '{{ AutomationAssumeRole }}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to execute this document.'
       default: ''
     SourceAMI:
       type: String
       description: The ID of the AMI you want to patch.
       default: '{{ ssm:latestAmi }}'
     SubnetId:
       type: String
       description: The ID of the subnet where the instance from the SourceAMI parameter is launched.
     SecurityGroupIds:
       type: StringList
       description: The IDs of the security groups to associate with the instance that's launched from the SourceAMI parameter.
     NewAMI:
       type: String
       description: The name of of newly patched AMI.
       default: 'patchedAMI-{{global:DATE_TIME}}'
     InstanceProfile:
       type: String
       description: The name of the IAM instance profile you want the source instance to use.
     SnapshotId:
       type: String
       description: (Optional) The snapshot ID to use to retrieve a patch baseline snapshot.
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: (Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: startInstances
       action: 'aws:runInstances'
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
         ImageId: '{{ SourceAMI }}'
         InstanceType: m5.large
         MinInstanceCount: 1
         MaxInstanceCount: 1
         IamInstanceProfileName: '{{ InstanceProfile }}'
         SubnetId: '{{ SubnetId }}'
         SecurityGroupIds: '{{ SecurityGroupIds }}'
     - name: verifyInstanceManaged
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 600
       inputs:
         Service: ssm
         Api: DescribeInstanceInformation
         InstanceInformationFilterList:
           - key: InstanceIds
             valueSet:
               - '{{ startInstances.InstanceIds }}'
         PropertySelector: '$.InstanceInformationList[0].PingStatus'
         DesiredValues:
           - Online
       onFailure: 'step:terminateInstance'
     - name: installPatches
       action: 'aws:runCommand'
       timeoutSeconds: 7200
       onFailure: Abort
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
     - name: stopInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: stopped
     - name: createImage
       action: 'aws:createImage'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceId: '{{ startInstances.InstanceIds }}'
         ImageName: '{{ NewAMI }}'
         NoReboot: false
         ImageDescription: Patched AMI created by Automation
     - name: terminateInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: terminated
     - name: updateSsmParam
       action: aws:invokeLambdaFunction
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
           FunctionName: Automation-UpdateSsmParam
           Payload: '{"parameterName":"latestAmi", "parameterValue":"{{createImage.ImageId}}"}'
   outputs:
   - createImage.ImageId
   ```

1. Wählen Sie **Create automation (Automation erstellen)**.

1. Wählen Sie im Navigationsbereich **Automatisierung** und **Automatisierung ausführen** aus.

1. Wählen Sie auf der Seite **Choose document** (Dokument wählen), die Registerkarte **Owned by me** (In meinem Besitz).

1. Suchen Sie nach dem **UpdateMyLatestWindowsAmi**Runbook und wählen Sie die Schaltfläche auf der **UpdateMyLatestWindowsAmi**Karte aus.

1. Wählen Sie **Weiter** aus.

1. Wählen Sie **Simple execution (Einfache Ausführung)** aus.

1. Geben Sie Werte für die Eingabeparameter an.

1. Wählen Sie **Ausführen**.

1. Wählen Sie nach dem Abschluss der Automatisierung **Parameter Store** im Navigationsbereich und bestätigen Sie, dass der neue Wert für `latestAmi`-Treffer, die von der Automatisierung zurückgegeben werden. Sie können auch überprüfen, ob die neue AMI ID mit der Automation-Ausgabe im **AMIs**Bereich der Amazon EC2 EC2-Konsole übereinstimmt.