【发布时间】:2021-01-16 23:03:41
【问题描述】:
在this tutorial 之后设置 CodeDeploy 时,在设置 CodePipeline 的最后一步下
如果我点击失败下的详细信息
如果我点击链接到执行详细信息
部署失败,因为找不到您的实例 部署组。检查您的部署组设置以确保 您的 Amazon EC2 实例或 Auto Scaling 组的标签 正确识别您要部署到的实例,然后尝试 再次。
这很可能是由于地点的问题 - 有时是在弗吉尼亚北部,有时在伦敦。
- IAM - 不需要选择区域。
- S3 - 不需要区域选择。
- LightSail 实例 - 伦敦,A 区 (eu-west-2a)
- CodeDeploy 应用程序 - 弗吉尼亚北部 (us-east-1)
- CodeDeploy 管道 - 伦敦,A 区 (eu-west-2a)
所以,我去了 CodeDeploy,删除了弗吉尼亚北部的应用程序,并在伦敦的部署组中创建了一个。然后,在伦敦创建了一条新管道。
这次部署也失败了,但原因不同
整体部署失败,因为单个实例太多 部署失败,可用的健康实例太少 部署,或者您的部署组中的某些实例是 遇到问题。
为了解决这个问题,我删除了两个管道并创建了一个新管道。由于我不得不改变角色,我使用了AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPipeline,但这让我在创建管道时遇到了麻烦
无法创建角色 AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPipeline
所以,我将其更改为 AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoP。然后,这让我陷入了另一个问题
一个名为 AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPipeline 已经存在。不允许重复名称。
所以,我回去将管道名称更改为CodeDeployLightsailDemoPi,并将角色名称更改为AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPi。
这让我陷入了同样的境地
整体部署失败,因为单个实例太多 部署失败,可用的健康实例太少 部署,或者您的部署组中的某些实例是 遇到问题。
我决定等待 30 分钟,然后创建一个新管道,将其命名为 CodeDeployLightsailPipeline 和角色名称 AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailPipelin,但同样的问题发生了。
这是部署 ID > 查看事件中显示的信息
根据Marcin,我应该找到appspec.yml
version: 0.0
os: linux
files:
- source: /index.html
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/install_dependencies
timeout: 300
runas: root
- location: scripts/start_server
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server
timeout: 300
runas: root
在其中,它提到了destination: /var/www/html/,但在实例中没有这样的/var/www/html 路径
所以,我在其中创建了这两个文件夹
并重新开始部署
但它像以前一样失败了。
我怎样才能让部署状态成功?
编辑
根据the documentation,此错误代码显示HEALTH_CONSTRAINTS。所以,我现在正在阅读:
【问题讨论】:
-
你的 appspec 文件是什么?
-
@Marcin 我不必创建一个。如果它是在过程中的任何地方自动创建的,我无法找到它。
-
SSH 进入并运行
sudo find / -name "appspec"但它没有返回任何内容 -
CodeDeployGitHubDemo很好。我刚刚使用 CodeDeploy 部署它以尝试对其进行测试。尽管我使用的是常规的 Amazon Linux 2 实例,而不是 Lightsale,但我认为 repo 不是这里的问题。也许你必须退后一步。您能否仅使用 CodeDeploy 进行部署,而不使用任何管道?从 github 获取代码,将其打包成 zip 并使用 codedeploy 从 S3 进行部署。这就是我所做的。 -
@Marcin 随意将其写为答案,然后我将对其进行编辑以包含有关已完成操作的更多详细信息。特别是,您可以突出显示“您必须退后一步”。成功了!
标签: amazon-web-services deployment aws-code-deploy amazon-lightsail