深夜の怠惰な技術ブログ

日々の技術的な話題などを徒然なるままに

AWS CodeBuildにおけるGitHub Repositoryをソースプロバイダとしてアクセスする方法

はじめに

必要に迫られてAWS CodeBuildのソースプロバイダをGitHub Repositoryにしました。 その際に実施した内容を備忘のために記載したいと思います。なお、AWS CodeBuildの構築とアクセストークンの設定についてはTerraformを使用しました。

実施内容

GitHubにおけるPersonal Access Tokenの作成

まずは、AWS CodeBuildがソースプロバイダとしてGitHubへ接続するためのアクセストークンとしてPersonal Access Tokenの作成が必要になります。 以下の参考ドキュメントをもとに、Personal Access Tokenを作成しましたが、Scopeとしては以下の添付画像となります。これだけとなります。

参考ドキュメント

docs.aws.amazon.com

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

TerraformによるAWS CodeBuildの作成

次にAWS CodeBuild Projectを作成します。Terraformコードは以下の通りです。 ここでソースプロバイダとしてGitHubのRepositoryを指定している部分はsource内のtypelocationになります。

resource "aws_codebuild_project" "this" {
  name         = "github-integration-project"
  service_role = "<role_arn>"
  artifacts {
    type = "NO_ARTIFACTS"
  }
  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "<ecr_uri>"
    type                        = "LINUX_CONTAINER"
    image_pull_credentials_type = "SERVICE_ROLE"
  }
  source {
    type     = "GITHUB"
    location = "https://github.com/<organization_name>/<repository_name>.git"
    buildspec = jsonencode({
      phases = {
        build = {
          commands = [
            "ls -al"
          ]
        }
      }
      version = "0.2"
    })
  }
}

TerraformによるAWS CodeBuildへのアクセストークンの設定

最後にAWS CodeBuild Projectが先に作成したPersonal Access Tokenを使用して指定したGitHun Repositoryへアクセスするための設定です。 ここで注目するべきは、特にAWS CodeBuild Project自体を識別するための情報が存在しない点です。 理解してしまうとなんてことはないのですが、本設定はリージョンに対してサーバタイプ(GitHub)ごとに1種類しか登録できないのです。

resource "aws_codebuild_source_credential" "this" {
  auth_type   = "PERSONAL_ACCESS_TOKEN"
  server_type = "GITHUB"
  token       = "<personal_access_token_value>"
}

さいごに

いかがでしたでしょうか。これによりAWS CodeBuildはソースプロバイダをGitHub Repositoryとすることができます。 どこかの誰かの参考になれば幸いです。