Centralize AWS command

All Makefiles rely on the execution of the aws cli.
In order to act on a specific AWS region, the `--region` option was
passed explicitly to each aws cli execution.

This however is redundant and error prone since the `--region` option
had to be specified over and over again and it could have been forgotten
for some of the executions.

This in fact was the case for the export-logs target, whereby the
subcommand were executing without specifying the region.

Define one unique AWS command line variable in Makefie.common to use
throughout the codebase.

Bug: Issue 40015577
Change-Id: Ic6bdd666279681649a040476fb5e8f8753049ca3
diff --git a/Makefile.common b/Makefile.common
index 00b43e8..2ebfcb5 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -1,13 +1,14 @@
 SHELL := /bin/bash
 
 ROOT_DIR=$(dir $(realpath $(filter %Makefile.common,$(MAKEFILE_LIST))))
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
+AWS=export AWS_PAGER=;aws --region $(AWS_REGION)
+AWS_FC_COMMAND=$(AWS) cloudformation
 include $(ROOT_DIR)/operations/export-logs/Makefile
 include $(ROOT_DIR)common.env
 
 cluster-keys:
-	aws ec2 describe-key-pairs --region $(AWS_REGION) --key-names $(CLUSTER_KEYS) > /dev/null 2>&1 || \
-		aws ec2 create-key-pair --region $(AWS_REGION) --key-name $(CLUSTER_KEYS) --query 'KeyMaterial' --output text > $(CLUSTER_KEYS).pem
+	$(AWS) ec2 describe-key-pairs --key-names $(CLUSTER_KEYS) > /dev/null 2>&1 || \
+		$(AWS) ec2 create-key-pair --key-name $(CLUSTER_KEYS) --query 'KeyMaterial' --output text > $(CLUSTER_KEYS).pem
 
 upload-common-templates:
 	$(eval CREATE_BUCKET_PARAMS := --bucket $(TEMPLATE_BUCKET_NAME))
@@ -15,15 +16,15 @@
 		$(eval CREATE_BUCKET_PARAMS := $(CREATE_BUCKET_PARAMS) --create-bucket-configuration LocationConstraint=$(AWS_REGION))
 endif
 
-	export AWS_PAGER=; aws s3api head-bucket --bucket $(TEMPLATE_BUCKET_NAME) 2>/dev/null || \
-		aws s3api create-bucket $(CREATE_BUCKET_PARAMS)
-	aws s3 cp ../common-templates/cf-gerrit-task-execution-role.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-gerrit-network-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-gerrit-volume.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-primary-asg.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-efs-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-ecs-service-cpu-autoscaling.yml s3://$(TEMPLATE_BUCKET_NAME)/
-	aws s3 cp ../common-templates/cf-dynamodb-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3api head-bucket --bucket $(TEMPLATE_BUCKET_NAME) 2>/dev/null || \
+		$(AWS) s3api create-bucket $(CREATE_BUCKET_PARAMS)
+	$(AWS) s3 cp ../common-templates/cf-gerrit-task-execution-role.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-gerrit-network-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-gerrit-volume.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-primary-asg.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-efs-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-ecs-service-cpu-autoscaling.yml s3://$(TEMPLATE_BUCKET_NAME)/
+	$(AWS) s3 cp ../common-templates/cf-dynamodb-stack.yml s3://$(TEMPLATE_BUCKET_NAME)/
 
 set-optional-params-metrics-cloudwatch:
 ifdef METRICS_CLOUDWATCH_ENABLED
@@ -190,12 +191,10 @@
 
 	$(if $(NETWORK_STACK_NAME), \
 		$(AWS_FC_COMMAND) delete-stack \
-			--stack-name $(NETWORK_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(NETWORK_STACK_NAME) && \
 		echo "*** Wait for Network stack '$(NETWORK_STACK_NAME)' deletion" && \
 		$(AWS_FC_COMMAND) wait stack-delete-complete \
-			--stack-name $(NETWORK_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(NETWORK_STACK_NAME) && \
 		echo "*** Network stack '$(NETWORK_STACK_NAME)' deleted" \
 		, \
 		echo "No network stack found. Nothing to do." \
@@ -206,12 +205,10 @@
 
 	$(if $(REPLICA_EFS_STACK_NAME), \
 		$(AWS_FC_COMMAND) delete-stack \
-			--stack-name $(REPLICA_EFS_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(REPLICA_EFS_STACK_NAME) && \
 		echo "*** Wait for Git persistent stack of replicas '$(REPLICA_EFS_STACK_NAME)' deletion" && \
 		$(AWS_FC_COMMAND) wait stack-delete-complete \
-			--stack-name $(REPLICA_EFS_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(REPLICA_EFS_STACK_NAME) && \
 		echo "*** Git persistent stack '$(EFSREPLICA_EFS_STACK_NAME_STACK_NAME)' deleted" \
 		, \
 		echo "No Git persistent stack for replicas found. Nothing to do." \
diff --git a/dual-primary/Makefile b/dual-primary/Makefile
index 324649d..6de9647 100644
--- a/dual-primary/Makefile
+++ b/dual-primary/Makefile
@@ -9,7 +9,6 @@
 DNS_ROUTING_TEMPLATE:=cf-dns-route.yml
 CLOUDWATCH_DASHBOARD_TEMPLATE:=cf-dashboard.yml
 SERVICE_REPLICATION_TEMPLATE:=cf-service-replication.yml
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
 GIT_GC_SOURCE_PATH=/mnt/efs/gerrit-shared/git
 
 SINGLE_SITE_PLUGINS=javamelody high-availability healthcheck metrics-reporter-cloudwatch
@@ -83,7 +82,6 @@
 		--stack-name $(CLUSTER_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(CLUSTER_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
 		ParameterKey=TemplateBucketName,ParameterValue=$(TEMPLATE_BUCKET_NAME) \
@@ -119,7 +117,6 @@
 		--stack-name $(SERVICE_PRIMARY1_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_PRIMARY_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=GerritInstanceNumber,ParameterValue=1 \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
@@ -182,7 +179,6 @@
 		--stack-name $(SERVICE_PRIMARY2_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_PRIMARY_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=GerritInstanceNumber,ParameterValue=2 \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
@@ -228,7 +224,6 @@
 		--stack-name $(SERVICE_REPLICATION_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_REPLICATION_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=GitReplicationServiceName,ParameterValue=$(SERVICE_REPLICATION_STACK_NAME) \
 		ParameterKey=ClusterStackName,ParameterValue=$(CLUSTER_STACK_NAME) \
@@ -258,7 +253,6 @@
 		--stack-name $(SERVICE_REPLICA_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_REPLICA_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
 		ParameterKey=LDAPUsername,ParameterValue=\"$(LDAP_USERNAME)\" \
@@ -293,7 +287,6 @@
 		--stack-name $(DNS_ROUTING_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(DNS_ROUTING_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=Primary1ServiceStackName,ParameterValue=$(SERVICE_PRIMARY1_STACK_NAME) \
 		ParameterKey=Primary2ServiceStackName,ParameterValue=$(SERVICE_PRIMARY2_STACK_NAME) \
@@ -320,7 +313,6 @@
 		--stack-name $(DASHBOARD_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(CLOUDWATCH_DASHBOARD_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		$(DASHBOARD_OPTIONAL_PARAMS)
 else
@@ -330,135 +322,128 @@
 wait-for-cluster-creation:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' created"
 
 wait-for-service-primary-1-creation:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY1_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_PRIMARY1_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY1_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_PRIMARY1_STACK_NAME)' created"
 
 wait-for-service-replication-creation:
 	@echo "*** Wait for service replication stack '$(SERVICE_REPLICATION_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_REPLICATION_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICATION_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_REPLICATION_STACK_NAME)' created"
 
 wait-for-service-primary-2-creation:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY2_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_PRIMARY2_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY2_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_PRIMARY2_STACK_NAME)' created"
 
 wait-for-service-replica-creation:
 	@echo "*** Wait for service replica stack '$(SERVICE_REPLICA_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_REPLICA_STACK_NAME)' created"
 
 wait-for-dns-routing-creation:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS Routing stack '$(DNS_ROUTING_STACK_NAME)' created"
 
 wait-for-dashboard-creation:
 	@echo "*** Wait for dashboard stack '$(DASHBOARD_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
+
 	@echo "*** Dashboard stack '$(DASHBOARD_STACK_NAME)' created"
 
 wait-for-cluster-deletion:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' deleted"
 
 wait-for-service-primary-1-deletion:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY1_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_PRIMARY1_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY1_STACK_NAME)
+
 	@echo "*** Service stack primary '$(SERVICE_PRIMARY1_STACK_NAME)' deleted"
 
 wait-for-service-primary-2-deletion:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY2_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_PRIMARY2_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY2_STACK_NAME)
+
 	@echo "*** Service stack primary '$(SERVICE_PRIMARY2_STACK_NAME)' deleted"
 
 wait-for-service-replica-deletion:
 	@echo "*** Wait for service replica stack '$(SERVICE_REPLICA_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
+
 	@echo "*** Service stack replica '$(SERVICE_REPLICA_STACK_NAME)' deleted"
 
 wait-for-dns-routing-deletion:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deleted"
 
 wait-for-service-replication-deletion:
 	@echo "*** Wait for service replication stack '$(SERVICE_REPLICATION_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_REPLICATION_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICATION_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_REPLICATION_STACK_NAME)' deleted"
 
 wait-for-dashboard-deletion:
 	@echo "*** Wait for dashboard stack '$(DASHBOARD_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
+
 	@echo "*** Dashboard stack '$(DASHBOARD_STACK_NAME)' deleted"
 
 delete-cluster:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
 
 delete-service-primary-1:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_PRIMARY1_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY1_STACK_NAME)
 
 delete-service-primary-2:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_PRIMARY2_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY2_STACK_NAME)
 
 delete-service-replica:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
 
 delete-service-replication:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_REPLICATION_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICATION_STACK_NAME)
 
 delete-dns-routing:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
 
 delete-dashboard:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
 
 delete-all: delete-dns-routing wait-for-dns-routing-deletion \
 						delete-service-primary-1 delete-service-primary-2 delete-service-replica \
@@ -477,12 +462,10 @@
 
 	$(if $(EFS_STACK_NAME), \
 		$(AWS_FC_COMMAND) delete-stack \
-			--stack-name $(EFS_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(EFS_STACK_NAME) && \
 		echo "*** Wait for Git persistent stack '$(EFS_STACK_NAME)' deletion" && \
 		$(AWS_FC_COMMAND) wait stack-delete-complete \
-			--stack-name $(EFS_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(EFS_STACK_NAME) && \
 		echo "*** Git persistent stack '$(EFS_STACK_NAME)' deleted" \
 		, \
 		echo "No Git persistent stack found. Nothing to do." \
@@ -521,12 +504,10 @@
 
 	$(if $(DYNAMODB_STACK_NAME), \
 		$(AWS_FC_COMMAND) delete-stack \
-			--stack-name $(DYNAMODB_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(DYNAMODB_STACK_NAME) && \
 		echo "*** Wait for DynamoDB stack '$(DYNAMODB_STACK_NAME)' deletion" && \
 		$(AWS_FC_COMMAND) wait stack-delete-complete \
-			--stack-name $(DYNAMODB_STACK_NAME) \
-			--region $(AWS_REGION) && \
+			--stack-name $(DYNAMODB_STACK_NAME) && \
 		echo "*** DynamoDB stack '$(DYNAMODB_STACK_NAME)' deleted" \
 		, \
 		echo "No DynamoDB stack found. Nothing to do." \
diff --git a/geo-location-routing/Makefile b/geo-location-routing/Makefile
index c57417e..db0d011 100644
--- a/geo-location-routing/Makefile
+++ b/geo-location-routing/Makefile
@@ -3,7 +3,6 @@
 include ../Makefile.common
 
 GEO_LOCATION_TEMPLATE:=cf-geo-location-routing.yml
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
 
 .PHONY: create-all delete-all \
 		create-geo-location-routing wait-for-geo-location-routing-creation \
@@ -18,7 +17,6 @@
 		--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(GEO_LOCATION_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 			ParameterKey=HostedZoneName,ParameterValue=$(HOSTED_ZONE_NAME) \
 			ParameterKey=HostedZoneId,ParameterValue=$(HOSTED_ZONE_ID) \
@@ -32,20 +30,19 @@
 
 delete-geo-location-routing:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME)
 
 wait-for-geo-location-routing-creation:
 	@echo "*** Wait for geo-location-routing stack '$(GEO_LOCATION_ROUTING_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME)
+
 	@echo "*** geo-location-routing stack '$(GEO_LOCATION_ROUTING_STACK_NAME)' created"
 
 
 wait-for-geo-location-routing-deletion:
 	@echo "*** Wait for geo-location-routing stack '$(GEO_LOCATION_ROUTING_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(GEO_LOCATION_ROUTING_STACK_NAME)
+
 	@echo "*** geo-location-routing stack '$(GEO_LOCATION_ROUTING_STACK_NAME)' deleted"
\ No newline at end of file
diff --git a/gerrit/Makefile b/gerrit/Makefile
index 689fdde..e9e19b9 100644
--- a/gerrit/Makefile
+++ b/gerrit/Makefile
@@ -4,7 +4,7 @@
 PLUGINS=javamelody healthcheck metrics-reporter-cloudwatch
 
 docker-registry-login:
-	aws ecr get-login-password --region $(AWS_REGION) \
+	$(AWS) ecr get-login-password \
 		| docker login --username AWS --password-stdin $(DOCKER_REGISTRY_URI)/aws-gerrit/gerrit
 
 gerrit-get-plugins:
diff --git a/maintenance/git-gc/Makefile b/maintenance/git-gc/Makefile
index 4059abd..5d1a573 100644
--- a/maintenance/git-gc/Makefile
+++ b/maintenance/git-gc/Makefile
@@ -1,5 +1,3 @@
-AWS=export AWS_PAGER=;aws
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
 DOCKER_NAME=aws-gerrit/git-gc
 ECR_REPO=$(DOCKER_REGISTRY_URI)/$(DOCKER_NAME)
 GIT_GC_SHA1=$(shell find . -type f -exec cat {} \; | sha1sum | cut -c 1-20)
@@ -14,7 +12,7 @@
 endif
 
 docker-registry-login:
-	$(AWS) ecr get-login-password --region $(AWS_REGION) \
+	$(AWS) ecr get-login-password \
 		| docker login --username AWS --password-stdin ${ECR_REPO}
 
 git-gc-build:
@@ -33,7 +31,6 @@
 		--stack-name $(SERVICE_GIT_GC_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_GIT_GC_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=ClusterStackName,ParameterValue=$(CLUSTER_STACK_NAME) \
 		ParameterKey=TemplateBucketName,ParameterValue=$(TEMPLATE_BUCKET_NAME) \
@@ -50,18 +47,17 @@
 wait-for-service-git-gc-creation:
 	@echo "*** Wait for service-git-gc stack '$(SERVICE_GIT_GC_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_GIT_GC_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_GIT_GC_STACK_NAME)
+
 	@echo "*** Cluster stack '$(SERVICE_GIT_GC_STACK_NAME)' created"
 
 wait-for-service-git-gc-deletion:
 	@echo "*** Wait for service-git-gc stack '$(SERVICE_GIT_GC_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_GIT_GC_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_GIT_GC_STACK_NAME)
+
 	@echo "*** service-git-gc stack '$(SERVICE_GIT_GC_STACK_NAME)' deleted"
 
 delete-service-git-gc:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_GIT_GC_STACK_NAME) \
-	--region $(AWS_REGION)
\ No newline at end of file
+	--stack-name $(SERVICE_GIT_GC_STACK_NAME)
\ No newline at end of file
diff --git a/operations/export-logs/Makefile b/operations/export-logs/Makefile
index 164d24e..c4ad6e0 100644
--- a/operations/export-logs/Makefile
+++ b/operations/export-logs/Makefile
@@ -35,7 +35,7 @@
 	@echo "Launched export task id $(TASK_ID) from $(EXPORT_FROM_MILLIS) to $(now)000"
 
 wait_for_export:
-	while [[ $$(aws logs describe-export-tasks --task-id "$(TASK_ID)" | jq -r '.exportTasks[0].status.code') =~ RUNNING|PENDING|PENDING_CANCEL ]]; do \
+	while [[ $$($(AWS) logs describe-export-tasks --task-id "$(TASK_ID)" | jq -r '.exportTasks[0].status.code') =~ RUNNING|PENDING|PENDING_CANCEL ]]; do \
   		echo "Wait for task $(DESTINATION_PREFIX) (id: $(TASK_ID)) to complete"; \
   		sleep 5; \
   	done;
@@ -47,7 +47,7 @@
 	@echo
 	@echo "*************** MAIN LOGS URLS **********************"
 	@for i in \
-		$(shell aws s3api list-objects --bucket $(S3_EXPORT_LOGS_BUCKET_NAME) \
+		$(shell $(AWS) s3api list-objects --bucket $(S3_EXPORT_LOGS_BUCKET_NAME) \
 			--prefix "$(DESTINATION_PREFIX)/$(TASK_ID)" | \
 			 jq -r '.Contents[] | select(.Key|test("httpd_log|sshd_log|error_log")) | .Key'); do \
 		  echo https://$(S3_EXPORT_LOGS_BUCKET_NAME).s3.amazonaws.com/$$i; \
diff --git a/primary-replica/Makefile b/primary-replica/Makefile
index 887ff0c..e8a4a5b 100644
--- a/primary-replica/Makefile
+++ b/primary-replica/Makefile
@@ -8,7 +8,6 @@
 SERVICE_REPLICA_TEMPLATE:=cf-service-replica.yml
 DNS_ROUTING_TEMPLATE:=cf-dns-route.yml
 CLOUDWATCH_DASHBOARD_TEMPLATE:=cf-dashboard.yml
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
 GIT_GC_SOURCE_PATH=/gerrit-mount-point/gerrit-git
 PLUGINS=javamelody healthcheck metrics-reporter-cloudwatch pull-replication
 PLUGINS_LIBS_LINKS=pull-replication
@@ -49,7 +48,6 @@
 		--stack-name $(CLUSTER_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(CLUSTER_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
 		ParameterKey=TemplateBucketName,ParameterValue=$(TEMPLATE_BUCKET_NAME) \
@@ -73,7 +71,6 @@
 		--stack-name $(SERVICE_PRIMARY_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_PRIMARY_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
 		ParameterKey=LDAPUsername,ParameterValue=\"$(LDAP_USERNAME)\" \
@@ -125,7 +122,6 @@
 		--stack-name $(SERVICE_REPLICA_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_REPLICA_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
 		ParameterKey=LDAPUsername,ParameterValue=\"$(LDAP_USERNAME)\" \
@@ -160,7 +156,6 @@
 		--stack-name $(DNS_ROUTING_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(DNS_ROUTING_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=PrimaryServiceStackName,ParameterValue=$(SERVICE_PRIMARY_STACK_NAME)
 
@@ -180,7 +175,6 @@
 		--stack-name $(DASHBOARD_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(CLOUDWATCH_DASHBOARD_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		$(DASHBOARD_OPTIONAL_PARAMS)
 
@@ -193,97 +187,92 @@
 wait-for-cluster-creation:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' created"
 
 wait-for-service-primary-creation:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_PRIMARY_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_PRIMARY_STACK_NAME)' created"
 
 wait-for-service-replica-creation:
 	@echo "*** Wait for service replica stack '$(SERVICE_REPLICA_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_REPLICA_STACK_NAME)' created"
 
 wait-for-dns-routing-creation:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS Routing stack '$(DNS_ROUTING_STACK_NAME)' created"
 
 wait-for-dashboard-creation:
 	@echo "*** Wait for dashboard stack '$(DASHBOARD_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
+
 	@echo "*** Dashboard stack '$(DASHBOARD_STACK_NAME)' created"
 
 wait-for-cluster-deletion:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' deleted"
 
 wait-for-service-primary-deletion:
 	@echo "*** Wait for service primary stack '$(SERVICE_PRIMARY_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_PRIMARY_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY_STACK_NAME)
+
 	@echo "*** Service stack primary '$(SERVICE_PRIMARY_STACK_NAME)' deleted"
 
 wait-for-service-replica-deletion:
 	@echo "*** Wait for service primary stack '$(SERVICE_REPLICA_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
+
 	@echo "*** Service stack primary '$(SERVICE_REPLICA_STACK_NAME)' deleted"
 
 wait-for-dns-routing-deletion:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deleted"
 
 wait-for-dashboard-deletion:
 	@echo "*** Wait for dashboard stack '$(DASHBOARD_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
+
 	@echo "*** Dashboard stack '$(DASHBOARD_STACK_NAME)' deleted"
 
 delete-cluster:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
 
 delete-service-primary:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_PRIMARY_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_PRIMARY_STACK_NAME)
 
 delete-service-replica:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_REPLICA_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_REPLICA_STACK_NAME)
 
 delete-dns-routing:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
 
 delete-dashboard:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(DASHBOARD_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DASHBOARD_STACK_NAME)
 
 delete-all: delete-dns-routing wait-for-dns-routing-deletion \
 						delete-service-replica wait-for-service-replica-deletion \
diff --git a/primary-replica/git-daemon/Makefile b/primary-replica/git-daemon/Makefile
index 110b819..c380f89 100644
--- a/primary-replica/git-daemon/Makefile
+++ b/primary-replica/git-daemon/Makefile
@@ -4,7 +4,7 @@
 IMAGE_NAME:=git-daemon
 
 docker-registry-login:
-	aws ecr get-login-password --region $(AWS_REGION) \
+	$(AWS) ecr get-login-password \
 		| docker login --username AWS --password-stdin $(DOCKER_REGISTRY_URI)/aws-gerrit/$(IMAGE_NAME)
 
 git-daemon-build:
diff --git a/primary-replica/git-ssh/Makefile b/primary-replica/git-ssh/Makefile
index 1b05de0..424a3ee 100644
--- a/primary-replica/git-ssh/Makefile
+++ b/primary-replica/git-ssh/Makefile
@@ -4,7 +4,7 @@
 IMAGE_NAME:=git-ssh
 
 docker-registry-login:
-	aws ecr get-login-password --region $(AWS_REGION) \
+	$(AWS) ecr get-login-password \
 		| docker login --username AWS --password-stdin $(DOCKER_REGISTRY_URI)/aws-gerrit/$(IMAGE_NAME)
 
 git-ssh-build:
diff --git a/single-primary/Makefile b/single-primary/Makefile
index 605ed3d..c926134 100644
--- a/single-primary/Makefile
+++ b/single-primary/Makefile
@@ -6,7 +6,6 @@
 CLUSTER_TEMPLATE:=cf-cluster.yml
 SERVICE_TEMPLATE:=cf-service.yml
 DNS_ROUTING_TEMPLATE:=cf-dns-route.yml
-AWS_FC_COMMAND=export AWS_PAGER=;aws cloudformation
 GIT_GC_SOURCE_PATH=/gerrit-mount-point/gerrit-git
 
 .PHONY: create-all delete-all \
@@ -31,7 +30,6 @@
 		--stack-name $(CLUSTER_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(CLUSTER_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
 		ParameterKey=TemplateBucketName,ParameterValue=$(TEMPLATE_BUCKET_NAME) \
@@ -56,7 +54,6 @@
 		--stack-name $(SERVICE_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(SERVICE_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=LDAPServer,ParameterValue=$(LDAP_SERVER) \
 		ParameterKey=LDAPUsername,ParameterValue=\"$(LDAP_USERNAME)\" \
@@ -91,66 +88,62 @@
 		--stack-name $(DNS_ROUTING_STACK_NAME) \
 		--capabilities CAPABILITY_IAM  \
 		--template-body file://`pwd`/$(DNS_ROUTING_TEMPLATE) \
-		--region $(AWS_REGION) \
 		--parameters \
 		ParameterKey=ServiceStackName,ParameterValue=$(SERVICE_STACK_NAME)
 
 wait-for-cluster-creation:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' created"
 
 wait-for-service-creation:
 	@echo "*** Wait for service stack '$(SERVICE_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(SERVICE_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_STACK_NAME)' created"
 
 wait-for-dns-routing-creation:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' creation"
 	$(AWS_FC_COMMAND) wait stack-create-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS Routing stack '$(DNS_ROUTING_STACK_NAME)' created"
 
 wait-for-cluster-deletion:
 	@echo "*** Wait for cluster stack '$(CLUSTER_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
+
 	@echo "*** Cluster stack '$(CLUSTER_STACK_NAME)' deleted"
 
 wait-for-service-deletion:
 	@echo "*** Wait for service stack '$(SERVICE_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(SERVICE_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_STACK_NAME)
+
 	@echo "*** Service stack '$(SERVICE_STACK_NAME)' deleted"
 
 wait-for-dns-routing-deletion:
 	@echo "*** Wait for DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deletion"
 	$(AWS_FC_COMMAND) wait stack-delete-complete \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
+
 	@echo "*** DNS routing stack '$(DNS_ROUTING_STACK_NAME)' deleted"
 
 delete-cluster:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(CLUSTER_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(CLUSTER_STACK_NAME)
 
 delete-service:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(SERVICE_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(SERVICE_STACK_NAME)
 
 delete-dns-routing:
 	$(AWS_FC_COMMAND) delete-stack \
-	--stack-name $(DNS_ROUTING_STACK_NAME) \
-	--region $(AWS_REGION)
+	--stack-name $(DNS_ROUTING_STACK_NAME)
 
 delete-all: delete-dns-routing wait-for-dns-routing-deletion \
 						delete-service wait-for-service-deletion \