この記事は公開されてから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のワークフローが動きますが、環境変数を設定していないので失敗します。
環境変数を設定
下記の環境変数を設定します。
Name | Value |
---|---|
AWS_ACCESS_KEY_ID | 取得したAccessKeyId |
AWS_SECRET_ACCESS_KEY | 取得したSecretAccessKey |
AWS_DEFAULT_REGION | ap-northeast-1 |
動作確認をする
失敗したパイプラインをRerunします。
成功しました!!
無事にS3バケットの一覧が取得できました!!!
aws s3 ls
コマンドが成功すれば、任意のAWS CLIコマンドが実行できますね。
さいごに
CircleC Orbsは便利ですね。いろいろ調べてみたいと思います。