Skip to content

Commit ab9e24f

Browse files
author
Carlos J. Ramirez
committed
Fix: Make DynamoDb tables with prefix work with the GS DB Abstraction [GS-102]
1 parent 71bd98d commit ab9e24f

File tree

9 files changed

+34
-7
lines changed

9 files changed

+34
-7
lines changed

.chalice/config-example.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"FLASK_APP": "FLASK_APP_placeholder",
2121
"APP_HOST_NAME": "APP_HOST_NAME_placeholder",
2222
"CLOUD_PROVIDER": "CLOUD_PROVIDER_placeholder",
23-
"AWS_REGION": "AWS_REGION_placeholder"
23+
"AWS_REGION": "AWS_REGION_placeholder",
24+
"DYNAMDB_PREFIX": "DYNAMDB_PREFIX_placeholder"
2425
},
2526
"stages": {
2627
"dev": {

CHANGELOG.md

+12-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,18 @@ This project adheres to [Semantic Versioning](http://semver.org/) and [Keep a Ch
1717
### Breaks
1818

1919

20-
## 1.0.11 (2024-07-27)
20+
## Unreleased
21+
## 1.0.12 (2024-08-04)
22+
---
23+
24+
### New
25+
Add: ".nvmrc" file to set the repo default node version.
26+
27+
### Fixes
28+
Make DynamoDb tables with prefix work with the GS DB Abstraction [GS-102]
29+
30+
31+
## 1.0.11 (2024-07-19)
2132
---
2233

2334
### New
@@ -37,7 +48,6 @@ Add: Secret and KMS access policies to the "template-sam.yml" file [GS-41].
3748
Add: "scripts/aws_cf_processor/test_localstack.sh" to test localstack EC2 functionality with the LOCALSTACK_AUTH_TOKEN envvar [GS-97].
3849
Add LOCAL_DNS_DISABLED and BRIDGE_PROXY_DISABLED envvars to disable local services working on the road.
3950
Add NGROK_ENABLED envvar to enable/disable Ngrok service in the URL_MASK_EXTERNAL_HOSTNAME and DEV_MASK_EXT_HOSTNAME assignments on "scripts/get_domain_name_dev.sh".
40-
Add: ".nvmrc" file to set the repo default node version.
4151

4252
### Changes
4353
Change APP_STAGE dynamic assignment in run_aws.sh, set_chalice_cnf.sh, and big_lambdas_manager.sh, and secure_local_server/docker_entrypoint.sh [GS-41].

scripts/aws/run_aws.sh

+1
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ if [[ "$1" = "run_local" || "$1" = "" ]]; then
188188
# To avoid message from langsmith:
189189
# USER_AGENT environment variable not set, consider setting it to identify your requests.
190190
export USER_AGENT="${APP_NAME_LOWERCASE}-${STAGE}"
191+
export DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
191192
echo ""
192193
echo "APP_STAGE: ${APP_STAGE}"
193194
echo "USER_AGENT: ${USER_AGENT}"

scripts/aws/set_chalice_cnf.sh

+2
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ APP_DB_URI_QA=${APP_DB_URI_QA//@/\\@}
130130
APP_DB_URI_STAGING=${APP_DB_URI_STAGING//@/\\@}
131131
APP_DB_URI_PROD=${APP_DB_URI_PROD//@/\\@}
132132
APP_DB_URI_DEMO=${APP_DB_URI_DEMO//@/\\@}
133+
DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
133134

134135
if [ "${APP_CORS_ORIGIN_DEV}" = "" ]; then
135136
APP_CORS_ORIGIN_DEV="*"
@@ -223,6 +224,7 @@ perl -i -pe"s|AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_PROD_placeholder|${AWS_S3_CHATBO
223224
perl -i -pe"s|APP_HOST_NAME_placeholder|${APP_HOST_NAME}|g" "${CONFIG_FILE}"
224225
perl -i -pe"s|CLOUD_PROVIDER_placeholder|${CLOUD_PROVIDER}|g" "${CONFIG_FILE}"
225226
perl -i -pe"s|AWS_REGION_placeholder|${AWS_REGION}|g" "${CONFIG_FILE}"
227+
perl -i -pe"s|DYNAMDB_PREFIX_placeholder|${DYNAMDB_PREFIX}|g" "${CONFIG_FILE}"
226228

227229
if [ -f "${REPO_BASEDIR}/scripts/aws/update_additional_envvars.sh" ]; then
228230
. "${REPO_BASEDIR}/scripts/aws/update_additional_envvars.sh" "${CONFIG_FILE}" "${REPO_BASEDIR}"

scripts/aws_big_lambda/big_lambdas_manager.sh

+1
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ export GIT_SUBMODULE_LOCAL_PATH="${GIT_SUBMODULE_LOCAL_PATH}"
327327
export OPENAI_MODEL="${OPENAI_MODEL}"
328328
export OPENAI_TEMPERATURE="${OPENAI_TEMPERATURE}"
329329
export USER_AGENT="${APP_NAME_LOWERCASE}-${STAGE}"
330+
export DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
330331
export LANGCHAIN_PROJECT="${LANGCHAIN_PROJECT}"
331332
export HUGGINGFACE_ENDPOINT_URL="${HUGGINGFACE_ENDPOINT_URL}"
332333
export SMTP_SERVER="${SMTP_SERVER}"

scripts/aws_dynamodb/generate_dynamodb_cf/generate_dynamodb_cf.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,20 @@ def get_dynamodb_definition(config: dict, table_prefix: str) -> dict:
177177
write_capacity_units = config.get('WriteCapacityUnits', "1")
178178

179179
dynamodb_output = {
180-
table_name: {
181-
"Descriptzion": f"Name for the {table_name} DynamoDB table",
180+
# This gives the error "Template format error:
181+
# Outputs name 'xxx_xxxx_xxx' is non alphanumeric."
182+
# table_name: {
183+
definition_name: {
184+
# "Description": f"Name for the {table_name} DynamoDB table",
185+
"Description": table_name,
182186
"Value": SubRep(dynamodb_table_name),
183187
"Export": {
184-
"Name": SubRep(f"{dynamodb_table_name}-TableName")
188+
# This gives the error "Template format error:
189+
# Output XxxxxTable is malformed. The Name field of every
190+
# Export member must be specified and consist only of
191+
# alphanumeric characters, colons, or hyphens."
192+
# "Name": SubRep(f"{dynamodb_table_name}-TableName")
193+
"Name": SubRep(f"{definition_name}Name")
185194
}
186195
}
187196
}

scripts/aws_ec2_elb/run-fastapi-ecr-creation.sh

+1
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ OPENAI_MODEL="${OPENAI_MODEL}"
181181
OPENAI_TEMPERATURE="${OPENAI_TEMPERATURE}"
182182
LANGCHAIN_PROJECT="${LANGCHAIN_PROJECT}"
183183
USER_AGENT="${APP_NAME_LOWERCASE}-${STAGE}"
184+
DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
184185
HUGGINGFACE_ENDPOINT_URL="${HUGGINGFACE_ENDPOINT_URL}"
185186
SMTP_SERVER="${SMTP_SERVER}"
186187
SMTP_PORT="${SMTP_PORT}"

scripts/aws_secrets/aws_secrets_manager.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ get_secret_var_list() {
144144

145145
# Environment variables (will be plain, unencrypted)
146146
# Core
147-
export CORE_ENVS="APP_NAME APP_VERSION FLASK_APP APP_DEBUG APP_STAGE APP_CORS_ORIGIN APP_DB_ENGINE APP_DB_NAME CURRENT_FRAMEWORK DEFAULT_LANG GIT_SUBMODULE_URL GIT_SUBMODULE_LOCAL_PATH SMTP_SERVER SMTP_PORT SMTP_DEFAULT_SENDER APP_HOST_NAME CLOUD_PROVIDER AWS_REGION"
147+
export CORE_ENVS="APP_NAME APP_VERSION FLASK_APP APP_DEBUG APP_STAGE APP_CORS_ORIGIN APP_DB_ENGINE APP_DB_NAME CURRENT_FRAMEWORK DEFAULT_LANG GIT_SUBMODULE_URL GIT_SUBMODULE_LOCAL_PATH SMTP_SERVER SMTP_PORT SMTP_DEFAULT_SENDER APP_HOST_NAME CLOUD_PROVIDER AWS_REGION DYNAMDB_PREFIX"
148148
# AI
149149
export EXTENSION_ENVS="AI_ASSISTANT_NAME AWS_S3_CHATBOT_ATTACHMENTS_BUCKET OPENAI_MODEL OPENAI_TEMPERATURE LANGCHAIN_PROJECT USER_AGENT HUGGINGFACE_ENDPOINT_URL"
150150
# App specific
@@ -213,6 +213,7 @@ prepare_envars() {
213213
export APP_VERSION=$(cat ${REPO_BASEDIR}/version.txt)
214214
export APP_STAGE="${STAGE}"
215215
export USER_AGENT="${APP_NAME_LOWERCASE}-${STAGE}"
216+
export DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
216217

217218
# Build the App backend host name
218219
if [ "${AWS_DEPLOYMENT_TYPE}" = "lambda" ]; then

scripts/secure_local_server/docker_entrypoint.sh

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export APP_HOST_NAME="${DOMAIN_NAME}"
7171
export APP_VERSION=$(cat version.txt)
7272
export APP_DB_ENGINE=$(eval echo \$APP_DB_ENGINE_${STAGE_UPPERCASE})
7373
export APP_DB_NAME=$(eval echo \$APP_DB_NAME_${STAGE_UPPERCASE})
74+
export DYNAMDB_PREFIX="${APP_NAME_LOWERCASE}_${STAGE}_"
7475
# export APP_DB_URI=$(eval echo \$APP_DB_URI_${STAGE_UPPERCASE})
7576
export APP_CORS_ORIGIN="$(eval echo \"\$APP_CORS_ORIGIN_${STAGE_UPPERCASE}\")"
7677
export AWS_S3_CHATBOT_ATTACHMENTS_BUCKET=$(eval echo \$AWS_S3_CHATBOT_ATTACHMENTS_BUCKET_${STAGE_UPPERCASE})

0 commit comments

Comments
 (0)