Amazon s3 错误:总体部署失败,因为太多的单个实例部署失败
我正在尝试使用CircleCI->S3->CodeDeploy->EC2进行部署。 我能够从CircleCI将部署映像上载到S3,但无法将S3部署到EC2实例。这里是错误 整个部署失败,因为单个实例太多 部署失败,可用的正常实例太少 部署,或部署组中的某些实例 遇到问题。(错误代码:运行状况约束) 此错误由CodeDeploy提供。我不知道为什么和如何。Amazon s3 错误:总体部署失败,因为太多的单个实例部署失败,amazon-s3,amazon-ec2,circleci,aws-code-deploy,Amazon S3,Amazon Ec2,Circleci,Aws Code Deploy,我正在尝试使用CircleCI->S3->CodeDeploy->EC2进行部署。 我能够从CircleCI将部署映像上载到S3,但无法将S3部署到EC2实例。这里是错误 整个部署失败,因为单个实例太多 部署失败,可用的正常实例太少 部署,或部署组中的某些实例 遇到问题。(错误代码:运行状况约束) 此错误由CodeDeploy提供。我不知道为什么和如何。 如果您能提供一些建议,我将不胜感激。通过深入了解部署实例的详细信息,您应该能够找出导致各个实例失败的原因: 这些应该包含有关无法部署应用程序
如果您能提供一些建议,我将不胜感激。通过深入了解部署实例的详细信息,您应该能够找出导致各个实例失败的原因:
这些应该包含有关无法部署应用程序的原因的更详细信息。确保目标EC2实例中正在运行CodeDeploy Host Agent服务
从失败的部署中,我可以看到跳过了所有生命周期事件。实例i-0bcc36e73851297f2当前处于停止状态,但我可以看到IAM实例配置文件缺失。您的Amazon EC2实例需要获得访问Amazon S3存储桶或GitHub存储库的权限,AWS CodeDeploy将部署的应用程序存储在这些存储库中。要启动与AWS CodeDeploy兼容的Amazon EC2实例,必须创建一个额外的IAM角色,即实例配置文件 对于此类故障,您始终可以从失败部署的常规故障排除清单开始,然后查找有关部署问题和实例问题的故障排除指南 [ [ [“CodeDeploy代理在版本相对路径“AppSpec.yml”的未打包版本目录中未找到AppSpec文件” 请将appspec.yml文件放在根文件夹中以解决此错误
要访问您的后脚本和前脚本如果您在Ubuntu上运行,可能有很多原因,这里有一个清单可以验证 检查EC2实例上是否安装了代码部署代理。请参阅此文档以安装代码部署代理。 如果您运行的是UbuntuRelease20.x,您会遇到这个错误 ./install:22:in
块中的方法_缺失:未定义的方法
#(命名者)
尝试通过此脚本运行安装文件
sudo ./install auto > /tmp/logfile
检查您是否拥有EC2实例代码部署角色->创建代码部署角色并将其分配给实例
如果在启动后分配EC2角色,请重新启动服务器
根据上面的答案检查appsec.yml文件的位置,尽量避免长时间超时
登录您的实例检查您的错误日志
$tail-f/var/log/aws/codedeploy agent/codedeploy agent.log
此错误通常是由于appSpec.yml
或appSpec.json
文件的配置问题造成的(这取决于您使用的格式)
“如果您有任何钩子,我建议您删除它们,检查它是否有效,然后您可以逐个添加(钩子),以便识别错误”
appspec.yml
文件应位于项目的根目录下:
│-- appspec.yml
│-- index.html
└-- scripts
│-- install_dependencies
│-- start_server
└-- stop_server
在scripts
文件夹中,必须根据钩子放置要执行的进程
下面是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
我希望我可以帮助您检查代码部署代理的状态。在我的情况下,代理没有启动。在查看/var/log/aws/codedeploy Agent/codedeploy-Agent.log之后,我注意到IAM服务角色上有一些错误。但是它似乎配置正确。codedeploy完全访问权限就在那里。您知道分配给EC2 inst的角色吗首先,您需要将其配置为从S3获取权限:。它不需要CodeDeploy完全访问权限。谢谢。最终它可以工作了。这是YAML的格式问题。我检查了CodeDeploy config.中的一些日志,并随您的文档一起修改。@NoriakiTakamizawa您能分享您的解决方案吗?@Adnan抱歉。我上面写了我的解决方案。希望对你有所帮助。
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