33# ######################################################################################################################
44
55locals {
6+
67 prefix = var. prefix != null ? (var. prefix != " " ? var. prefix : null ) : null
78
89 default_cos_region = var. cos_region != null ? var. cos_region : var. region
@@ -11,7 +12,7 @@ locals {
1112 cos_key_name = try (" ${ local . prefix } -${ var . cos_key_name } " , var. cos_key_name )
1213 activity_tracker_cos_target_bucket_name = try (" ${ local . prefix } -${ var . activity_tracker_cos_target_bucket_name } " , var. activity_tracker_cos_target_bucket_name )
1314
14- cos_instance_guid = element ( split ( " : " , var . existing_cos_instance_crn ), length ( split ( " : " , var . existing_cos_instance_crn )) - 3 )
15+ cos_instance_guid = try (module . cos_crn_parser [ 0 ] . service_instance , null )
1516
1617 use_kms_module = var. kms_encryption_enabled_buckets && var. existing_cos_kms_key_crn == null
1718 existing_kms_guid = var. kms_encryption_enabled_buckets ? (var. existing_kms_instance_crn != null ? module. kms_instance_crn_parser [0 ]. service_instance : module. existing_kms_key_crn_parser [0 ]. service_instance ) : null
@@ -68,8 +69,9 @@ locals {
6869 target_ids = [module.activity_tracker.activity_tracker_targets[local.cloud_logs_target_name].id]
6970 }] : []
7071
71- create_cross_account_auth_policy = ! var. skip_cos_kms_auth_policy && var. ibmcloud_kms_api_key != null ? 1 : 0
72- activity_tracker_routes = concat (local. activity_tracker_cos_route , local. activity_tracker_cloud_logs_route )
72+ create_cross_account_cos_kms_auth_policy = ! var. skip_cos_kms_auth_policy && var. ibmcloud_kms_api_key != null && var. existing_cos_instance_crn != null ? 1 : 0
73+ create_cross_account_atracker_cos_auth_policy = var. ibmcloud_cos_api_key != null && ! var. skip_activity_tracker_cos_auth_policy && var. existing_cos_instance_crn != null ? 1 : 0
74+ activity_tracker_routes = concat (local. activity_tracker_cos_route , local. activity_tracker_cloud_logs_route )
7375
7476}
7577
@@ -117,7 +119,7 @@ resource "time_sleep" "wait_for_atracker_cos_authorization_policy" {
117119}
118120
119121resource "ibm_iam_authorization_policy" "atracker_cos" {
120- count = var . ibmcloud_cos_api_key != null && ! var . skip_activity_tracker_cos_auth_policy ? 1 : 0
122+ count = local . create_cross_account_atracker_cos_auth_policy
121123 provider = ibm. cos
122124 source_service_account = data. ibm_iam_account_settings . iam_account_settings . account_id
123125 source_service_name = " atracker"
@@ -180,6 +182,13 @@ module "kms" {
180182# COS
181183# ######################################################################################################################
182184
185+ module "cos_crn_parser" {
186+ count = var. existing_cos_instance_crn != null ? 1 : 0
187+ source = " terraform-ibm-modules/common-utilities/ibm//modules/crn-parser"
188+ version = " 1.3.0"
189+ crn = var. existing_cos_instance_crn
190+ }
191+
183192# workaround for https://github.com/IBM-Cloud/terraform-provider-ibm/issues/4478
184193resource "time_sleep" "wait_for_authorization_policy" {
185194 depends_on = [ibm_iam_authorization_policy . policy ]
@@ -195,7 +204,7 @@ data "ibm_iam_account_settings" "iam_cos_account_settings" {
195204
196205# Create IAM Authorization Policy to allow COS to access KMS for the encryption key
197206resource "ibm_iam_authorization_policy" "policy" {
198- count = local. create_cross_account_auth_policy
207+ count = local. create_cross_account_cos_kms_auth_policy
199208 # Conditionals with providers aren't possible, using ibm.kms as provider incase cross account is enabled
200209 provider = ibm. kms
201210 source_service_account = data. ibm_iam_account_settings . iam_cos_account_settings . account_id
0 commit comments