Skip to content

Commit 0306442

Browse files
docs: Update GitHub Secrets setup guide with OIDC troubleshooting
- Add detailed OIDC provider creation steps - Add IAM role trust policy examples - Add troubleshooting section for 'Request ARN is invalid' error - Include verification commands for OIDC and IAM setup - Add step-by-step setup instructions for multi-account deployment
1 parent 07eda8c commit 0306442

1 file changed

Lines changed: 166 additions & 45 deletions

File tree

GITHUB_SECRETS_SETUP.md

Lines changed: 166 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,105 @@
1-
# GitHub Secrets設定ガイド
1+
# GitHub Secrets Setup Guide
2+
3+
## 概要
4+
このドキュメントでは、GitHub ActionsでAWS CloudFormationにデプロイするために必要なGitHub SecretsとIAMロールの設定手順を説明します。
25

36
## 必要なGitHub Secrets
47

5-
### 開発環境用
6-
- **`AWS_ROLE_ARN_DEV`**: 開発環境用のIAMロールARN
7-
-: `arn:aws:iam::123456789012:role/LambdaFramework-github-actions-role-dev`
8+
### 1. AWS_ROLE_ARN_DEV (開発環境用)
9+
- **説明**: 開発環境(deployブランチ)で使用するIAMロールのARN
10+
- ****: `arn:aws:iam::123456789012:role/LambdaFramework-github-actions-role`
811

9-
### 本番環境用
10-
- **`AWS_ROLE_ARN_PROD`**: 本番環境用のIAMロールARN
11-
-: `arn:aws:iam::987654321098:role/LambdaFramework-github-actions-role-prod`
12+
### 2. AWS_ROLE_ARN_PROD (本番環境用)
13+
- **説明**: 本番環境(mainブランチ)で使用するIAMロールのARN
14+
- ****: `arn:aws:iam::123456789012:role/LambdaFramework-github-actions-role`
1215

13-
## 設定手順
16+
## IAMロールとOIDCプロバイダーの設定
1417

15-
### 1. GitHub Secretsの設定
18+
### 1. OIDCプロバイダーの作成
1619

17-
1. GitHubリポジトリの **Settings****Secrets and variables****Actions** に移動
18-
2. **New repository secret** をクリック
19-
3. 以下のSecretsを追加:
20+
#### 開発環境用AWSアカウント
21+
```bash
22+
# OIDCプロバイダーの作成
23+
aws iam create-open-id-connect-provider \
24+
--url https://token.actions.githubusercontent.com \
25+
--client-id-list sts.amazonaws.com \
26+
--thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1
2027

28+
# 作成されたOIDCプロバイダーのARNを確認
29+
aws iam list-open-id-connect-providers
2130
```
22-
Name: AWS_ROLE_ARN_DEV
23-
Value: arn:aws:iam::<DEV_ACCOUNT_ID>:role/<DEV_ROLE_NAME>
2431

25-
Name: AWS_ROLE_ARN_PROD
26-
Value: arn:aws:iam::<PROD_ACCOUNT_ID>:role/<PROD_ROLE_NAME>
32+
#### 本番環境用AWSアカウント
33+
```bash
34+
# OIDCプロバイダーの作成
35+
aws iam create-open-id-connect-provider \
36+
--url https://token.actions.githubusercontent.com \
37+
--client-id-list sts.amazonaws.com \
38+
--thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1
39+
40+
# 作成されたOIDCプロバイダーのARNを確認
41+
aws iam list-open-id-connect-providers
2742
```
2843

2944
### 2. IAMロールの作成
3045

31-
各AWSアカウントで以下のIAMロールを作成:
32-
3346
#### 開発環境用IAMロール
3447
```json
48+
{
49+
"Version": "2012-10-17",
50+
"Statement": [
51+
{
52+
"Effect": "Allow",
53+
"Principal": {
54+
"Federated": "arn:aws:iam::YOUR_DEV_ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
55+
},
56+
"Action": "sts:AssumeRoleWithWebIdentity",
57+
"Condition": {
58+
"StringEquals": {
59+
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
60+
"token.actions.githubusercontent.com:sub": "repo:cloudnative-co/python-lambda-frame:ref:refs/heads/deploy"
61+
}
62+
}
63+
}
64+
]
65+
}
66+
```
67+
68+
#### 本番環境用IAMロール
69+
```json
70+
{
71+
"Version": "2012-10-17",
72+
"Statement": [
73+
{
74+
"Effect": "Allow",
75+
"Principal": {
76+
"Federated": "arn:aws:iam::YOUR_PROD_ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com"
77+
},
78+
"Action": "sts:AssumeRoleWithWebIdentity",
79+
"Condition": {
80+
"StringEquals": {
81+
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
82+
"token.actions.githubusercontent.com:sub": "repo:cloudnative-co/python-lambda-frame:ref:refs/heads/main"
83+
}
84+
}
85+
}
86+
]
87+
}
88+
```
89+
90+
### 3. IAMポリシーの作成
91+
92+
#### 開発環境用IAMポリシー
93+
```json
3594
{
3695
"Version": "2012-10-17",
3796
"Statement": [
3897
{
3998
"Effect": "Allow",
4099
"Action": [
41100
"cloudformation:*",
42-
"lambda:*",
43101
"s3:*",
102+
"lambda:*",
44103
"iam:*",
45104
"logs:*"
46105
],
@@ -50,7 +109,7 @@ Value: arn:aws:iam::<PROD_ACCOUNT_ID>:role/<PROD_ROLE_NAME>
50109
}
51110
```
52111

53-
#### 本番環境用IAMロール
112+
#### 本番環境用IAMポリシー
54113
```json
55114
{
56115
"Version": "2012-10-17",
@@ -59,8 +118,8 @@ Value: arn:aws:iam::<PROD_ACCOUNT_ID>:role/<PROD_ROLE_NAME>
59118
"Effect": "Allow",
60119
"Action": [
61120
"cloudformation:*",
62-
"lambda:*",
63121
"s3:*",
122+
"lambda:*",
64123
"iam:*",
65124
"logs:*"
66125
],
@@ -70,53 +129,115 @@ Value: arn:aws:iam::<PROD_ACCOUNT_ID>:role/<PROD_ROLE_NAME>
70129
}
71130
```
72131

73-
### 3. OIDCプロバイダーの設定
132+
## トラブルシューティング
133+
134+
### 1. "Request ARN is invalid" エラーの解決
135+
136+
#### A. OIDCプロバイダーの確認
137+
```bash
138+
# OIDCプロバイダーが存在するか確認
139+
aws iam list-open-id-connect-providers
140+
141+
# 特定のOIDCプロバイダーの詳細を確認
142+
aws iam get-open-id-connect-provider --open-id-connect-provider-arn arn:aws:iam::YOUR_ACCOUNT_ID:oidc-provider/token.actions.githubusercontent.com
143+
```
144+
145+
#### B. IAMロールの信頼関係の確認
146+
```bash
147+
# IAMロールの詳細を確認
148+
aws iam get-role --role-name LambdaFramework-github-actions-role
149+
150+
# 信頼関係(Trust Policy)を確認
151+
aws iam get-role-policy --role-name LambdaFramework-github-actions-role --policy-name trust-policy
152+
```
153+
154+
#### C. 正しいロールARNの確認
155+
```bash
156+
# 利用可能なIAMロールを一覧表示
157+
aws iam list-roles --query 'Roles[?contains(RoleName, `LambdaFramework`)].RoleName' --output table
158+
```
159+
160+
### 2. よくある問題と解決方法
161+
162+
#### A. OIDCプロバイダーが存在しない
163+
```bash
164+
# OIDCプロバイダーを作成
165+
aws iam create-open-id-connect-provider \
166+
--url https://token.actions.githubusercontent.com \
167+
--client-id-list sts.amazonaws.com \
168+
--thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1
169+
```
170+
171+
#### B. 信頼関係が正しくない
172+
- IAMロールの信頼関係で、正しいOIDCプロバイダーARNを指定
173+
- 正しいリポジトリ名とブランチ名を指定
174+
175+
#### C. GitHub Secretsが設定されていない
176+
- GitHubリポジトリのSettings → Secrets and variables → Actions
177+
- `AWS_ROLE_ARN_DEV``AWS_ROLE_ARN_PROD`を設定
74178

75-
各AWSアカウントでGitHub Actions用のOIDCプロバイダーを設定:
179+
## 設定手順
76180

181+
### 1. AWS CLIでOIDCプロバイダーを作成
77182
```bash
78-
# 開発環境
183+
# 開発環境用
79184
aws iam create-open-id-connect-provider \
80185
--url https://token.actions.githubusercontent.com \
81186
--client-id-list sts.amazonaws.com \
82187
--thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1
83188

84-
# 本番環境
189+
# 本番環境用
85190
aws iam create-open-id-connect-provider \
86191
--url https://token.actions.githubusercontent.com \
87192
--client-id-list sts.amazonaws.com \
88193
--thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1
89194
```
90195

91-
## デプロイ先の確認
196+
### 2. IAMロールを作成
197+
```bash
198+
# 開発環境用ロール
199+
aws iam create-role --role-name LambdaFramework-github-actions-role --assume-role-policy-document file://trust-policy-dev.json
200+
201+
# 本番環境用ロール
202+
aws iam create-role --role-name LambdaFramework-github-actions-role --assume-role-policy-document file://trust-policy-prod.json
203+
```
204+
205+
### 3. IAMポリシーをアタッチ
206+
```bash
207+
# 開発環境用ポリシー
208+
aws iam put-role-policy --role-name LambdaFramework-github-actions-role --policy-name LambdaFramework-github-actions-policy --policy-document file://policy-dev.json
209+
210+
# 本番環境用ポリシー
211+
aws iam put-role-policy --role-name LambdaFramework-github-actions-role --policy-name LambdaFramework-github-actions-policy --policy-document file://policy-prod.json
212+
```
213+
214+
### 4. GitHub Secretsを設定
215+
1. GitHubリポジトリにアクセス
216+
2. Settings → Secrets and variables → Actions
217+
3. New repository secretをクリック
218+
4. `AWS_ROLE_ARN_DEV``AWS_ROLE_ARN_PROD`を設定
219+
220+
## デプロイ環境マッピング
92221

93-
| ブランチ | AWSアカウント | スタック名 | 環境 |
94-
|---------|-------------|-----------|------|
95-
| `main` | 本番アカウント | `lambda-framework-prod` | production |
96-
| `deploy` | 開発アカウント | `lambda-framework-dev` | development |
222+
| ブランチ | 環境 | AWSロール | GitHub Secret |
223+
|---------|------|-----------|---------------|
224+
| main | production | LambdaFramework-github-actions-role | AWS_ROLE_ARN_PROD |
225+
| deploy | development | LambdaFramework-github-actions-role | AWS_ROLE_ARN_DEV |
97226

98-
## ローカルデプロイ
227+
## ローカルデプロイコマンド
99228

100-
### Bash版
229+
### 開発環境
101230
```bash
102-
# 開発環境(デフォルトAWS Profile)
103231
./deploy-env.sh development
232+
```
104233

105-
# 開発環境(指定AWS Profile)
106-
./deploy-env.sh development dev-profile
107-
108-
# 本番環境(指定AWS Profile)
109-
./deploy-env.sh production prod-profile
234+
### 本番環境
235+
```bash
236+
./deploy-env.sh production
110237
```
111238

112239
### PowerShell版
113240
```powershell
114-
# 開発環境(デフォルトAWS Profile)
115241
.\deploy-env.ps1 development
116-
117-
# 開発環境(指定AWS Profile)
118-
.\deploy-env.ps1 development dev-profile
119-
120-
# 本番環境(指定AWS Profile)
121-
.\deploy-env.ps1 production prod-profile
242+
.\deploy-env.ps1 production
122243
```

0 commit comments

Comments
 (0)