Circle CI上的AWS CLI工具:configure:unknown命令

时间:2015-03-18 01:28:04

标签: amazon-web-services ubuntu-12.04 aws-cli circleci

我尝试将Docker应用程序部署到Circle CI的Elastic Beanstalk上。

我的circle.yml的部署部分是

deployment:
  hub:
    branch: [internal, production]
    commands:
      - pip install awscli
      - docker push company/web:$CIRCLE_SHA1
      - sudo bash deploy.sh $CIRCLE_SHA1 $CIRCLE_BRANCH $CIRCLE_BUILD_NUM

我的deploy.sh按如下方式调用aws cli

aws --version
aws configure set aws_access_key_id $AWSKEY
aws configure set aws_secret_access_key $AWSSECRETKEY
aws configure set default.region us-west-2
aws configure set default.output json

echo "SAVING NEW DOCKERRUNFILE: $DOCKERRUN_FILE"
aws s3 cp $DOCKERRUN_FILE s3://$EB_BUCKET/$DOCKERRUN_FILE

但是我收到了错误

  

- 版本:错误的元参数?

     

完整性检查:" /root/.awssecret" ;:文件丢失。 (格式:AccessKeyID \ nSecretAccessKey \ n)

     

configure:unknown命令用法:aws ACTION [ - help]

该脚本在mac os上使用完全相同的密钥和密钥在本地完全正常工作。

awscli的两个版本(在圆圈和我的mac上)都是1.7.14

1 个答案:

答案 0 :(得分:7)

我来自CircleCI的凯文。看起来这里的问题与以下事实有关:当您安装Python依赖项时,CircleCI将它们安装到virtualenv中。这通常是一件好事,因为它将您的python环境与默认系统Python隔离开来,并支持我们的依赖项缓存。这里的问题是你用sudo运行你的deploy.sh脚本,它破坏了virtualenv环境并运行默认的系统版本(在这种情况下实际上是旧的替代AWS CLI)。删除sudo应该为你解决问题。 (你最好在"依赖关系"阶段运行pip install awscli==x.x.x,因为它会被缓存。)

PS:请联系sayhi@circleci.com以便及时回答问题。