1313# limitations under the License.
1414
1515locals {
16- create_service_account = var. abfs_service_account_id == " "
16+ # go/keep-sorted start
17+ abfs_iam_roles = [
18+ " roles/artifactregistry.reader" ,
19+ " roles/logging.logWriter" ,
20+ " roles/monitoring.metricWriter" ,
21+ " roles/monitoring.viewer" ,
22+ " roles/spanner.databaseUser" ,
23+ " roles/stackdriver.resourceMetadata.writer" ,
24+ " roles/storage.objectAdmin" ,
25+ ]
1726 abfs_service_account_email = local. create_service_account ? google_service_account. abfs [0 ]. email : data. google_service_account . abfs [0 ]. email
1827 abfs_service_account_unique_id = local. create_service_account ? google_service_account. abfs [0 ]. unique_id : data. google_service_account . abfs [0 ]. unique_id
28+ create_service_account = var. abfs_service_account_id == " "
29+ # go/keep-sorted end
1930}
2031
2132data "google_service_account" "abfs" {
@@ -38,22 +49,12 @@ resource "google_service_account" "abfs" {
3849 }
3950}
4051
41- module "project-iam-bindings" {
42- source = " terraform-google-modules/iam/google//modules/projects_iam"
43- version = " 8.1.0"
44-
45- projects = [data . google_project . project . project_id ]
46- mode = " authoritative"
47-
48- bindings = {
49- " roles/artifactregistry.reader" = [" serviceAccount:${ local . abfs_service_account_email } " ],
50- " roles/logging.logWriter" = [" serviceAccount:${ local . abfs_service_account_email } " ],
51- " roles/monitoring.metricWriter" = [" serviceAccount:${ local . abfs_service_account_email } " ],
52- " roles/monitoring.viewer" = [" serviceAccount:${ local . abfs_service_account_email } " ],
53- " roles/spanner.databaseUser" = [" serviceAccount:${ local . abfs_service_account_email } " ],
54- " roles/stackdriver.resourceMetadata.writer" = [" serviceAccount:${ local . abfs_service_account_email } " ],
55- " roles/storage.objectAdmin" = [" serviceAccount:${ local . abfs_service_account_email } " ],
56- }
52+ resource "google_project_iam_member" "abfs_iam" {
53+ for_each = toset (local. abfs_iam_roles )
54+
55+ project = data. google_project . project . project_id
56+ role = each. value
57+ member = " serviceAccount:${ local . abfs_service_account_email } "
5758
5859 depends_on = [
5960 module . project-services ,
0 commit comments