はじめに
今回はセットアップ済みの GitHub MCP (Model Context Protocol) を活用し、エージェントにGitHub Actionsの構築から、OIDC認証を用いたAWS S3へのデプロイまでをサポートしてもらいました。
今回の構成
| 要素 | 採用ツール / 技術 |
|---|---|
| IDE | Antigravity |
| Protocol | GitHub MCP (リポジトリ情報の読み取り・操作を代行) |
| CI/CD | GitHub Actions |
| Cloud | AWS S3 (静的サイトホスティング) |
| Auth | OIDC (OpenID Connect) |
1. AWS側の準備
OIDC方式では「アクセスキー」を発行する代わりに、GitHub Actionsからの接続を一時的に許可する設定を行います。
ID プロバイダの作成 (IAM)
-
プロバイダのタイプ:OpenId Connect
-
プロバイダのURL:
https://token.actions.githubusercontent.com -
対象者 (Audience):
sts.amazonaws.com
IAM ロールの作成
IAMの「ロールを作成」メニューから信頼されたエンティティタイプとして [ウェブアイデンティティ] を選択し、詳細を以下のように設定します。
- プロバイダのタイプ: ウェブアイデンティティ
-
アイデンティティプロバイダー:
token.actions.githubusercontent.com -
Audience:
sts.amazonaws.com - GitHub organization: GitHubユーザー名(または組織名)
- GitHub repository: 今回使用するリポジトリ名
-
GitHub branch:
main(特定のブランチに絞る場合)
S3バケットの設定
- バケット名: 任意
- 静的ウェブサイトホスティング: 有効
- パブリックアクセスブロック: オフ(検証のため)
-
バケットポリシー:
s3:GetObjectを許可。
2. GitHub Secretsへの認証情報登録
ワークフローを動かすために、AWSで作成したロールのARNなどの機密情報をGitHubリポジトリに安全に登録します。
- 対象リポジトリの [Settings] タブをクリック。
- 左サイドメニューの [Secrets and variables] > [Actions] を選択。
- [New repository secret] ボタンから以下の2つを登録します。
| Name | Secret |
|---|---|
AWS_ROLE_ARN |
IAMロールのARN(arn:aws:iam::...) |
S3_BUCKET_NAME |
作成したS3バケット名 |
3. CI/CDワークフローの生成と反映
Antigravityのエージェントに以下のプロンプトを投げました。
「AWS S3に自動デプロイするGitHub ActionsのYAMLを作りたい。認証はOIDC方式で、mainブランチへのpushする構成。」
提案された Workflow ファイル
name: Deploy to S3 (OIDC)
on:
push:
branches: [ main ]
permissions:
id-token: write # OIDC認証に必須
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }} # ロールARNを使用
aws-region: ap-northeast-1
- name: Deploy to S3
run: aws s3 sync . s3://${{ secrets.S3_BUCKET_NAME }} --delete --exclude ".git/*" --exclude ".github/*"
今回はこのファイルを手動でリポジトリに反映させました。
4. 実行とトラブルシューティング
実際にプッシュしてアクセスするとエラーに直面しましたが、エージェントとの対話で即座に解決できました。
日本語の文字化け
- 原因: HTMLの文字コード指定(UTF-8)がなかったため。
-
解決: 「文字化けしてる」と伝えると、
index.htmlの<head>に入れるべきタグを提示し、修正してくれました。
この修正もGitHubにプッシュするだけで、自動でS3に反映されることが確認できました。




