あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【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ロールのほうが安全だね(´ω`)ピカーン