在屏幕截图下方,它似乎仅在一个可用区中成功。
我检查了codedeploy日志中是否有失败的实例,我发现有错误,我认为它被认为是一个内部部署的实例。
2018-01-10 04:40:22 INFO [codedeploy-agent(2696)]: On Premises配置文件不存在或不可读
2018-01-10 04:40:43错误[codedeploy-agent(2696)]:CodeDeploy实例代理服务:CodeDeploy实例代理服务:启动或运行期间出错:InstanceMetadata :: InstanceMetadataError - 不是EC2实例和区域环境变量AWS_REGION中未提供。请使用环境变量AWS_REGION .......
指定您的区域
我已经为这个问题搜索了大约三天,但AWS文档中没有提及。在生产环境中,我计划使用附加到自动缩放组的两个可用区。我想知道我是否忽略了除CodeDeploy之外的其他事情......我该怎么办?提前谢谢。
[更新] 我用ASG和ASG Config screent shot更新了。没有什么特别的,它是vanila和默认流程。我在AWS支持中心等待了5天,但仍在等待回复。
答案 0 :(得分:2)
最后,我发现了为什么codedeploy在Windows 2016上跨多个可用区域失败的原因。此外,这个问题似乎是Windows 2016 EC2本身的问题,而不是ASG或codedeploy(我还没有在linux上测试过)。我找到了两种解决方案,
第一种方法是直观方便的方式(GUI),第二种方法适用于自动化PowerShell脚本。我已经确认这两种方法都可以成功部署到多个AZ。 codedeployagent记录的日志中没有错误。
更具体地说,codedeployagent在部署时会留下各种日志,我发现代理似乎使用了169.254.169.254中的元信息。当我失败时,日志会说“你是On-Premise Instance。”。可能部署失败,因为实例无法获取元信息。在下面的文档中,我收到了很多帮助,列出了我的所有解决方案。
https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html
特别是在文件中
.....在Windows PowerShell中,运行以下命令,以便系统将脚本计划为作为Windows计划任务运行。该脚本在下次引导期间运行一次,然后禁止这些任务再次运行....
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule