Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Como faço para garantir que o agente CodeDeploy seja implantado quando uso o CloudFormation para provisionar instâncias do Amazon EC2?
Estou provisionando minha infraestrutura e os recursos do AWS CodeDeploy usando o AWS CloudFormation. Quero garantir que o agente CodeDeploy esteja instalado e rode nas minhas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrição
Se você criar um dos seguintes recursos como destino de uma implantação do CodeDeploy, use os scripts auxiliares cfn-init e cfn-signal:
- AWS::EC2::Instance
- AWS::AutoScaling::AutoScalingGroup
Antes de provisionar sua implantação de infraestrutura, você pode usar os scripts auxiliares para provisionar totalmente suas instâncias de destino com o agente CodeDeploy.
Resolução
Para usar os scripts auxiliares cfn-init e cfn-signal para implantar o agente CodeDeploy, conclua as etapas a seguir para configurar corretamente o modelo do AWS CloudFormation.
1. Em um editor de código, crie um arquivo JSON ou YAML para usar como modelo do AWS CloudFormation para seus recursos.
2. Para a chave Metadata, use o tipo AWS::CloudFormation::Init para incluir metadados em sua instância ou configuração de lançamento.
Exemplo de chave Metadata que usa o 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" : { ... } }
Observação: o tipo AWS::CloudFormation::Init inclui etapas de instalação para o agente CodeDeploy. Ele também inclui o comando para retornar à pilha do CloudFormation depois de concluir as etapas a seguir.
3. Defina a propriedade UserData para invocar o script cfn-init.
Exemplo de propriedade UserData que invoca o 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. Para o recurso de instância, configure o atributo CreationPolicy para fazer o seguinte: Exigir que a instância do Amazon EC2 ou o grupo Amazon EC2 Auto Scaling envie sinais de sucesso para o CloudFormation dentro de um período de tempo específico.
Exemplo de atributo CreationPolicy que exige que uma instância do Amazon EC2 envie sinais de sucesso para o CloudFormation em um período de tempo específico
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "CreationPolicy" : { "ResourceSignal" : { "Count" : "1", "Timeout" : "PT5M" } },
5. Para criar uma dependência explícita para seu recurso de grupo de implantação na instância do Amazon EC2 ou no grupo do Amazon EC2 Auto Scaling, use o atributo DependsOn.
Exemplo de atributo DependsOn que cria uma dependência explícita para um recurso do grupo de implantação
"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 preencher o modelo do CloudFormation, inclua quaisquer outros recursos, propriedades ou saídas adicionais necessários para seu ambiente.
7. Use o modelo concluído para criar uma pilha do CloudFormation.
Informações relacionadas
Modelos do AWS CloudFormation para referência do CodeDeploy
Criar uma instância do Amazon EC2 para o CodeDeploy (modelo do AWS CloudFormation)

Conteúdo relevante
- feita há um mêslg...
- Resposta aceitafeita há um mêslg...
- feita há um mêslg...
- feita há 2 meseslg...
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos