
OpenTacoで複数のAWSアカウントにリソースをデプロイする方法をまとめてみた
OpenTacoで複数のAWSアカウントにリソースをデプロイする方法をまとめました。
大きく以下の3つの方法があります。
digger.ymlでIAMロールを指定する- AWSプロファイルでIAMロールを切り替える
- AWSアカウント毎にGitHub Actionsワークフローファイルを作成する
比較
| 観点 | digger.yml | AWSプロファイル | ワークフロー分割 |
|---|---|---|---|
| セットアップの手軽さ | シンプル | Jumpアカウントの構築が必要 | シンプル |
| AWSアカウント構成 | 各アカウントにOIDCロール | Jumpアカウント + 各アカウントにAssumeRole用ロール | 各アカウントにOIDCロール |
| アカウント追加時の変更箇所 | digger.yml |
.aws/config + digger.yml |
ワークフローファイル + digger.yml |
| IAMロールの管理場所 | digger.yml |
.aws/config |
ワークフローファイル |
| ワークフローファイル数 | 1つ | 1つ | アカウント数分 |
使い分けの目安
- 手軽に始めたい場合は、
digger.ymlでのIAMロール指定がおすすめです。設定がdigger.ymlに集約されるため管理もシンプルです - Jumpアカウントを経由するアカウント構成が既にある場合は、AWSプロファイルを利用する方法が既存の構成を活かせます
- アカウント毎にワークフローの権限や実行環境を完全に分離したい場合は、ワークフロー分割が適しています
方法1: digger.ymlでIAMロール指定
digger.ymlのaws_role_to_assumeフィールドで、プロジェクト毎に引き受けるIAMロールを指定する方法です。
各AWSアカウントにGitHub Actions OIDC用のIAMロールを作成し、digger.ymlでプロジェクトとIAMロールを紐づけます。
ワークフローファイルではIAMロールを指定する必要がなく、setup-aws: falseで運用できます。
詳細は以下の記事で解説しています。
方法2: AWSプロファイルでIAMロール切替
.aws/configにAWSプロファイルを定義し、Jumpアカウント経由で各環境アカウントのIAMロールを引き受ける方法です。
Jumpアカウントに対してGitHub Actions OIDCで認証し、そこから各環境アカウントへAssumeRoleする構成になります。
ワークフローファイルにはJumpアカウントのIAMロールのみを設定するため、アカウントが増えてもワークフローファイルの変更は不要です。
詳細は以下の記事で解説しています。
方法3: AWSアカウント毎にGitHub Actionsワークフローファイルを作成する
AWSアカウント毎にGitHub Actionsワークフローファイルを作成し、各ワークフローでOIDC認証を行う方法です。
ワークフローファイルが完全に分離されるため、アカウント毎に異なるランナーや権限設定を柔軟に構成できます。
一方、アカウント数が増えるとワークフローファイルも増えるため、管理コストが高くなる点には注意が必要です。
詳細は以下の公式ドキュメントをご確認ください。
おわりに
OpenTacoで複数のAWSアカウントにリソースをデプロイする3つの方法を紹介しました。
どの方法でも複数アカウントへのデプロイは実現できるため、既存のAWSアカウント構成や運用方針に合わせて選択していただければと思います。








