amazon-web-services - AWS CodeDeploy 每次都在 EC2 实例上失败
问题描述
我已经使用 jenkins 在 aws 上配置了一个 cicd 管道。我编写了一个非常小的应用程序,它只提供一个静态 index.html 文件。它一直在工作,但在 codedeploy 的最后一步中断。问题是,当我使用 aws codedeploy 项目从 jenkins 触发 codedeploy 时,它在 ec2 实例上的部署失败。Jenkins 日志没有提供足够的信息来调试它。我应该注意的几点-
- 我正在使用一次部署配置部署一个实例
- 我没有在 ec2 实例上安装 aws codedeploy 代理
- 我在哪里可以获得失败的详细日志?在这种情况下,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_server和start_server脚本仅用于启动停止 httpd 服务。
validate_service脚本仅检查 html 是否包含“世界”字样。
install_dependencies脚本只安装 httpd 服务
我对 aws devops 很陌生。非常感谢任何帮助。
解决方案
推荐阅读
- python - 如何修复模板渲染期间的错误
- express - 如何正确地将快递路线拆分为单独的文件?
- css - 下拉列表左侧的 Bootstrap NAVBAR 项 t
- amazon-web-services - 监控账户中 S3 存储桶的数量
- c - 在结构中查找偏移量
- prometheus - 入口控制器中 request_duration 和 response_duration prometheus 指标之间的区别
- r - 当所有值都在R中数据框的同一列中时计算百分比
- javascript - 传播不可迭代实例的无效尝试(在 React 的 reducer 中)
- git - Git: git pull --rebase 进入“分离 HEAD”状态
- javascript - 可以使用 javascript `??` 运算符作为简写吗