CircleCIでAWS CLIとGoogle Cloud SDKを同時に利用

CircleCIでS3からデータを取得してBigQueryに流し込むみたいなことをしたくなり、
イメージをいろいろ探してみたのですが微妙にいいものが見つからず、
自分でインストールすることにしました。

config.yml

最終的にできたconfig.ymlは以下なります。

references:
  commands:
    setup_awscli: &setup_awscli
      name: Setup AWS CLI
      command: |
          sudo apt-get update
          sudo apt-get install python3-pip groff-base
          sudo pip3 install awscli --ignore-installed six
          aws configure set aws_access_key_id ${AWS_ACCESS_KEY_ID}
          aws configure set aws_secret_access_key ${AWS_SECRET_ACCESS_KEY}
    setup_google_cloud_sdk: &setup_google_cloud_sdk
      name: Setup Google Cloud SDK
      command: |
          sudo apt-get install lsb-release
          export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
          echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
          sudo apt-get update && sudo apt-get install google-cloud-sdk
          echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=-
          gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
          gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
version: 2.0

jobs:
  build:
    working_directory: ~/work
    docker:
      - image: circleci/ruby:2.6.4
        environment:
          TZ: Asia/Tokyo
          AWS_DEFAULT_REGION: ap-northeast-1
    steps:
      - checkout
      - run: *setup_awscli
      - run: *setup_google_cloud_sdk
      - run: bq query --use_legacy_sql=false --format=json "SELECT 1"

環境変数設定

CircleCIのプロジェクトで以下の環境変数を追加する必要があります。

AWS_ACCESS_KEY_IDAWSのアクセスキー
AWS_SECRET_ACCESS_KEYAWSのシークレットアクセスキー
GCLOUD_SERVICE_KEYGCPのサービスアカウントを作成した時に発行されるJSONファイルの中身
GOOGLE_COMPUTE_ZONEGCPのタイムゾーン
GOOGLE_PROJECT_ID GCPのプロジェクトID

変数名はconfig.ymlで書いた名前と合っていれば変更して問題ありません。

補足

最初は google/cloud-sdk のイメージにAWSのCLIをインストールしようと試みたのですが、
sudoが見つからないといったエラーになってしまいました。

Google Cloud SDKのインストールを非対話型でインストールする必要もあり、
公式の「Cloud SDK のインストール-非対話型(サイレント)デプロイ」を参考にしました。

最後に

AWS CLIとGoogle Cloud SDKのインストールでかかる時間はそれぞれ30秒程度で特にストレスもなく使えています。
両方使えるイメージがあれば利用したいですが、ひとまずはこれでAWS、GCPそれぞれ自由にコマンド使えるので重宝しています。