Blog

Halten Sie Ihre AMIs in CloudFormation auf dem neuesten Stand

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Die Referenzierung von Images virtueller Maschinen in Ihrer CloudFormation-Vorlage ist schwierig. Sie müssen das Image, das Sie verwenden möchten, suchen und seine nicht beschreibende ID (ami-xxxxxxx) in die Vorlage kopieren
. Wenn Sie in mehreren Regionen bereitstellen, müssen Sie auch diese IDs suchen und hinzufügen. Wann immer eine neue Version des Images der virtuellen Maschine verfügbar ist, müssen Sie den gesamten Vorgang wiederholen. Mit unserem Custom CloudFormation Provider und unserem Wartungsdienstprogramm wird die Referenzierung von Images virtueller Maschinen sowohl einfach zu lesen als auch zu pflegen.
Um die Angabe und Pflege von Images virtueller Maschinen in CloudFormation zu vereinfachen, haben wir eine
Custom CloudFormation Resource und ein Wartungsdienstprogramm namens erstellt.
Die Custom Resource ermöglicht es Ihnen, ein Image einer virtuellen Maschine nach Namen anzugeben. Das Dienstprogramm aws-cfn-update bietet die Möglichkeit,
diese Definitionen der benutzerdefinierten Ressource in Ihren Vorlagen über die Befehlszeile zu aktualisieren.

Angabe eines AMI nach Name

Um ein AMI mit Namen zu spezifizieren, fügen Sie eine Custom::AMI-Ressource
zu Ihrer Vorlage hinzu:

  AMI:
    Type: Custom::AMI
    Properties:
      Filters:
        name: 'amzn-ami-2017.09.a-amazon-ecs-optimized'
      ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:binxio-cfn-ami-provider'

Mit der Eigenschaft Filters können Sie angeben, welches AMI Sie wünschen. Der Name des Images ist ausreichend, aber wenn Sie möchten, können Sie sich austoben und jeden beliebigen Parameter angeben, der im EC2-API-Aufruf describe-images definiert ist.
Sobald Sie die benutzerdefinierte AMI-Ressourcendefinition hinzugefügt haben, können Sie die ID wie folgt abrufen:

  Instance:
    Type: AWS:EC2::Instance
    EC2Instance:
        Type: AWS::EC2::Instance
        Properties:
            ImageId: !Ref AMI

Halten Sie Ihr AMI auf dem neuesten Stand

Um das AMI auf dem neuesten Stand zu halten, können Sie das Dienstprogramm aws-cfn-update verwenden:

aws-cfn-update latest-ami --ami-name-pattern 'amzn-ami-2017.09.a-amazon-ecs-optimized' .

Das Dienstprogramm verwendet ein AMI-Namensmuster, um über die API describe-images nach dem neuesten AMI zu suchen. Das Dienstprogramm aktualisiert die Eigenschaft des Filters, wenn eine neuere Version existiert.
Möchten Sie es ausprobieren? Dann installieren Sie den benutzerdefinierten Ressourcenanbieter und das Dienstprogramm.

Installieren des benutzerdefinierten Ressourcenanbieters

Um diesen benutzerdefinierten Ressourcenanbieter zu installieren, geben Sie ein:

aws cloudformation create-stack 
 --capabilities CAPABILITY_IAM 
 --stack-name cfn-ami-provider 
 --template-body file://cloudformation/cfn-ami-provider.json 

aws cloudformation wait stack-create-complete  --stack-name cfn-ami-provider 

Diese CloudFormation-Vorlage verwendet unseren vorgefertigten Provider von s3://binxio-public-${AWS_REGION}/lambdas/cfn-ami-provider-latest.zip.

Installation des Dienstprogramms aws-cfn-updae

Um das Dienstprogramm aws-cfn-update zu installieren, geben Sie ein:

pip install aws-cfn-update

Demo

Um die Verwendung der benutzerdefinierten Ressource zu demonstrieren, geben Sie ein:

aws cloudformation create-stack --stack-name cfn-ami-provider-demo 
 --template-body file://cloudformation/demo-stack.json
aws cloudformation wait stack-create-complete  --stack-name cfn-ami-provider-demo

und aktualisieren Sie die Vorlage, indem Sie eingeben:

aws-cfn-update latest-ami --ami-name-pattern 'amzn-ami-2017.09.a-amazon-ecs-optimized ./cloudformation

Prüfen Sie die aktualisierte Custom::AMI Ressourcendefinition (git diff) und aktualisieren Sie die Vorlage:

aws cloudformation update-stack --stack-name cfn-ami-provider-demo 
 --template-body file://cloudformation/demo-stack.json
aws cloudformation wait stack-update-complete  --stack-name cfn-ami-provider-demo

Fazit

Mit diesem benutzerdefinierten CloudFormation-Provider und Aktualisierungsdienstprogramm können Sie ein AMI namentlich deklarieren und pflegen, was
die Wartbarkeit Ihrer CloudFormation-Vorlagen erleichtert.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.