LoginSignup
0
0

Hugo + CloudFront + S3 + GitHub Actions でCI/CD付きブログサイトを構築してみる Part4 IAM周りの作成

Posted at

概要

の続きです。
IAM周りの作成を行います。参考サイトでは「OpenID Connect ID Provider」と「IAM ロール」の部分です。

image.png
この記事はそのメモやまとめです。
すでに設定済みの項目がいくつかある。
試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。

完成した資材

# IAMポリシーを定義
data "aws_iam_policy_document" "s3_policy_for_github_actions" {
  statement {
    effect    = "Allow"
    actions   = ["s3:ListBucket", "s3:PutObject"]
    resources = ["arn:aws:s3:::hogehoge", "arn:aws:s3:::hogehoge/*"]
  }
}

resource "aws_iam_policy" "s3_policy_for_github_actions" {
  name = "S3AccessPolicy"
  Path = "/"
  policy = data.aws_iam_policy_document.s3_policy_for_github_actions.json
}


# assumerole用のIAMロールを定義
data "aws_iam_policy_document" "github_assume_role" {
  statement {
    actions = ["sts:AssumeRoleWithWebIdentity"]
    effect = "Allow"

    principals {
      type        = "Federated"
      identifiers = arn:aws:iam::xxxx
    } 
  }
  condition {
    test     = "StringLike"
    variable = "token.actions.githubusercontent.com:sub"
    values   = "repo:my-repo/hogehoge:*"
    }
}

resource "aws_iam_role" "github_assume_role" {
  name               = "github_assume_role"
  assume_role_policy = data.aws_iam_policy_document.assume_role.json
}

# IAMロールにIAMポリシーをアタッチする
resource "aws_iam_role_policy_attachment" "test-attach" {
  role       = aws_iam_role.github_assume_role.name
  policy_arn = aws_iam_policy.s3_policy_for_github_actions.arn
}

上記をapplyしてリソースを作成。
これで、CloudFront + S3 構成の静的コンテンツ配信するガワを作成し、GitHub Actions から AWS へアクセスすための認証(OpenID Connect provider)、権限(IAM ロール)の用意が完了しました。

ハマったところとか

  • dataでjsonで記載する中身を書き、それをresourceで読み込むという流れを理解するまでに時間がかかった。
  • 意外とiam系のterraformについて言及しているブログなどがなかったので作成するだけでかなり大変だった。

次にやること

  • GitHub Actionsの設定
  • HUGOでHPをいい感じに編集する
  • テスト記事の投稿
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0