Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo puedo asegurarme de que el agente de CodeDeploy esté implementado cuando use CloudFormation para aprovisionar las instancias de Amazon EC2?
Estoy aprovisionando mi infraestructura y los recursos de AWS CodeDeploy mediante AWS CloudFormation. Quiero asegurarme de que el agente de CodeDeploy está instalado y se ejecuta en mis instancias de Amazon Elastic Compute Cloud (Amazon EC2).
Breve descripción
Si creas alguno de los siguientes recursos como destino de un despliegue de CodeDeploy, utiliza los scripts auxiliares cfn-init y cfn-signal:
- AWS::EC2::Instance
- AWS::AutoScaling::AutoScalingGroup
Antes de aprovisionar el despliegue de tu infraestructura, puedes utilizar los scripts auxiliares para aprovisionar completamente las instancias de destino con el agente de CodeDeploy.
Solución
Para utilizar los scripts auxiliares cfn-init y cfn-signal con el fin de desplegar el agente de CodeDeploy, sigue estos pasos para configurar correctamente la plantilla de AWS CloudFormation.
1. En un editor de código, crea un archivo JSON o YAML para usarlo como plantilla de AWS CloudFormation para tus recursos.
2. Como clave Metadata, utiliza el tipo AWS::CloudFormation::Init para incluir metadatos en la configuración de tu instancia o lanzamiento.
Ejemplo de clave Metadata que utiliza el tipo AWS::CloudFormation::Init
"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" : { ... } }
Nota: El tipo AWS::CloudFormation::Init incluye pasos de instalación para el agente de CodeDeploy. También incluye el comando para devolver la señal a la pila de CloudFormation después de completar los siguientes pasos.
3. Define la propiedad UserData para invocar el script cfn-init.
Ejemplo de propiedad UserData que invoca el script cfn-init
"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. En el caso del recurso de instancia, configura el atributo CreationPolicy para hacer lo siguiente: Requiere que la instancia de Amazon EC2 o el grupo de Amazon EC2 Auto Scaling envíen señales de éxito a CloudFormation dentro de un período de tiempo específico.
Ejemplo de atributo CreationPolicy que requiere que una instancia de Amazon EC2 envíe señales de éxito a CloudFormation dentro de un período de tiempo específico
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "CreationPolicy" : { "ResourceSignal" : { "Count" : "1", "Timeout" : "PT5M" } },
5. Para crear una dependencia explícita para el recurso del grupo de despliegue en la instancia de Amazon EC2 o en el grupo de Amazon EC2 Auto Scaling, utiliza el atributo DependsOn.
Ejemplo en que el atributo DependsOn crea una dependencia explícita para un recurso de un grupo de despliegue
"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. Para completar la plantilla de CloudFormation, incluye cualquier otro recurso, propiedad o resultado adicional que se necesite en tu entorno.
7. Una vez completada la plantilla, utilízala para crear una pila de CloudFormation.
Información relacionada
Plantillas de AWS CloudFormation para referencia en CodeDeploy
Create an Amazon EC2 instance for CodeDeploy (AWS CloudFormation template) (Creación de una instancia de Amazon EC2 para CodeDeploy [plantilla de AWS CloudFormation])
- Temas
- Developer Tools
- Etiquetas
- AWS CodeDeploy
- Idioma
- Español

Contenido relevante
- preguntada hace 2 meses
- preguntada hace 8 meses
- preguntada hace 3 meses
- preguntada hace 7 meses
- preguntada hace 4 meses