Syncs checkout optimization tables from Redshift to Postgres staging database.
events.aggregated_performance_metrics_daily→checkout_optimization_raw.aggregated_performance_metrics_dailyevents.lever_traffic_daily→checkout_optimization_raw.lever_traffic_daily
Daily at 07:00 UTC (after dbt models refresh)
cd src/
mkdir -p package
pip install psycopg2-binary redshift-connector boto3 -t package/
cp redshift_to_postgres_sync.py package/
cd package && zip -r ../lambda_package.zip . && cd ..
mv lambda_package.zip ../terraform init
terraform plan
terraform applyaws lambda invoke \
--function-name redshift-to-postgres-sync \
--profile production \
response.json
cat response.jsonEnvironment variables (set in Terraform):
REDSHIFT_HOST- Redshift cluster endpointREDSHIFT_PORT- Redshift port (5439)REDSHIFT_DATABASE- Database name (main)REDSHIFT_USER- IAM user (dbt)REDSHIFT_CLUSTER_ID- Cluster identifier (hive)POSTGRES_HOST- Postgres RDS endpointPOSTGRES_PORT- Postgres port (5432)POSTGRES_DATABASE- Database namePOSTGRES_USER- Database userTARGET_SCHEMA- Target schema in Postgres
- CloudWatch Logs (create/write)
- EC2 ENI management (for VPC)
- Redshift GetClusterCredentials
- Secrets Manager (for Postgres password)