我几个月前就已经运行过了,所以我知道它是有效的,但我已经创建了一个新的EC2实例来部署我的代码,并遇到了第一个障碍。
我的部署详细信息运行如下:
- 应用程序停止-成功
- 下载捆绑包-成功
- BeforeInstall-失败
查看失败事件后,我得到:
CodeDeploy代理在已解压缩的修订目录中的修订相对路径"AppSpec.yml"中找不到AppSpec文件。该修订已解压缩到目录"C:\ProgramData\Amazon/CodeDeploy/57f7ec1b-0452-444e-840c-4deb4566e82d/d-WH9HTZAW0/deploym-archive",应为AppSpec文件,但在路径"C:\ProgramData\Amazon/CodeDeploy/57f7ec1b-0425-444e-840c-4deb4566e82d/d-WH9HTZAW0/deploym-archive/AppSpec.yml"中找不到。有关更多信息,请参阅AWS CodeDeploy AppSpec文档http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html
问题是,如果我跳到我的EC2并复制并粘贴完整路径,我肯定会看到YML文件,以及S3存储桶中ZIP文件中的文件,因此它们已成功发送到EC2并解压缩。
所以我确信这不是权限问题,连接正在明确建立,S3 Bucket、CodeDeploy和我的EC2都很高兴。
我在StackOverflow上读了很多关于将AppSpec.yml文件更改为"AppSpec.yml"、"AppSpec.yaml"one_answers"AppSpec.jaml"的帖子,但仍然没有任何效果。
有什么明显的尝试吗?
好吧,经过几天的反复,解决方案令人难以置信地讨厌(和尴尬(。。。
在我的EC2实例中,"文件名扩展名"未被选中,所以我的AppSpec.yml实际上是AppSpec.yml.txt
如果其他人也有类似的问题,请先检查一下!!
如何压缩文件。很多时候,用户最终会"拉两下拉链"。要检查你是否解压缩.zip文件,它会给你文件还是文件夹?
当我们在Windows上压缩文件夹时,它基本上会在zip文件夹中创建一个文件夹,因此CodeDeploy代理无法读取它。因此,要压缩工件,请选择所有文件,然后右键单击将其压缩到同一位置。这样可以避免在zip中创建新文件夹。