CircleCI で Severless Framework のデプロイを IAM ロールを使ってクロスアカウントでやる
CircleCI で ServerlessFramework のデプロイを行うときに環境変数で設定した AWS クレデンシャルから別のアカウントにデプロイしたいパターンがあったのでメモ。
別のアカウントのクレデンシャルを CircleCI のコンテキスト使って環境変数に登録してしまえばいいじゃないかとも考えましたが、何個もクレデンシャル登録したくないなーということでスイッチロールでできないかやってみました。
先に結論
試した環境
aws-cli 自体のインストール、 serverless framework は公式 orbs を使っています。
- CircleCI 2.1
- Orbs
- circleci/[email protected]
- circleci/[email protected]
config.yml
aws cli のクレデンシャルに直接スイッチ先の情報を書き込んでいます
"setup credential":
steps:
- aws-cli/setup:
aws-access-key-id: AWS_ACCESS_KEY
aws-region:AWS_REGION
aws-secret-access-key: AWS_SECRET_KEY
profile-name: jump
- run:
name: setup credential
command: |
echo "[hogehoge]" >> ~/.aws/credentials
echo "region = {リージョン名}" >> ~/.aws/credentials
echo "role_arn = {IAM ロール ARN}" >> ~/.aws/credentials
echo "source_profile = jump" >> ~/.aws/credentials
- serverless/setup
- run:
name: deploy
command: sls deploy
試してダメだったこと
aws cli の configure set を使う
config.yml の中でジャンプ先のクレデンシャルを作るのに configure set を使ってみましたが、 API キー を空だったり適当な値を入れると sls deploy
がエラーになってしまいます。
かと言って、 API キーを登録しないでとりあえずリージョンなど登録してもクレデンシャルが作られず ~/.aws/config
の方に書き込まれてしまって、 sls deploy
実行時に「クレデンシャルがないよ!」と怒られてしまいました。
- run:
name: setup credential
command: |
aws configure set region {リージョン名} --profile hogehoge
aws configure set role_arn {IAM ロール ARN} --profile hogehoge
aws configure set source_profile jump --profile hogehoge
# 空の API キーは NG でした
aws configure set aws_access_key_id "" --profile hogehoge
aws configure set aws_secret_access_key "" --profile hogehoge
サードパーティーの orbs を使う
公式 aws-cli はスイッチロールは対応してませんが、サードパーティーな orbs でこの辺の拡張してたりしないだろうか・・・ということで探してみました。
発見!
https://circleci.com/orbs/registry/orb/appfolio/awscli
なぜか source_profile
に自分自身を設定しているのでスイッチロールできなさそう・・・。
参考
Author And Source
この問題について(CircleCI で Severless Framework のデプロイを IAM ロールを使ってクロスアカウントでやる), 我々は、より多くの情報をここで見つけました https://qiita.com/kobarasukimaro/items/e9b9a46df517b92635c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .