2017-07-18 55 views
2

我在ASG下有2個EC2實例。我使用設置爲使用Autoscaling的DeploymentGroup1在codeDeploy中創建了Application1。如何使用codedeploy自動將代碼自動部署到ASG下新創建的EC2實例?

我正面臨的問題是,當供應新的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 - codePipelinePolicy(自定義)具有下列權限 - 從亞馬遜AWSCodedeployRole

2默認:

{ 
    "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": "*" 
    } 
    ] 
} 

我在這裏錯過了什麼,或者有什麼不對(愚蠢的錯誤),我沒有看到?

任何意見真的很感激。 謝謝 歐內斯特

+1

是否在這些EC2實例上安裝並運行了CodeDeploy代理?如果不是,它需要。如果是,請檢查CodeDeploy代理中的日誌(位於/ opt/codedeploy-agent/deployment-root/deployment-logs中)。 – jarmod

+0

是的,安裝了代理。
它是亞馬遜Linux操作系統,日誌位於/var/log/aws/codedeploy-agent/codedeploy-agent.log
並顯示
'2017-07-19 15:17:13 INFO [codedeploy-agent( 3534)]:在/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 ::instance/i- 「) 2017-07-19 15:18:14 INFO [codedeploy-agent(3534)]:在/ opt/codedeploy-agent/.version.'中找到的版本文件
謝謝 – kabucek

+0

如果您還沒有,請查看故障排除指南(http://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting.html)。 – jarmod

回答

0

從你的描述,我沒有看到你提到的已經進行了成功部署應用程序。在擴展過程中,CodeDeploy將嘗試部署應用程序的目標修訂版,但如果找不到任何內容,那麼它將根本不會發布部署,這會導致您遇到的問題。您應該執行部署來更新應用程序的目標修訂版,然後嘗試擴展並查看是否可以解決問題。

+0

問題是缺少權限。在我正確設置IAM策略之後,所有事情都開始運行 – kabucek

+0

有沒有人成功編寫lambda函數來創建codedeploy部署? 我在AWS [論壇](https://forums.aws.amazon.com/message.jspa?messageID=796320#796320)上發帖,但似乎這裏的人更快。 在此先感謝。 – kabucek