Make sure DB credentials are available when running userdata
Some checks failed
AWS Deploy on Push / build (push) Failing after 41s
Some checks failed
AWS Deploy on Push / build (push) Failing after 41s
This commit is contained in:
@@ -275,6 +275,25 @@ class IptvManagerStack(Stack):
|
||||
associate_public_ip_address=True,
|
||||
)
|
||||
|
||||
# Ensure instance depends on SSM parameters being created
|
||||
instance.node.add_dependency(db)
|
||||
ssm_params = [
|
||||
ssm.StringParameter.from_string_parameter_name(
|
||||
self, "DBHostParamRef", "/iptv-manager/DB_HOST"
|
||||
),
|
||||
ssm.StringParameter.from_string_parameter_name(
|
||||
self, "DBNameParamRef", "/iptv-manager/DB_NAME"
|
||||
),
|
||||
ssm.StringParameter.from_string_parameter_name(
|
||||
self, "DBUserParamRef", "/iptv-manager/DB_USER"
|
||||
),
|
||||
ssm.StringParameter.from_string_parameter_name(
|
||||
self, "DBPassParamRef", "/iptv-manager/DB_PASSWORD"
|
||||
),
|
||||
]
|
||||
for param in ssm_params:
|
||||
instance.node.add_dependency(param)
|
||||
|
||||
# Option: 2: Create Elastic IP (not free tier compatible)
|
||||
# eip = ec2.CfnEIP(
|
||||
# self, "IptvManagerEIP",
|
||||
|
||||
@@ -16,11 +16,32 @@ cd iptv-manager-service
|
||||
# Install Python packages with --ignore-installed to prevent conflicts with RPM packages
|
||||
pip3 install --ignore-installed -r requirements.txt
|
||||
|
||||
# Retrieve DB credentials from SSM Parameter Store
|
||||
export DB_HOST=$(aws ssm get-parameter --name "/iptv-manager/DB_HOST" --query "Parameter.Value" --output text)
|
||||
export DB_NAME=$(aws ssm get-parameter --name "/iptv-manager/DB_NAME" --query "Parameter.Value" --output text)
|
||||
export DB_USER=$(aws ssm get-parameter --name "/iptv-manager/DB_USER" --query "Parameter.Value" --output text)
|
||||
export DB_PASSWORD=$(aws ssm get-parameter --name "/iptv-manager/DB_PASSWORD" --query "Parameter.Value" --output text)
|
||||
# Retrieve DB credentials from SSM Parameter Store with retries
|
||||
echo "Attempting to retrieve DB credentials from SSM..."
|
||||
for i in {1..30}; do
|
||||
DB_HOST=$(aws ssm get-parameter --name "/iptv-manager/DB_HOST" --query "Parameter.Value" --output text 2>/dev/null)
|
||||
DB_NAME=$(aws ssm get-parameter --name "/iptv-manager/DB_NAME" --query "Parameter.Value" --output text 2>/dev/null)
|
||||
DB_USER=$(aws ssm get-parameter --name "/iptv-manager/DB_USER" --query "Parameter.Value" --output text 2>/dev/null)
|
||||
DB_PASSWORD=$(aws ssm get-parameter --name "/iptv-manager/DB_PASSWORD" --query "Parameter.Value" --output text 2>/dev/null)
|
||||
|
||||
if [ -n "$DB_HOST" ] && [ -n "$DB_NAME" ] && [ -n "$DB_USER" ] && [ -n "$DB_PASSWORD" ]; then
|
||||
echo "Successfully retrieved all DB credentials"
|
||||
break
|
||||
fi
|
||||
|
||||
echo "Waiting for SSM parameters to be available... (attempt $i/30)"
|
||||
sleep 5
|
||||
done
|
||||
|
||||
if [ -z "$DB_HOST" ] || [ -z "$DB_NAME" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASSWORD" ]; then
|
||||
echo "ERROR: Failed to retrieve all required DB credentials after 30 attempts"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export DB_HOST
|
||||
export DB_NAME
|
||||
export DB_USER
|
||||
export DB_PASSWORD
|
||||
|
||||
# Set PGPASSWORD for psql to use
|
||||
export PGPASSWORD=$DB_PASSWORD
|
||||
|
||||
Reference in New Issue
Block a user