This AWS Solution has been archived and is no longer maintained by AWS. To discover other solutions, please visit the AWS Solutions Library.
The Multi Region Infrastructure Deployment Solution validates and deploys CloudFormation Templates to stage, secondary, and primary environments across two regions. Using this solution helps to ensure any infrastructure changes made to a primary environment are automatically deployed to a secondary environment also. Ensuring consistency across environments reduces the risk involved in shifting production traffic across regions.
At a high level, the Multi Region Infrastructure Deployment solution does the following steps:
- Automatically detects changes to a source GitHub repository
- Validates the CloudFormation template using cfn-lint and cfn_nag, and halts a deployment if either check fails
- Verifies the CloudFormation template can be deployed to the stage environment in the primary region
- Waits for manual approval; approval goes to the step 5 and rejection rolls back the changes
- Deletes the stage environment if you set
Yes
to delete the stage environment when launching the solution - Deploys the CloudFormation template to the secondary environment in the secondary region
- Deploys the CloudFormation template to the production environment in the primary region
The solution can be deployed through the CloudFormation template available on the solution home page. To make changes to the solution, download or clone this repo, update the source code and then run the deployment/build-s3-dist.sh script to deploy the updated Lambda code to an Amazon S3 bucket in your account.
- AWS Command Line Interface
- Node.js 12.x or later
Run unit tests to make sure added customization passes the tests:
cd ./deployment
chmod +x ./run-unit-tests.sh
./run-unit-tests.sh
export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1)
export DIST_OUTPUT_BUCKET=my-bucket-name # bucket where customized code will reside
export SOLUTION_NAME=my-solution-name
export VERSION=my-version # version number for the customized code
The CloudFormation template is configured to pull the Lambda deployment packages from Amazon S3 bucket in the region the template is being launched in. Create a bucket in the desired region with the region name appended to the name of the bucket.
aws s3 mb s3://$DIST_OUTPUT_BUCKET-$REGION --region $REGION
Build the distributable:
chmod +x ./build-s3-dist.sh
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
Deploy the distributable to the Amazon S3 bucket in your account:
aws s3 sync ./regional-s3-assets/ s3://$DIST_OUTPUT_BUCKET-$REGION/$SOLUTION_NAME/$VERSION/ --recursive --acl bucket-owner-full-control
aws s3 sync ./global-s3-assets/ s3://$DIST_OUTPUT_BUCKET-$REGION/$SOLUTION_NAME/$VERSION/ --recursive --acl bucket-owner-full-control
- Get the link of the multi-region-infrastructure-deployment.template uploaded to your Amazon S3 bucket.
- Deploy the Multi Region Infrastructure Deployment Solution to your account by launching a new AWS CloudFormation stack using the S3 link of the multi-region-infrastructure-deployment.template.
|-deployment/
|-build-s3-dist.sh [ shell script for packaging distribution assets ]
|-run-unit-tests.sh [ shell script for executing unit tests ]
|-multi-region-infrastructure-deployment.yaml [ solution CloudFormation deployment template ]
|-source/
|-chageset-validator/ [ CloudFormation stack chage set validator ]
|-drift-detection/ [ CloudFormation stack drift detector ]
|-rollback-change/ [ Rollback CloudFormation stack changes ]
|-secondary-bucket-creator/ [ Secondary bucket creatore ]
|-stage-artifact-creator/ [ Stage artifact creator ]
|-stage-artifact-putter/ [ Stage artifact putter ]
|-uuid-generator/ [ Solution UUID generator ]
This solution collects anonymous operational metrics to help AWS improve the quality and features of the solution. For more information, including how to disable this capability, please see the implementation guide.
Multi-Region Infrastructure Deployment solution is distributed under the Apache License, Version 2.0.