我试图用Travis实现一个docker应用的持续部署系统,测试运行正常,当travis进入部署阶段时,我在尝试部署到AWS Elastic Beanstalk时得到以下错误。
/home/travis/.rvm/gems/ruby-2.4.5/gems/aws-sdk-core-2.11.523/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': The request signature we calculated does not match the signature you provided. Check your key and signing method. (Aws::S3::Errors::SignatureDoesNotMatch)
下面是我的travis.yml文件
language: generic
services:
- docker
before_install:
- docker build -t nurul3101/docker-react -f Dockerfile.dev .
script:
- docker run -e CI=true nurul3101/docker-react npm run test -- --coverage
deploy:
provider: elasticbeanstalk
region: "ap-south-1"
app: "docker-react-app"
env: "DockerReactApp-env"
bucket_name: "elasticbeanstalk-ap-south-1-378997148642"
bucket_path: "docker-react-app"
on:
branch: master
access_key_id: $AWS_ACCESS_KEY
secret_access_key:
secure: $AWS_SECRET_KEY
如何解决这个问题?
该错误 (Aws::S3::Errors::SignatureDoesNotMatch)
表示问题是由于权限造成的。我可以看到你在你的应用程序中传递了$AWS_ACCESS_KEY和$AWS_SECRET_KEY。travis.yml
文件。
第一步,你可以检查你的travis仓库设置中的值是否正确。
而不是通过 $AWS_SECRET_KEY
中的安全密钥,直接传给secret_access_key。像。
secret_access_key: $AWS_SECRET_KEY
根据Travis的最新更新,这才是正确的方法。这是Travis论坛中讨论这个问题的一个帖子。Travis论坛