代码部署DownloadBundle错误

时间:2015-04-16 21:13:27

标签: amazon-web-services continuous-integration continuous-deployment aws-cli aws-code-deploy

我已经配置了代码部署并且工作了几周。它的设置使它从我们的CI服务器发送到代码部署。我们像这样部署(在容器中):

> pip install awscli aws deploy push --application-name $CD_APP_NAME
> --s3-location s3://$CD_BUCKET/$CD_KEY --ignore-hidden-files aws deploy create-deployment --application-name $CD_APP_NAME --s3-location
> bucket=$CD_BUCKET,key=$CD_KEY,bundleType=zip --deployment-group-name
> $CD_DEPLOYMENT_GROUP

最近,在DownloadBundle步骤中,每次自动部署都会导致代码部署失败,并显示错误:

> The request signature we calculated does not match the signature you
> provided. Check your key and signing method.

自从几天前工作以来,我认为我们的配置方面没有任何改变。

我尝试重新安装代码部署代理并从s3中删除部署包(以便通过CI脚本重新创建)

2 个答案:

答案 0 :(得分:1)

可能的一个原因是codedeploy-agent版本已更新,并且您没有正确指定密钥和存储桶名称。

确保在下面的bucket选项中仅使用存储桶名称,并在key中指定zip(包)的绝对路径(即,如果您的包在目录中,请确保在key中指定目录名称而不是存储桶中)

aws deploy create-deployment  --application-name xxx-app-dev  --deployment-config-name CodeDeployDefault.OneAtATime   --deployment-group-name xxx-appgroup-dev  --s3-location **bucket=xxx-cd-builds**,bundleType=zip,**key=dev/20150706081741UTC/xxx.zip** --profile aws-dev-codedeploy

答案 1 :(得分:1)

阿米特的回答是我问题的确切解决方案。使用Jenkins / CodeDeploy插件:

https://wiki.jenkins-ci.org/display/JENKINS/AWS+Codedeploy+plugin

给了我这个错误,因为我混淆了我的“桶”和“前缀”路径。存储桶字段 必须仅包含存储桶名称

我的错误配置:

  • S3 Bucket:“my-bucket / jenkins”
  • S3前缀:“$ BUILD_NUMBER”

这会创建 可用的S3路径 ,但etag会完全错误。

正确的配置:

  • S3 Bucket:“my-bucket”
  • S3前缀:“jenkins / $ BUILD_NUMBER”

一个巨大的高五到 Amit Doshi 。你摇滚,老兄。