Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 错误:总体部署失败,因为太多的单个实例部署失败_Amazon S3_Amazon Ec2_Circleci_Aws Code Deploy - Fatal编程技术网

Amazon s3 错误:总体部署失败,因为太多的单个实例部署失败

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提供。我不知道为什么和如何。 如果您能提供一些建议,我将不胜感激。通过深入了解部署实例的详细信息,您应该能够找出导致各个实例失败的原因: 这些应该包含有关无法部署应用程序

我正在尝试使用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