【发布时间】:2017-12-23 22:45:22
【问题描述】:
我在 ASG 下有 2 个 EC2 实例。我使用设置为使用自动缩放的 DeploymentGroup1 在 codeDeploy 中创建了 Application1。
我面临的问题是,当配置新的 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 创建的。
我一直在关注guide to setup codedeploy with ASG,所有内容都已创建,但由于某种原因,当创建新实例时,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": "*"
}
]
}
我在这里遗漏了什么,或者我没有看到什么错误(愚蠢的错误)?
任何建议都非常感谢。 谢谢, 欧内斯特
【问题讨论】:
-
是否已在这些 EC2 实例上安装并运行 CodeDeploy 代理?如果没有,它必须是。如果是,请检查 CodeDeploy 代理的日志(在 /opt/codedeploy-agent/deployment-root/deployment-logs 中)。
-
是的,代理已安装。
这是Amazon Linux OS,日志在/var/log/aws/codedeploy-agent/codedeploy-agent.log下
它显示2017-07-19 15:17:13 INFO [codedeploy-agent(3534)]: Version file found in /opt/codedeploy-agent/.version. 2017-07-19 15:18:13 INFO [codedeploy-agent(3534)]: [Aws::CodeDeployCommand::Client 200 60.290274 0 retries] poll_host_command(host_identifier:"arn:aws:ec2:us-west-1:<ACCOUNT-ID>:instance/i-<INSTANCE-ID>") 2017-07-19 15:18:14 INFO [codedeploy-agent(3534)]: Version file found in /opt/codedeploy-agent/.version.
谢谢 -
如果您还没有,请查看故障排除指南 (docs.aws.amazon.com/codedeploy/latest/userguide/…)。
标签: amazon-web-services autoscaling aws-code-deploy