Duck Yeon Kim
Duck Yeon Kim

Reputation: 117

circleci 2.0 can't find awscli

I'm using circleCI 2.0 and they can't find aws but their documents clearly say that aws is installed in default

when I use this circle.yml

version: 2
jobs:
  build:
    working_directory: ~/rian
    docker:
        - image: node:boron
    steps:
        - checkout
        - run:
            name: Pre-Dependencies
            command: mkdir ~/rian/artifacts
        - restore_cache:
            keys: 
              - rian-{{ .Branch }}-{{ checksum "yarn.lock" }}
              - rian-{{ .Branch }}
              - rian-master
        - run:
            name: Install Dependencies
            command: yarn install
        - run:
            name: Test
            command: |
              node -v
              yarn run test:ci
        - save_cache:
            key: rian-{{ .Branch }}-{{ checksum "yarn.lock" }}
            paths:
              - "~/.cache/yarn"
        - store_artifacts:
            path: ~/rian/artifacts
            destination: prefix
        - store_test_results:
            path: ~/rian/test-results
        - deploy:
            command: aws s3 sync ~/rian s3://rian-s3-dev/ --delete

following error occurs:

/bin/bash: aws: command not found
Exited with code 127

so if I edit the code this way

    - deploy:
        command: |
          apt-get install awscli
          aws s3 sync ~/rian s3://rian-s3-dev/ --delete

then i get another kind of error:

Reading package lists... Done


Building dependency tree       


Reading state information... Done

E: Unable to locate package awscli
Exited with code 100

Anyone knows how to fix this???

Upvotes: 4

Views: 5410

Answers (2)

minamijoyo
minamijoyo

Reputation: 3445

The document you are reading is for CircleCI 1.0 and for 2.0 is here:

https://circleci.com/docs/2.0/

In CircleCI 2.0, you can use your favorite Docker image. The image you are currently setting is node:boron, which does not include the aws command.

If you just want to make it work for now, you can install the aws command yourself in circle.yml.

apt-get update && apt-get install -y awscli

However, to take full advantage of Docker's benefits, it is recommended that you build a custom Docker image that contains the necessary dependencies such as the aws command.

You can write your custom aws-cli Docker image something like this:

FROM circleci/python:3.7-stretch

ENV AWS_CLI_VERSION=1.16.138
RUN sudo pip install awscli==${AWS_CLI_VERSION}

Upvotes: 7

wilson208
wilson208

Reputation: 352

I hit this issue when deploying to AWS lambda functions and pushing files to S3 bucket. Finally solved it and then built a docker image to save time in installing the AWS CLI every time. Here is a link to the image and the repo!

https://github.com/wilson208/circleci-awscli

https://hub.docker.com/r/wilson208/circleci-awscli/

Fire a PR in or open an issue if you need anything added to the image and I will get to it when I can.

Edit:

Also, checkout the readme on github for examples of deploying a package to Lambda or pushing files to S3

Upvotes: 1

Related Questions