首页 > 解决方案 > AWS CodeDeploy 每次都在 EC2 实例上失败

问题描述

在此处输入图像描述

我已经使用 jenkins 在 aws 上配置了一个 cicd 管道。我编写了一个非常小的应用程序,它只提供一个静态 index.html 文件。它一直在工作,但在 codedeploy 的最后一步中断。问题是,当我使用 aws codedeploy 项目从 jenkins 触发 codedeploy 时,它在 ec2 实例上的部署失败。Jenkins 日志没有提供足够的信息来调试它。我应该注意的几点-

  1. 我正在使用一次部署配置部署一个实例
  2. 我没有在 ec2 实例上安装 aws codedeploy 代理
  3. 我在哪里可以获得失败的详细日志?在这种情况下,cloudwatch 不会记录 codedeploy 日志。

错误日志-

HttpMethod: GET
URL: https://aws-devops-jenkins-docker.s3.amazonaws.com/aws_docker_codebuild_jenkins
Sending request to url: https://aws-devops-jenkins-docker.s3.amazonaws.com/aws_docker_codebuild_jenkins
Response Code: HTTP/1.1 200 OK
Success code from [100‥399]
Saving response body to /var/lib/jenkins/workspace/aws_docker_demo/aws-codebuild-artifact.zip
Zipping files into /tmp/#61-6687599754523764921.zip
Uploading zip to s3://aws-devops-jenkins-docker/#61-6687599754523764921.zip
Registering revision for application 'aws_docker_codedeploy_jenkins'
Creating deployment with revision at {RevisionType: S3,S3Location: {Bucket: aws-devops-jenkins-docker,Key: #61-6687599754523764921.zip,BundleType: zip,ETag: 86c6ace4adeaa41f5206ca96c6ff6637},}
Monitoring deployment with ID d-V1R54BRY1...
Deployment status: Created; instances: null
Deployment status: Created; instances: null
Deployment status: InProgress; instances: {Pending: 2,InProgress: 0,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 2,InProgress: 0,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 2,InProgress: 0,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 2,InProgress: 0,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: InProgress; instances: {Pending: 1,InProgress: 1,Succeeded: 0,Failed: 0,Skipped: 0,Ready: 0}
Deployment status: Failed; instances: {Pending: 0,InProgress: 0,Succeeded: 0,Failed: 1,Skipped: 1,Ready: 0}
Deployment did not succeed. Final status: Failed
ERROR: Step ‘Deploy an application to AWS CodeDeploy’ failed: null
Finished: FAILURE

构建规范.yml

version: 0.2

phases:
  install:
    runtime-versions:
      nodejs: 10
    commands:
      - echo "installing nodejs"
  pre_build:
    commands:
      - printenv
      - echo "we are in the pre build phase"
  build:
    commands:
      - echo "we are in the build block"
      - echo "running test ...."
      - grep -Fq "cloud" index.html
  post_build:
    commands:
      - echo "we are in the post build phase"

artifacts:
  files:
    - '**/*'
  name: aws_devops_poc_mywebb_artifacts

应用规范.yml

version: 0.0
os: linux
files:
  - source: /index.html
    destination: /var/www/html/ 
Hooks:
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root

  AfterInstall:
    - location: scripts/after_install.sh
      timeout: 300
      runas: root

  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - scripts/start_server.sh
      timeout: 300
      runas: root

  ValidateService:
    - location: scripts/validate_service.sh
      timeout: 300

stop_serverstart_server脚本仅用于启动停止 httpd 服务。

validate_service脚本仅检查 html 是否包含“世界”字样。

install_dependencies脚本只安装 httpd 服务

我对 aws devops 很陌生。非常感谢任何帮助。

标签: amazon-web-servicesjenkinsamazon-ec2devops

解决方案


推荐阅读