terraformからIAMを作成する時に Error retrieving IAM policy for project ~ googleapi: Error 403: The caller does not have permission

terraformからIAMを作成するために以下のようなコードを書いた。

resource "google_service_account" "scheduler_invoker" {
  display_name = "Schedler Invoker"
  account_id   = "scheduler-invoker"
}

resource "google_project_iam_member" "run_invoker" {
  role = "roles/run.invoker"
  member = "serviceAccount:${google_service_account.scraping_scheduler_invoker.email}"
  project = var.project
}

これで apply すると以下のようなエラーが出た。

Request `Create IAM Members roles/run.invoker serviceAccount:~"` returned error: Error retrieving IAM policy for project "~": googleapi: Error 403: The caller does not have permission, forbidden

IAMポリシーをいじるためのロールが terraform の credentials に渡したIAMに存在しない。

IAMに「Project IAM 管理者」を付与すると解決する。