我已经配置了代码部署并且工作了几周。它的设置使它从我们的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脚本重新创建)
答案 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路径 ,但etag会完全错误。
正确的配置:
一个巨大的高五到 Amit Doshi 。你摇滚,老兄。