繁体   English   中英

如何使用codedeploy自动将代码部署到ASG下新创建的EC2实例?

[英]How to automatically deploy code to newly created EC2 instances under ASG with codedeploy?

我在 ASG 下有 2 个 EC2 实例。 我在 codeDeploy 中创建了 Application1,其中 DeploymentGroup1 设置为使用自动缩放。

我面临的问题是,当供应新的 EC2 实例时,codedeploy 不会创建新的部署并且代码不会被推送到实例。 看起来甚至没有日志可以查看发生了什么。

当我为我的自动缩放组列出挂钩时,我确实看到了它们:

$ aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name SAND-web-ASG 
{
    "LifecycleHooks": [
        {
            "GlobalTimeout": 60000,
            "HeartbeatTimeout": 600,
            "AutoScalingGroupName": "SAND-web-ASG",
            "LifecycleHookName": "CodeDeploy-managed-automatic-launch-deployment-hook-DeployToNewEC2underASG-...",
            "NotificationMetadata": "....",
            "DefaultResult": "ABANDON",
            "NotificationTargetARN": "arn:aws:sqs:us-west-1:blabla:blahh-us-west-1-prod-default-autoscaling-lifecycle-hook",
            "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING"
        }
    ]
}

这里有什么遗漏或错误吗? 这些不是自定义的,它们是由 codedeploy 创建的。

我按照指南使用 ASG 设置 codedeploy并且创建了所有内容但是由于某种原因当创建新实例时 codedeploy 不会创建新部署..我有点迷路为什么..

我的服务角色有 2 个 IAM 策略:

1 - 来自亚马逊 AWSCodedeployRole 的默认值

2 - 具有以下权限的 codePipelinePolicy(自定义):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "autoscaling:CompleteLifecycleAction",
        "autoscaling:DeleteLifecycleHook",
        "autoscaling:DescribeAutoScalingGroups",
        "autoscaling:DescribeLifecycleHooks",
        "autoscaling:PutLifecycleHook",
        "autoscaling:RecordLifecycleActionHeartbeat",
        "autoscaling:CreateAutoScalingGroup",
        "autoscaling:UpdateAutoScalingGroup",
        "autoscaling:EnableMetricsCollection",
        "autoscaling:DescribeAutoScalingGroups",
        "autoscaling:DescribePolicies",
        "autoscaling:DescribeScheduledActions",
        "autoscaling:DescribeNotificationConfigurations",
        "autoscaling:DescribeLifecycleHooks",
        "autoscaling:SuspendProcesses",
        "autoscaling:ResumeProcesses",
        "autoscaling:AttachLoadBalancers",
        "autoscaling:PutScalingPolicy",
        "autoscaling:PutScheduledUpdateGroupAction",
        "autoscaling:PutNotificationConfiguration",
        "autoscaling:PutLifecycleHook",
        "autoscaling:DescribeScalingActivities",
        "autoscaling:DeleteAutoScalingGroup",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus",
        "ec2:TerminateInstances",
        "tag:GetTags",
        "tag:GetResources",
        "sns:Publish",
        "cloudwatch:DescribeAlarms",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeInstanceHealth",
        "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
        "elasticloadbalancing:DeregisterInstancesFromLoadBalancer"
      ],
      "Resource": "*"
    }
  ]
}

我是不是在这里遗漏了什么,或者可能有什么我没有看到的错误(愚蠢的错误)?

任何建议真的很感激。 谢谢你,欧内斯特

根据您的描述,我没有看到您提到已成功部署到您的应用程序。 在扩展期间,CodeDeploy 将尝试部署应用程序的目标修订版,但如果未找到任何版本,则它根本不会发布部署,这将导致您看到的问题。 您应该执行部署以更新应用程序的目标修订版,然后尝试向上扩展并查看是否可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM