New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie stelle ich sicher, dass der CodeDeploy-Agent bereitgestellt wird, wenn ich CloudFormation zur Bereitstellung von Amazon EC2-Instances verwende?
Ich stelle meine Infrastruktur und meine AWS CodeDeploy-Ressourcen mithilfe von AWS CloudFormation bereit. Ich möchte sicherstellen, dass der CodeDeploy-Agent auf meinen Amazon Elastic Compute Cloud (Amazon EC2)-Instances installiert ist und ausgeführt wird.
Kurzbeschreibung
Wenn du eine der folgenden Ressourcen als Ziel einer CodeDeploy-Bereitstellung erstellst, verwende die cfn-init- und cfn-signal-Hilfsskripte:
- AWS::EC2::Instanz
- AWS::AutoScaling::AutoScaling-Gruppe
Bevor du deine Infrastrukturbereitstellung bereitstellst, kannst du die Hilfsskripts verwenden, um deine Zielinstanzen mit dem CodeDeploy-Agenten vollständig bereitzustellen.
Lösung
Um die Hilfsskripte cfn-init und cfn-signal zur Bereitstellung des CodeDeploy-Agenten zu verwenden, führe die folgenden Schritte aus, um die AWS CloudFormation-Vorlage korrekt zu konfigurieren.
1. Erstelle in einem Code-Editor eine JSON- oder YAML-Datei, die du als AWS CloudFormation-Vorlage für deine Ressourcen verwenden möchtest.
2. Verwende für den Metadatenschlüssel den Typ AWS::CloudFormation::Init, um Metadaten für deine Instanz- oder Startkonfiguration einzubeziehen.
Beispiel für einen Metadatenschlüssel, der den Typ AWS::CloudFormation::Init verwendet
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "ruby" : [] } }, "files" : { "/home/ec2-user/install" : { "source" : {"Fn::Join" : ["", ["https://aws-codedeploy-", {"Ref" : "AWS::Region"}, ".s3.amazonaws.com/latest/install"]]}, "mode" : "000755" } }, "commands" : { "00-install-agent" : { "command" : "./install auto", "cwd" : "/home/ec2-user/" }, "01-cfn-signal" : { "command" : {"Fn::Join" : ["", ["/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" }, " --resource SampleLinuxInstance --region ", { "Ref" : "AWS::Region" }]]} } } } } }, "Properties" : { ... } }
Hinweis: Der Typ AWS::CloudFormation::Init umfasst Installationsschritte für den CodeDeploy-Agenten. Er enthält auch den Befehl, nach Abschluss der folgenden Schritte ein Signal an den CloudFormation-Stack zurückzugeben.
3. Stelle die Eigenschaft UserData ein, um das cfn-init-Skript aufzurufen.
Beispiel für eine UserData-Eigenschaft, die das cfn-init-Skript aufruft
"Properties" : { "InstanceType" : "t2.micro", "ImageId" : {"Ref" : "AMI"}, "IamInstanceProfile" : {"Ref" : "SampleInstanceProfile"}, "KeyName" : {"Ref" : "SSHKey"}, "UserData" : {"Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash\n", "yum -y update\n", "yum -y install cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v", " --stack ", { "Ref" : "AWS::StackName" }, " --resource SampleLinuxInstance", " --region ", { "Ref" : "AWS::Region" }, "\n" ]] }}, "Tags" : [ { "Key" : {"Ref" : "InstanceTagKey"}, "Value" : {"Ref" : "InstanceTagValue"} } ] }
4. Konfiguriere für die Instanzressource das CreationPolicy-Attribut, um Folgendes zu tun: Fordere die Amazon EC2-Instance oder die Amazon EC2 Auto Scaling-Gruppe auf, innerhalb eines bestimmten Zeitraums Erfolgssignale an CloudFormation zu senden.
Beispiel für ein CreationPolicy-Attribut, das erfordert, dass eine Amazon EC2-Instance innerhalb eines bestimmten Zeitraums Erfolgssignale an CloudFormation sendet
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "CreationPolicy" : { "ResourceSignal" : { "Count" : "1", "Timeout" : "PT5M" } },
5. Verwende das DependsOn-Attribut, um eine explizite Abhängigkeit für deine Bereitstellungsgruppenressource von der Amazon EC2-Instance oder der Amazon EC2 Auto Scaling-Gruppe zu erstellen.
Beispiel für ein DependsOn-Attribut, das eine explizite Abhängigkeit für eine Deployment-Gruppenressource erstellt
"SampleLinuxCDDeploymentGroup" : { "Type" : "AWS::CodeDeploy::DeploymentGroup", "DependsOn" : "SampleLinuxInstance", "Properties" : { "ApplicationName" : {"Ref" : "SampleCDApp"}, "ServiceRoleArn" : {"Ref" : "ServiceRole"}, "Ec2TagFilters" : [ { "Key" : {"Ref" : "InstanceTagKey"}, "Value" : {"Ref" : "InstanceTagValue"}, "Type" : "KEY_AND_VALUE" } ], "Deployment" : { "Revision" : { "RevisionType" : "S3", "S3Location" : { "Bucket" : {"Ref" : "BucketName"}, "BundleType" : {"Ref" : "BundleType"}, "Key" : {"Ref" : "BundleKey"} } } } } }
6. Um die CloudFormation-Vorlage zu vervollständigen, füge alle anderen zusätzlichen Ressourcen, Eigenschaften oder Ausgaben hinzu, die für deine Umgebung erforderlich sind.
7. Verwende die ausgefüllte Vorlage, um einen CloudFormation-Stack zu erstellen.
Ähnliche Informationen
Referenz zu AWS CloudFormation-Vorlagen für CodeDeploy
Erstellen einer Amazon EC2-Instance für CodeDeploy (AWS CloudFormation-Vorlage)

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor einem Monat