👋
GitHub から AWS CodeCommitへのpush-AWS側
GitHubからAWS CodeCommitへのpush
概要
GitHub Actionsを利用してブランチへのプッシュをトリガーに、
OIDC認証を利用してAWS CodeCommitへpushを行う設定手順。
GitHubのプランによってはGitHub Actionsが使えない。
- OpenID Connect (OIDC)
- GitHub Actions
AWS側の設定
CodeCommit
CodeCommitにアクセスし同期先のリポジトリを作成。
リポジトリを作成
「リポジトリを作成」ボタンを押下。
リポジトリの設定
- 「リポジトリ名」を入力。
- 「説明」を入力。
- 「作成」ボタンを押下。
作成完了
Identity and Access Management (IAM)にアクセス
IAMでGitHubからのAWSへの接続が行えるようにアクセス認証の設定を行う。
ポリシー作成
「ポリシーを作成」ボタンを押下。
ポリシー設定
- 「JSON」タブを選択。
- 下記のJSONに置き換える。
Pushが行えれば良いので、GitPushのみ許可。
Resourceに上記で作成したリポジトリのリポジトリARNを設定。
- リポジトリを1つ設定する場合
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "codecommit:GitPush",
"Resource": "arn:aws:codecommit:リージョン:ID:GitHubCodeCommitSync"
}
]
}
- リポジトリを複数設定する場合
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "codecommit:GitPush",
"Resource": [
"arn:aws:codecommit:リージョン:ID:GitHubCodeCommitSync",
"リポジトリARN",
"リポジトリARN"
]
}
]
}
- 「次のステップ:タグ」ボタンを押下。
タグ追加
- 必要に応じてタグを追加。
- 「次のステップ:確認」ボタンを押下。
ポリシー名を設定
- 「名前」を入力。
- 「説明」を入力。
- 「ポリシーの作成」ボタンを押下。
作成完了
IDプロバイダ作成
「プロバイダを追加」ボタンを押下。
プロバイダの設定
GitHub Docs の情報を元に、プロバイダ設定を行う。
- 「プロバイダのタイプ」は「OpenID Connect」を選択。
- 「プロバイダのURL」は「
https://token.actions.githubusercontent.com
」を入力。 - 「サムプリントを取得」ボタンを押下。
- 「対象者」は「
sts.amazonaws.com
」を入力。 - 必要に応じてタグを追加する。
- 「プロバイダを追加」ボタンを押下。
作成完了
完了メッセージの「ロールの割り当て」ボタンを押下。
ロールの割り当て
作成したIDプロバイダーを利用したロールの作成を行う。
- 「新しいロールを作成」を選択。
- 「次へ」ボタンを押下。
ロールの作成
- 「ウエブID」を選択。
- 「IDプロバイダー」は「
token.actions.githubusercontent.com:aud
」を選択。 - 「Audience」は「
sts.amazonaws.com
」を選択。 - 「次のステップ:アクセス権限」ボタンを押下。
アクセス権限ポリシー割り当て
- 上記で作成しておいたポリシーを割り当て。
- 「次のステップ:タグ」ボタンを押下。
タグ追加
- 必要に応じてタグを追加。
- 「次のステップ:確認」ボタンを押下。
作成するロールの確認
- 「ロール名」を入力。
- 「ロール説明」を入力。
- 「ロールの作成」ボタンを押下。
作成完了
ロールの信頼関係を編集
- 作成したロールを開く。
- 「信頼関係」を選択。
- 「信頼ポリシーを編集」ボタンを押下。
編集
- 編集前
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::ID番号:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
}
}
}
]
}
- 編集後
「StringLike」を追加、GitHubの情報を定義。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::ID番号:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
},
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:リポジトリオーナー/リポジトリ:ref:refs/heads/ブランチ"
}
}
}
]
}
更新
- セキュリティやエラーがない事を確認。
- 「ポリシーを更新」ボタンを押下。
完了
- 作成したロールの「ARN」を控えておく。
- 作成したCodeCommitの「HTTPSリポジトリURL」を控えておく。
AWS側の設定は以上で完了。
次はGitHub側で、Actionsを定義。
Discussion