1

我已经配置了代码部署并工作了几个星期。它已设置为从可交付的 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 脚本重新创建)

4

2 回答 2

1

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

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

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
于 2015-07-06T11:51:08.317 回答
1

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

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

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

我的错误配置:

  • S3 存储桶:“我的存储桶/詹金斯”
  • S3 前缀:“$BUILD_NUMBER”

这将创建一个可用的 S3 路径,但 etag 将是完全错误的。

正确的配置:

  • S3 存储桶:“我的存储桶”
  • S3 前缀:“jenkins/$BUILD_NUMBER”

给Amit Doshi一个巨大的高五。你摇滚,伙计。

于 2015-12-16T22:37:47.770 回答