multi-accounts/deploy-assets-multiple-region.bash (60 lines of code) (raw):
#!/bin/bash
set -e
CDF_LOCATION=$(pwd)
source "$CDF_LOCATION/source/infrastructure/common-deploy-functions.bash"
function help_message {
cat << EOF
NAME:
deploy-assets-multiple-regions.bash
DESCRIPTION:
Deploys assets in multiple regions.
MANDATORY ARGUMENTS:
====================
-p (string) Name of the Bucket Prefix
-b (string) Name of the Template Bucket
-r (string) List of supported regions separated by space
-v (string) Version of the template
OPTIONAL ARGUMENTS
------------
-R (string) AWS region.
-P (string) AWS profile.
DEPENDENCIES REQUIRED:
- aws-cli
- jq
- zip
EOF
}
##########################################################
###### parse and validate the provided arguments ######
##########################################################
while getopts ":b:p:r:v:R:P:" opt; do
case $opt in
b ) export TEMPLATE_BUCKET_NAME=$OPTARG;;
p ) export BUCKET_NAME_PREFIX=$OPTARG;;
r ) export SUPPORTED_REGIONS=$OPTARG;;
v ) export SOLUTION_VERSION=$OPTARG;;
R ) export AWS_REGION=$OPTARG;;
P ) export AWS_PROFILE=$OPTARG;;
\? ) echo "Unknown option: -$OPTARG" >&2; help_message; exit 1;;
: ) echo "Missing option argument for -$OPTARG" >&2; help_message; exit 1;;
* ) echo "Unimplemented option: -$OPTARG" >&2; help_message; exit 1;;
esac
done
if [[ "$DEBUG" == "true" ]]; then
set -x
fi
IFS=' ' read -ra SUPPORTED_REGIONS_ARRAY <<< "$SUPPORTED_REGIONS"
AWS_ARGS=$(buildAwsArgs "$AWS_REGION" "$AWS_PROFILE" )
SOLUTION_NAME="aws-connected-device-framework"
###########################################################################
###### transform CDF templates to work in multi account environment ######
###########################################################################
cd "$CDF_LOCATION"/multi-accounts
./build-s3-dist.sh "$BUCKET_NAME_PREFIX" "$SOLUTION_NAME" "$SOLUTION_VERSION" "$TEMPLATE_BUCKET_NAME"
global_s3_assets="$CDF_LOCATION"/multi-accounts/global-s3-assets
regional_s3_assets="$CDF_LOCATION"/multi-accounts/regional-s3-assets
cd "$global_s3_assets"
for region in "${SUPPORTED_REGIONS_ARRAY[@]}"
do
artifact_key="${BUCKET_NAME_PREFIX}-${region}/$SOLUTION_NAME/$SOLUTION_VERSION"
aws s3 sync --acl bucket-owner-full-control $AWS_ARGS . "s3://${artifact_key}"
done
cd "$regional_s3_assets"
for region in "${SUPPORTED_REGIONS_ARRAY[@]}"
do
artifact_key="${BUCKET_NAME_PREFIX}-${region}/$SOLUTION_NAME/$SOLUTION_VERSION"
aws s3 sync --acl bucket-owner-full-control $AWS_ARGS . "s3://${artifact_key}"
done