Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS CLI tools on Circle CI: configure: unknown command

I'm trying to deploy a docker application onto Elastic Beanstalk from Circle CI.

The deployment section of my circle.yml is

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

and my deploy.sh calls aws cli as follows

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

But I get the error

--version: mispelled meta parameter?

sanity-check: "/root/.awssecret": file is missing. (Format: AccessKeyID\nSecretAccessKey\n)

configure: unknown command Usage: aws ACTION [--help]

The script works completely fine locally on mac os using the exact same key and secret.

Both versions (on circle and my mac) of awscli are 1.7.14

like image 501
Jacob Duval Avatar asked Mar 18 '15 01:03

Jacob Duval


People also ask

How do you check if AWS CLI is configured correctly?

Use the describe-configuration-recorder-status command to check that the AWS Config has started recording the configurations of the supported AWS resources existing in your account. The recorded configurations are delivered to the specified delivery channel.

Why AWS CLI not working?

If the aws command cannot be found after first installing or updating the AWS CLI, you might need to restart your terminal for it to recognize any PATH updates. If the aws command cannot be found after first installing or updating the AWS CLI, it might not have been fully installed.


1 Answers

I'm Kevin from CircleCI. It looks like the issue here is related to the fact that when you install Python dependencies CircleCI installs them into a virtualenv. This is usually a great thing, as it isolates your python environment from the default system Python and supports our dependency cacheing. The problem here is that you're running your deploy.sh script with sudo, which clobbers the virtualenv environment and runs the default system version (which in this case is actually an older alternative AWS CLI). Dropping the sudo should fix things for you. (You would also be better off running pip install awscli==x.x.x in the "dependencies" phase, as it would be cached then.)

PS: Please contact [email protected] for a timely response to questions in general.

like image 177
bellkev Avatar answered Oct 17 '22 19:10

bellkev