From 23a27736312963087b7251c3c86aa00cb2f9aae5 Mon Sep 17 00:00:00 2001 From: Louis Hourcade Date: Tue, 19 Jul 2022 15:16:44 +0200 Subject: [PATCH] fix bugs when depoying cicd stack and backend stacks in different regions --- deploy/configs/frontend_config.py | 2 +- deploy/configs/rum_config.py | 7 ++++--- deploy/stacks/ecr_stack.py | 1 + deploy/stacks/pipeline.py | 8 ++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/deploy/configs/frontend_config.py b/deploy/configs/frontend_config.py index 685e746c7..3c6f6311d 100644 --- a/deploy/configs/frontend_config.py +++ b/deploy/configs/frontend_config.py @@ -70,7 +70,7 @@ def create_react_env_file( f.write(file_content) if cw_rum_enabled == 'True': - rum = boto3.client('rum') + rum = boto3.client('rum', region=region) app_monitor = rum.get_app_monitor(Name=f'{resource_prefix}-{envname}-monitor')[ 'AppMonitor' ] diff --git a/deploy/configs/rum_config.py b/deploy/configs/rum_config.py index 274357451..76761f06b 100644 --- a/deploy/configs/rum_config.py +++ b/deploy/configs/rum_config.py @@ -4,14 +4,14 @@ from botocore.exceptions import ClientError -def setup_rum_domain(resource_prefix, envname, custom_domain): +def setup_rum_domain(resource_prefix, envname, custom_domain, region): try: if custom_domain == 'False': ssm = boto3.client('ssm', region_name='us-east-1') webapp_domain = ssm.get_parameter( Name=f'/dataall/{envname}/CloudfrontDistributionDomainName' )['Parameter']['Value'] - rum = boto3.client('rum') + rum = boto3.client('rum', region_name=region) rum.get_app_monitor(Name=f'{resource_prefix}-{envname}-monitor') print('Updating RUM Monitor') response = rum.update_app_monitor( @@ -30,6 +30,7 @@ def setup_rum_domain(resource_prefix, envname, custom_domain): print(f'Starting RUM Configuration...') envname = os.environ.get('envname', 'prod') custom_domain = os.environ.get('custom_domain', 'False') + region = os.environ.get('deployment_region', 'eu-west-1') resource_prefix = os.environ.get('resource_prefix', 'dataall') - setup_rum_domain(resource_prefix, envname, custom_domain) + setup_rum_domain(resource_prefix, envname, custom_domain, region) print(f'RUM Configuration Finished Successfully') diff --git a/deploy/stacks/ecr_stack.py b/deploy/stacks/ecr_stack.py index a7bc0bcb8..d5c0ae4ef 100644 --- a/deploy/stacks/ecr_stack.py +++ b/deploy/stacks/ecr_stack.py @@ -109,6 +109,7 @@ def __init__( regions = list(set(regions)) if len(regions) > 1: + regions.remove(self.region) replication_destinations = [] for region in regions: replication_destinations.append( diff --git a/deploy/stacks/pipeline.py b/deploy/stacks/pipeline.py index b44fdcd0e..0bf94700f 100644 --- a/deploy/stacks/pipeline.py +++ b/deploy/stacks/pipeline.py @@ -521,7 +521,7 @@ def set_backend_stage(self, target_env, repository_name): resource_prefix=self.resource_prefix, tooling_account_id=self.account, pipeline_bucket=self.pipeline_bucket_name, - ecr_repository=f'arn:aws:ecr:{self.region}:{self.account}:repository/{repository_name}', + ecr_repository=f'arn:aws:ecr:{target_env.get("region", self.region)}:{self.account}:repository/{repository_name}', commit_id=self.image_tag, vpc_id=target_env.get('vpc_id'), vpc_endpoints_sg=target_env.get('vpc_endpoints_sg'), @@ -556,9 +556,9 @@ def set_db_migration_stage( f'echo "role_arn = arn:aws:iam::{target_env["account"]}:role/{self.resource_prefix}-{target_env["envname"]}-cb-dbmigration-role" >> ~/.aws/config', 'echo "credential_source = EcsContainer" >> ~/.aws/config', 'aws sts get-caller-identity --profile buildprofile', - f'aws codebuild start-build --project-name {self.resource_prefix}-{target_env["envname"]}-dbmigration --profile buildprofile > codebuild-id.json', - 'aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile > codebuild-output.json', - 'while [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "SUCCEEDED" ] && [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "FAILED" ]; do echo "running migration"; aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile > codebuild-output.json; echo "$(jq -r .builds[0].buildStatus codebuild-output.json)"; sleep 5; done', + f'aws codebuild start-build --project-name {self.resource_prefix}-{target_env["envname"]}-dbmigration --profile buildprofile --region {target_env.get("region", self.region)} > codebuild-id.json', + f'aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile --region {target_env.get("region", self.region)} > codebuild-output.json', + f'while [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "SUCCEEDED" ] && [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "FAILED" ]; do echo "running migration"; aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile --region {target_env.get("region", self.region)} > codebuild-output.json; echo "$(jq -r .builds[0].buildStatus codebuild-output.json)"; sleep 5; done', 'if [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" = "FAILED" ]; then echo "Failed"; cat codebuild-output.json; exit -1; fi', 'cat codebuild-output.json ', ],