Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update data.tf, dynamo_actions.sh, and 3 more files... #7

Merged
merged 1 commit into from
Jul 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions data.tf
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ data "template_file" "dynamo_backup" {
WORKSPACE="${var.env_name}"
ENV_TYPE="${var.env_type}"
AWS_PROFILE="${var.aws_profile}"
TABLE_NAME="${local.table_name}"
}
depends_on = [
aws_dynamodb_table.basic-dynamodb-table
Expand All @@ -35,6 +36,7 @@ data "template_file" "dynamo_restore" {
INIT_DB_ENVIRONMENT="${var.init_db_environment}"
SOURCE_AWS_PROFILE="${var.init_db_aws_profile}"
SOURCE_ENV_TYPE="${var.init_db_env_type}"
TABLE_NAME="${local.table_name}"
}
depends_on = [
aws_dynamodb_table.basic-dynamodb-table
Expand Down
22 changes: 14 additions & 8 deletions files/dynamo_actions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ unset INIT_DB_ENVIRONMENT
unset SOURCE_WORKSPACE
unset SOURCE_ENV_TYPE
unset SOURCE_AWS_PROFILE
unset TABLE_NAME

usage() {
cat <<EOM
Usage:
dynamo_actions.sh -s|--service_name <SERVICE_NAME> -a|--action <dynamo_backup/dynamo_restore> -w|--workspace <Terraform workspace> -e|--env_type <prod/non-prod> -p|--profile <AWS_PROFILE> -se|--src_env source environment to copy from -setype|--src_env_type the source environment type to copy from [prod|non-prod] -sp|src_profile source profile when running from local
dynamo_actions.sh -s|--service_name <SERVICE_NAME> -a|--action <dynamo_backup/dynamo_restore> -w|--workspace <Terraform workspace> -e|--env_type <prod/non-prod> -p|--profile <AWS_PROFILE> -se|--src_env source environment to copy from -t table name -setype|--src_env_type the source environment type to copy from [prod|non-prod] -sp|src_profile source profile when running from local
I.E. for backup
dynamo_actions.sh --service_name myService --action dynamo_backup --workspace my-data --env_type non-prod --profile my-aws-profile
I.E. for restore
Expand Down Expand Up @@ -55,6 +56,11 @@ while [[ $# -gt 0 ]]; do
shift # past argument
shift # past value
;;
-t|--table)
TABLE_NAME="$2"
shift # past argument
shift # past value
;;
-se|--src_env)
if [[ "$2" == "NULL" ]];
then
Expand Down Expand Up @@ -91,7 +97,7 @@ done
: ${ACTION_TYPE:?Missing -a|--action type -h for help}
: ${WORKSPACE:?Missing -w|--workspace type -h for help}
: ${ENV_TYPE:?Missing -e|--env_type type -h for help}

: ${TABLE_NAME:?Missing -t|--table type -h for help}
if [[ ! -z "$INIT_DB_ENVIRONMENT" ]]; then
: ${SOURCE_WORKSPACE:?Missing -se|--src_env type -h for help}
: ${SOURCE_ENV_TYPE:?Missing -setype|--src_env_type type -h for help}
Expand Down Expand Up @@ -146,10 +152,10 @@ dynamo_backup() {
fi
fi
if [[ -z "$LOCAL_RUN" ]]; then
aws dynamodb scan --table-name dynamodb-${SERVICE_NAME}-${WORKSPACE} --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws dynamodb scan --table-name ${TABLE_NAME} --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws s3 cp /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json s3://${SERVICE_NAME}-${ENV_TYPE}-dynamodb-dumps/$WORKSPACE/
else
aws dynamodb scan --table-name dynamodb-${SERVICE_NAME}-${WORKSPACE} --profile $AWS_PROFILE --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws dynamodb scan --table-name ${TABLE_NAME} --profile $AWS_PROFILE --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws s3 cp /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json s3://${SERVICE_NAME}-${ENV_TYPE}-dynamodb-dumps/$WORKSPACE/ --profile $AWS_PROFILE
fi
rm -f /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
Expand All @@ -162,9 +168,9 @@ dynamo_put_item(){
value=$(jq -r ".Items[$k]" /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json);
echo $value > /tmp/item.json
if [[ -z "$LOCAL_RUN" ]]; then
aws dynamodb put-item --table-name dynamodb-${SERVICE_NAME}-${WORKSPACE} --item file:///tmp/item.json
aws dynamodb put-item --table-name ${TABLE_NAME} --item file:///tmp/item.json
else
aws dynamodb put-item --table-name dynamodb-${SERVICE_NAME}-${WORKSPACE} --profile $AWS_PROFILE --item file:///tmp/item.json
aws dynamodb put-item --table-name ${TABLE_NAME} --profile $AWS_PROFILE --item file:///tmp/item.json
fi
done
rm -f /tmp/item.json
Expand All @@ -174,9 +180,9 @@ dynamo_put_item(){
dynamo_clone() {
echo "Copying init db..."
if [[ -z "$LOCAL_RUN" ]]; then
aws dynamodb scan --table-name dynamodb-${SERVICE_NAME}-${SOURCE_WORKSPACE} --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws dynamodb scan --table-name ${TABLE_NAME} --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
else
aws dynamodb scan --table-name dynamodb-${SERVICE_NAME}-${SOURCE_WORKSPACE} --profile $SOURCE_AWS_PROFILE --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
aws dynamodb scan --table-name ${TABLE_NAME} --profile $SOURCE_AWS_PROFILE --region us-east-1 > /tmp/dynamodb-${SERVICE_NAME}-${WORKSPACE}.json
fi
dynamo_put_item
rm -f /tmp/dynamodb-${SERVICE_NAME}-${SOURCE_WORKSPACE}.json
Expand Down
2 changes: 1 addition & 1 deletion files/dynamo_backup.tpl
Original file line number Diff line number Diff line change
@@ -1 +1 @@
dynamo_actions.sh -a dynamo_backup -s ${SERVICE_NAME} -w ${WORKSPACE} -e ${ENV_TYPE} -p ${AWS_PROFILE}
dynamo_actions.sh -a dynamo_backup -s ${SERVICE_NAME} -w ${WORKSPACE} -e ${ENV_TYPE} -p ${AWS_PROFILE} -t ${TABLE_NAME}
2 changes: 1 addition & 1 deletion files/dynamo_restore.tpl
Original file line number Diff line number Diff line change
@@ -1 +1 @@
dynamo_actions.sh -a dynamo_restore -s ${SERVICE_NAME} -w ${WORKSPACE} -e ${ENV_TYPE} -p ${AWS_PROFILE} -se ${INIT_DB_ENVIRONMENT} -setype ${SOURCE_ENV_TYPE} -sp ${SOURCE_AWS_PROFILE}
dynamo_actions.sh -a dynamo_restore -s ${SERVICE_NAME} -w ${WORKSPACE} -e ${ENV_TYPE} -p ${AWS_PROFILE} -se ${INIT_DB_ENVIRONMENT} -setype ${SOURCE_ENV_TYPE} -sp ${SOURCE_AWS_PROFILE} -t ${TABLE_NAME}
10 changes: 5 additions & 5 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ locals {
# Until code is refactored to use table_name appropriately, we will use app_name
# in all places, and ignore table_name variable, to avoid issues

full_name = "dynamodb-${var.app_name}-${local.env_name}"
table_name = try("${var.table_name}","dynamodb-${var.app_name}-${local.env_name}")
}

resource "aws_dynamodb_table" "basic-dynamodb-table" {
name = local.full_name
name = local.table_name
hash_key = var.primary_key
range_key = var.primary_sort_key
billing_mode = var.billing_mode
Expand Down Expand Up @@ -38,7 +38,7 @@ resource "aws_dynamodb_table" "basic-dynamodb-table" {
}

tags = {
Name = local.full_name
Name = local.table_name
Environment = local.env_name
}
}
Expand All @@ -48,7 +48,7 @@ resource "aws_appautoscaling_target" "dynamodb_table_read_target" {
count = var.autoscaling_enabled ? 1 : 0
max_capacity = var.max_read_capacity
min_capacity = var.read_capacity
resource_id = "table/${local.full_name}"
resource_id = "table/${local.table_name}"
scalable_dimension = "dynamodb:table:ReadCapacityUnits"
service_namespace = "dynamodb"
}
Expand All @@ -74,7 +74,7 @@ resource "aws_appautoscaling_target" "dynamodb_table_write_target" {
count = var.autoscaling_enabled ? 1 : 0
max_capacity = var.max_write_capacity
min_capacity = var.write_capacity
resource_id = "table/${local.full_name}"
resource_id = "table/${local.table_name}"
scalable_dimension = "dynamodb:table:WriteCapacityUnits"
service_namespace = "dynamodb"
}
Expand Down