configure-aws-credentials v6.1.0で名前付きAWSプロファイルがサポートされたので試してみた

configure-aws-credentials v6.1.0で名前付きAWSプロファイルがサポートされたので試してみた

2026.04.11

configure-aws-credentials の v6.1.0 で、名前付きAWSプロファイルがサポートされました。

これまで configure-aws-credentials はクレデンシャルを環境変数として出力しており、プロファイルには対応していませんでした。以前、GitHub Actionsで複数AWSアカウントを扱う際に .aws/config をリポジトリに配置するワークアラウンドを紹介しました。

https://dev.classmethod.jp/articles/gha-terraform-aws-profile/

今回のアップデートで aws-profile インプットが追加され、~/.aws/credentials~/.aws/config にプロファイルとして書き出せるようになっています。

この機能を試してみました。

https://github.com/aws-actions/configure-aws-credentials/releases/tag/v6.1.0

何が変わったのか

追加されたインプットは2つあります。

インプット 説明
aws-profile プロファイル名を指定すると、環境変数ではなく ~/.aws/credentials~/.aws/config にクレデンシャルが書き出される
overwrite-aws-profile 既存プロファイルの上書きを許可する。デフォルトは false で、同名プロファイルがあるとエラーになる

aws-profile を指定すると output-env-credentials のデフォルトが false になります。環境変数にも出力したい場合は output-env-credentials: true を設定してください。

やってみた

OIDC認証 + 名前付きプロファイルの構成で試してみます。

単一プロファイル

1つのプロファイルを設定するパターンです。

name: Single Profile Example
on: push

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v6.1.0
        with:
          aws-region: ap-northeast-1
          role-to-assume: arn:aws:iam::123456789012:role/my-role
          aws-profile: myprofile

      - name: AWS CLIで確認
        run: |
          aws sts get-caller-identity --profile myprofile

aws-profile: myprofile を指定するだけです。~/.aws/credentials~/.aws/config にプロファイルが作成されます。

複数プロファイル(マルチアカウント)

devとprodの2アカウントをそれぞれプロファイルとして設定してみます。

name: Multi Profile Example
on: push

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS Credentials for Dev
        uses: aws-actions/configure-aws-credentials@v6.1.0
        with:
          aws-region: ap-northeast-1
          role-to-assume: arn:aws:iam::111111111111:role/dev-role
          aws-profile: dev

      - name: Configure AWS Credentials for Prod
        uses: aws-actions/configure-aws-credentials@v6.1.0
        with:
          aws-region: ap-northeast-1
          role-to-assume: arn:aws:iam::222222222222:role/prod-role
          aws-profile: prod

      - name: 各アカウントで操作
        run: |
          # dev アカウントの確認
          aws sts get-caller-identity --profile dev

          # prod アカウントの確認
          aws sts get-caller-identity --profile prod

configure-aws-credentials を2回呼び出し、それぞれ別のプロファイル名を指定しています。--profile で切り替えるだけなので、ローカルと同じ感覚で使えます。

実際にワークフローを動かしたところ、下記のように成功しました。

setup_oidc-roleのモジュール修正と環…form-aws-profile_43a3ca7.png

注意点

環境変数にクレデンシャルが出力されない

aws-profile を指定すると、デフォルトでは環境変数にクレデンシャルが出力されません。

実際に確認してみます。以下のワークフローで、aws-profile のみの場合と output-env-credentials: true を追加した場合を比較しました。

      # aws-profileのみで認証
      - name: Configure AWS Credentials for Dev
        uses: aws-actions/configure-aws-credentials@v6.1.0
        with:
          aws-region: ap-northeast-1
          role-to-assume: arn:aws:iam::111111111111:role/dev-role
          aws-profile: dev

      # 環境変数を確認
      - name: "環境変数の確認: aws-profileのみ"
        run: |
          echo "AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-(未設定)}"
          echo "AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:+(設定済み)}"
          echo "AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN:+(設定済み)}"

      # output-env-credentials: trueを追加して再認証
      - name: Configure AWS Credentials with output-env-credentials
        uses: aws-actions/configure-aws-credentials@v6.1.0
        with:
          aws-region: ap-northeast-1
          role-to-assume: arn:aws:iam::111111111111:role/dev-role
          aws-profile: dev
          overwrite-aws-profile: true
          output-env-credentials: true

      # 環境変数を確認
      - name: "環境変数の確認: output-env-credentials true"
        run: |
          echo "AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-(未設定)}"
          echo "AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:+(設定済み)}"
          echo "AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN:+(設定済み)}"

aws-profile のみの場合、環境変数は設定されていません。

Cursor_と_fix__ワークフローのstep名をYAML安全…form-aws-profile_7bf1608.png

output-env-credentials: true を追加すると、環境変数にもクレデンシャルが出力されます。

fix__ワークフローのstep名をYAML安全…form-aws-profile_7bf1608.png

環境変数も必要な場合は output-env-credentials: true を追加してください。

同名プロファイルの上書き

同名のプロファイルが既に存在する場合、デフォルトではエラーになります。

実際に overwrite-aws-profile を指定せずに同名プロファイル dev を再設定してみると、以下のようにエラーになりました。

overwrite-aws-profileの動作確認ス…rraform-aws-profile_008a2f0.png

overwrite-aws-profile: true を設定すると、同名プロファイルを上書きできます。

おわりに

1つのジョブで複数アカウントを扱うワークフローが書きやすくなりました。TerraformやCDKでマルチアカウントデプロイをしている方は試してみてください。

この記事をシェアする

関連記事