【AWS】Github Actionsを使ってS3に静的コンテンツをデプロイしてみた・2

下記で同じことを実施したが、アクセスキーを使ったやり方だったので、セキュアにIAMロールを使ったやり方で実施してみた。
amegaeru.hatenablog.jp
やること
Github Actionsを使ってS3に静的コンテンツをデプロイする。
AWS認証にはIAMロールを使用する。
前提
Githubアカウントを取得していること
実践!
1.GitHubリポジトリ作成
1-1.Githubへログイン
1-2.「Repositories」-「New」

1-3.下記を入力し、「Create repository」
Repository name:<リポジトリ名>
Private:✅

2.IDプロバイダー、IAMロール作成
2-1.AWS - IAM
2-2.「ID プロバイダ」-「プロバイダを追加」

2-3.下記を入力し、「プロバイダを追加」
プロバイダのタイプ:OpenID Connect
プロバイダの URL::https://token.actions.githubusercontent.com
対象者::sts.amazonaws.com

2-4.「ロール」-「ロールを作成」

2-5.下記を入力し、「次へ」
信頼されたエンティティタイプ:ウェブアイデンティティ
アイデンティティプロバイダー:token.actions.githubusercontent.com
Audience:sts.amazonaws.com
GitHub 組織:Githubアカウント名
GitHub リポジトリ:リポジトリ名
GitHub ブランチ:main

2-6.「AdministratorAccess」にチェックを入れ、「次へ」

2-7.下記を入力し、「ロールを作成」
ロール名:<ロール名>
説明:空白


3.S3バケット作成
3-1.AWS - S3
3-2.「汎用バケット」-「バケットを作成」

3-3.下記を入力し、「バケットを作成」
バケットタイプ:汎用
バケット名:<バケット名>
オブジェクト所有者:ACL無効
パブリックアクセスをすべてブロック:□
バケットのバージョニング:無効にする
デフォルトの暗号化:Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)
バケットキー:無効にする



4.GitHubSecrets作成
4-1.Githubへログインし、作成したリポジトリへ移動
4-2.「Settings」-「Secrets and variables」-「Actions」-「New repository secret」

4-3.下記を入力し、「Add secret」
Name:IAM_ROLE_ARN
Secret:<IAMロールのARN>

5.GitHubActionsワークフローを作成
5-1.Githubへログインし、作成したリポジトリへ移動
5-2.「Actions」-「set up a workflow yourself」

5-3.下記を入力し、「Commit changes」
name: Deploy to S3 on: push: branches: - main permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout jobs: deploy: runs-on: ubuntu-latest steps: - name: Git clone the repository uses: actions/checkout@v3 - name: configure aws credentials uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ secrets.IAM_ROLE_ARN }} role-session-name: samplerolesession aws-region: ap-northeast-1 - name: Deploy to S3 run: | aws s3 sync ./deploy s3://<S3バケット名> --delete

5-4.「Commit changes」

6.動作確認
6-1.Githubへログインし、作成したリポジトリへ移動
6-2.「Code」-「+」-「Create new file」

6-3.上記テキストボックスで「deploy/」を入力
※末尾の「/」を入力すると自動でパスが追加される

6-4.上記テキストボックスに「index.html」と入力し、下記を入力、その後「Commit change」
<html> <body> test </body> </html>

6-5.「Commit changes」

6-6.「Actions」タブへ移動しWorkFlowが完了すること

6-7.S3のコンソールへ移動し、index.htmlがアップロードされていることを確認

感想
IAMロールのほうが安全だね(´ω`)ピカーン