Amazon web services Setup CodePipeline-部署步骤的状态为失败

Amazon web services Setup CodePipeline-部署步骤的状态为失败,amazon-web-services,deployment,aws-code-deploy,amazon-lightsail,Amazon Web Services,Deployment,Aws Code Deploy,Amazon Lightsail,在下面设置CodeDeploy时,在设置CodePipeline的最后一步下 如果我单击“失败”下的“详细信息” 如果我点击执行详细信息链接 部署失败,因为找不到您的实例 部署组。检查部署组设置以确保 Amazon EC2实例或自动缩放组的标记 正确标识要部署到的实例,然后重试 再说一遍 这很可能是由于地点的问题——有时在弗吉尼亚州北部使用,有时在伦敦使用 IAM-不需要区域选择 S3-不需要区域选择 LightSail实例-伦敦A区(eu-west-2a) CodeDeploy应用程序

在下面设置CodeDeploy时,在设置CodePipeline的最后一步下

如果我单击“失败”下的“详细信息”

如果我点击执行详细信息链接

部署失败,因为找不到您的实例 部署组。检查部署组设置以确保 Amazon EC2实例或自动缩放组的标记 正确标识要部署到的实例,然后重试 再说一遍

这很可能是由于地点的问题——有时在弗吉尼亚州北部使用,有时在伦敦使用

  • IAM-不需要区域选择
  • S3-不需要区域选择
  • LightSail实例-伦敦A区(eu-west-2a)
  • CodeDeploy应用程序-北弗吉尼亚州(美国东部-1)
  • 代码部署管道-伦敦A区(eu-west-2a)
所以,我去了CodeDeploy,删除了位于N.Virginia的应用程序,并在伦敦创建了一个部署组。然后,在伦敦新建了一条管道

这次部署也失败了,但原因不同

整个部署失败,因为单个实例太多 部署失败,可用的正常实例太少 部署,或部署组中的某些实例 遇到问题

为了解决这个问题,我删除了两条管道并创建了一条新管道。由于我必须更改角色,我使用了
AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPipeline
,但这让我在创建管道时遇到了麻烦

无法创建角色 AWSCodePipelineServiceRole-eu-west-2-CodeDeploylight管道

因此,我将其更改为
AWSCodePipelineServiceRole-eu-west-2-codedeploylightsaildemap
。然后,这让我陷入了另一个问题

一项叫做 AWSCodePipelineServiceRole-eu-west-2-CodeDeploylight管道 已经存在。不允许重复的名称

因此,我返回并将管道名称更改为
CodeDeployLightsailDemoPi
,角色名称更改为
AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailDemoPi

这让我陷入了同样的困境

整个部署失败,因为单个实例太多 部署失败,可用的正常实例太少 部署,或部署组中的某些实例 遇到问题

我决定等待30分钟,创建一个新管道,命名为
CodeDeployLightsailPipeline
和角色名
AWSCodePipelineServiceRole-eu-west-2-CodeDeployLightsailPipelin
,但同样的问题发生了

这是部署ID>查看事件中显示的信息

据我所知,我应该找到

在其中,它提到了
目的地:/var/www/html/
,但在实例中没有这样的
/var/www/html
路径

所以,我在其中创建了这两个文件夹

并重新启动了部署

但它像以前一样失败了

如何将部署状态设置为成功


编辑 根据,此错误代码显示健康约束。所以,我现在读到:

根据评论:


为了重现这个问题,我使用CodeDeploy在我自己的Amazon Linux 2实例上部署了OP使用的应用程序。我可以验证
CodeDeployGitHubDemo
及其
appspec.yml
文件是否正确,并按预期工作

由于OP使用的是CodePipline(CP),因此建议后退一步,只关注使用CodeDeploy(CD)的部署,而不增加使用CP+CD组合的复杂性。这样就可以只关注CD问题,并且可以简化查找问题根源的过程。独立CD部署工作完成后,下一步是将CP合并到部署过程中,确切了解CD应该如何设置以工作


更具体地说,就是这样做的

  • 在IAM控制台中

    1.1。已删除一个角色(CodeDeployServiceRole)

    1.2。创建了一个服务角色

  • 在S3控制台中

    2.1。清空并删除一个桶(tiagocodedeploylightsailbucket)

    2.2。在欧盟伦敦(EU-west-2)创建了一个新桶

  • 返回位于的IAM控制台

    3.1。删除了一个策略(CodeDeployS3BucketPolicy)

    3.2。创建了一个新策略

  • 停留在IAM控制台中

    4.1。删除一个用户(LightSailCodeDeployUser)

    4.2。创建了一个新用户(请注意,它需要有一个不同的名称,否则将被删除)

  • 导航至Lightsail主页,网址为

    5.1。已删除以前的实例(codedeploy)

    5.2。使用Amazon Linux创建了一个新实例(Amazon_Linux_1)(请注意,如果使用Amazon Linux 2,则将达到)

  • 使用脚本

    mkdir /etc/codedeploy-agent/
    
    mkdir /etc/codedeploy-agent/conf
    
    cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml
    
    ---
    
    aws_access_key_id: ACCESS_KEY
    
    aws_secret_access_key: SECRET_KEY
    
    iam_user_arn: arn:aws:iam::525221857828:user/GeneralUser
    
    region: eu-west-2
    
    EOT
    
    wget https://aws-codedeploy-us-west-2.s3.us-west-2.amazonaws.com/latest/install
    
    chmod +x ./install
    
    sudo ./install auto
    
    然后

    然后

    最后,作为输出得到

    {
        "instanceNames": [
            "Amazon_Linux_1",
            "codedeploy"
        ]
    }
    
  • 导航到位于的CodeDeploy控制台

    8.1。删除应用程序(CodeDeployLightsailDemo)

    8.2。使用新部署组(CodeDeploymentGroup)创建新应用程序

  • 导航到位于的CodePipeline控制台

    9.1。删除管道(CodeDeployLightsailDemoPipeline)

    9.2。使用“新服务角色”创建新管道


  • 你的appspec文件是什么?@Marcin我不必创建一个。如果它是在进程中的任何位置自动创建的,我无法找到它。SSH在中运行了
    sudo find/-name“appspec”
    ,但它没有返回任何内容
    CodeDeployGitHubDemo
    。我只是使用CodeDeploy部署它,试图对其进行测试。在我看来,回购协议不是问题所在,尽管我
    aws deploy register-on-premises-instance --instance-name Amazon_Linux_1 --iam-user-arn arn:aws:iam::525221857828:user/GeneralUser --region eu-west-2
    
    aws deploy add-tags-to-on-premises-instances --instance-names Amazon_Linux_1 --tags Key=Name,Value=CodeDeployLightsailDemo --region eu-west-2
    
    aws deploy list-on-premises-instances --region eu-west-2
    
    {
        "instanceNames": [
            "Amazon_Linux_1",
            "codedeploy"
        ]
    }