CircleCI OrbsでAWS CLIを超簡単に導入して使ってみる

CircleCI Orbsを使えば、AWS CLIの導入が超簡単にできました。
2021.01.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

CircleCI Orbsを利用して、AWS CLIを超簡単に導入してみました。

おすすめの方

  • CircleCIでAWS CLIを使いたい方

CircleCI用のIAMユーザを準備する

IAMユーザの作成

まずは前準備としてCircleCI用のIAMユーザを作成します。

aws iam create-user \
    --user-name circleci-test-user

IAMユーザにIAMポリシーをアタッチ

さきほど作成したIAMユーザに対して、S3に対するRead権限を付与します(動作確認用の権限)。

aws iam attach-user-policy \
    --user-name circleci-test-user \
    --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

なお、実際にCI/CDを構築するときは、AssumeRoleを用いたセキュアな方法を推奨します。

アクセスキーの取得

下記コマンドでアクセスキーを取得します。

aws iam create-access-key \
    --user-name circleci-test-user

取得したアクセスキーは、あとでCircleCIの環境変数に設定します。

CircleCIのワークフローを作成する

GitHubの任意リポジトリにCircleCIの設定ファイルを作成します。

mkdir .circleci
touch .circleci/config.yml

中身は下記とします。CircleCI Orbsの宣言と使用が簡単に記載できます。

config.yml

version: 2.1
executors:
  deploy_container:
    docker:
      - image: circleci/python:3.8.7
    working_directory: ~/work

orbs:
  aws-cli: circleci/aws-cli@1.3.2

commands:
  lint_and_unit_test:
    steps:
      - run:
          name: lint and unit test
          command: |
            set -x

            echo "any lint and unit test command"

  deploy:
    steps:
      - run:
          name: deploy
          command: |
            set -x

            aws --version

            echo "any deploy command"

            aws s3 ls

jobs:
  lint_and_unit_test:
    executor: deploy_container
    steps:
      - checkout
      - lint_and_unit_test

  deploy:
    executor: deploy_container
    steps:
      - checkout
      - aws-cli/install
      - deploy

workflows:
  version: 2
  release-workflow:
    jobs:
      - lint_and_unit_test:
          filters:
            tags:
              only: /.*/
      - deploy:
          filters:
            branches:
              only: /.*/
            tags:
              only: /.*/
          requires:
            - lint_and_unit_test

CircleCIの設定を行う

プロジェクトのセットアップ

リポジトリをPushし、CircleCIでSet Up Projectを選択します。

CircleCIでプロジェクト設定をする

CircleCIのワークフローが動きますが、環境変数を設定していないので失敗します。

CircleCIのJobが失敗する

環境変数を設定

下記の環境変数を設定します。

Name Value
AWS_ACCESS_KEY_ID 取得したAccessKeyId
AWS_SECRET_ACCESS_KEY 取得したSecretAccessKey
AWS_DEFAULT_REGION ap-northeast-1

環境変数を設定する

動作確認をする

失敗したパイプラインをRerunします。

Rerunする

成功しました!!

Job実行が成功する

無事にS3バケットの一覧が取得できました!!!

S3バケットの一覧が取得できた

aws s3 lsコマンドが成功すれば、任意のAWS CLIコマンドが実行できますね。

さいごに

CircleC Orbsは便利ですね。いろいろ調べてみたいと思います。

参考