AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.
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
Im folgenden Beispiel wird das Modell verwendet, bei dem eine Organisation ihre eigenen, proprietären Systeme verwaltet und regelmäßig patcht, AMIs anstatt auf Amazon Elastic Compute Cloud (Amazon EC2) aufzubauenAMIs.
Das folgende Verfahren zeigt, wie Betriebssystem-Patches (OS) automatisch auf ein System 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 wirdlatestAmi. 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.
Inhalt
Aufgabe 1: Erstellen eines Parameters im Systems Manager-Parameter Store
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.
Aufgabe 2: Erstellen einer IAM-Rolle für AWS Lambda
Verwenden Sie das folgende Verfahren, um eine IAM-Dienstrolle für AWS Lambda zu erstellen. 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
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die IAM-Konsole unter. https://console.aws.amazon.com/iam/
-
Wählen Sie im Navigationsbereich Richtlinien und dann Richtlinie erstellen.
-
Wählen Sie den Tab JSON.
-
Ersetzen Sie den Standardinhalt durch die folgende Richtlinie. Ersetzen Sie jeden
example resource placeholderdurch Ihre Informationen. -
Wählen Sie Weiter: Tags aus.
-
(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.
-
Wählen Sie Weiter: Prüfen aus.
-
Geben Sie auf der Seite Richtlinie prüfen im Feld Name einen Namen für die Inline-Richtlinie ein, z. B.
amiLambda. -
Wählen Sie Richtlinie erstellen aus.
-
Wiederholen Sie die Schritte 2 und 3.
-
Fügen Sie die folgende Richtlinie ein. Ersetzen Sie jeden
example resource placeholderdurch Ihre Informationen. -
Wählen Sie Weiter: Tags aus.
-
(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.
-
Wählen Sie Weiter: Prüfen aus.
-
Geben Sie auf der Seite Richtlinie prüfen im Feld Name einen Namen für die Inline-Richtlinie ein, z. B.
amiParameter. -
Wählen Sie Richtlinie erstellen aus.
-
Wählen Sie im Navigationsbereich Rollen und dann Rolle erstellen.
-
Wählen Sie direkt unter Anwendungsfall die Option Lambda und dann Weiter aus.
-
Suchen Sie auf der Seite Berechtigungsrichtlinien anfügen im Feld Suche die beiden Richtlinien, die Sie zuvor erstellt haben.
-
Aktivieren Sie das Kontrollkästchen neben den Richtlinien und wählen Sie anschließend Weiter aus.
-
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.
-
(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: Erstellen einer AWS Lambda -Funktion
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
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Lambda Konsole unter https://console.aws.amazon.com/lambda/
. -
Wählen Sie Funktion erstellen.
-
Wählen Sie auf der Seite Create function die Option Author from scratch.
-
Geben Sie für Function name (Funktionsname)
Automation-UpdateSsmParamein. -
Wählen Sie für Runtime Python 3.11.
-
Wählen Sie unter Architektur den Computerprozessortyp aus, den Lambda zum Ausführen der Funktion verwenden soll, x86_64 oder arm64,
-
Erweitern Sie im Abschnitt Berechtigungen die Option Standardausführungsrolle ändern.
-
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.
-
Wählen Sie Funktion erstellen.
-
Löschen Sie im Bereich Code-Quelle in der Registerkarte lambda_function 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 -
Klicken Sie auf Datei, Speichern.
-
Um die Lambda-Funktion zu testen, wählen Sie im Menü Test die Option Testereignis konfigurieren aus.
-
Geben Sie für Event name (Ereignisname) einen Namen für das Testereignis ein, z. B.
MyTestEvent. -
Ersetzen Sie den vorhandenen Text durch folgendes JSON-Objekt.
AMI IDErsetzen Sie es durch Ihre eigenen Informationen, um IhrenlatestAmiParameterwert festzulegen.{ "parameterName":"latestAmi", "parameterValue":"AMI ID" } -
Wählen Sie Speichern.
-
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
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
Öffnen Sie die AWS Systems Manager Konsole unter https://console.aws.amazon.com/systems-manager/
. Wählen Sie im Navigationsbereich die Option Dokumente aus.
-
Wählen Sie für Dokument erstellen die Option Automatisierung aus.
-
Geben Sie unter Name
UpdateMyLatestWindowsAmiein. -
Wählen Sie die Registerkarte Editor und wählen Sie Edit (Bearbeiten) aus.
-
Wählen Sie bei Aufforderung OK aus.
-
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 -
Wählen Sie Create automation (Automation erstellen).
-
Wählen Sie im Navigationsbereich Automatisierung und Automatisierung ausführen aus.
-
Wählen Sie auf der Seite Choose document (Dokument wählen), die Registerkarte Owned by me (In meinem Besitz).
-
Suchen Sie nach dem UpdateMyLatestWindowsAmiRunbook und wählen Sie die Schaltfläche auf der UpdateMyLatestWindowsAmiKarte aus.
-
Wählen Sie Weiter aus.
-
Wählen Sie Simple execution (Einfache Ausführung) aus.
-
Geben Sie Werte für die Eingabeparameter an.
-
Wählen Sie Ausführen.
-
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 AMIsBereich der EC2 Amazon-Konsole übereinstimmt.