snowSend - Dynamic Emails Snowflake
snowSend is an open-source prototype that empowers you to dispatch custom-styled emails directly from Snowflake. React to real-time triggers and provide a unique experience with emails stylized using React-Email components.
Follow these steps to get snowSend up and running in your environment.
Clone the repository
git clone https://github.com/kaarthik108/snowSend.git
Set up a Resend account
Sign up on Resend and retrieve the API Key:
cd pulumi
npm i
pulumi config set RESEND_API_KEY your_resend_api_key --secret
Pulumi setup
pulumi
directory, edit Pulumi.prod.yaml
add the config values, use the below commandpulumi config set snowflake:password your_password --secret
cd pulumi/app
npm install
npm run dev
cd ..
npm install
pulumi up
API_AWS_EXTERNAL_ID
and API_AWS_IAM_USER_ARN
values (you will get these values once you run pulumi up from previous step as stack output):pulumi config set API_AWS_EXTERNAL_ID $(pulumi stack output API_AWS_EXTERNAL_ID) --secret
pulumi config set API_AWS_IAM_USER_ARN $(pulumi stack output API_AWS_IAM_USER_ARN) --secret
pulumi up
Deploy translator function (manual step for now)
This step is necessary due to an issue with snowflake when deploying the request translator UDF, as pulumi deploys functions with quotes eg: "snowsend-1234", but when you set that as REQUEST_TRANSLATOR in external function they don't register as quotes, which makes the external function to not able to find the UDF. So we do this step manually for now.
cd ..
pip install -r requirements.txt
python test.py
Remember to replace the values in test.py
with your function names (EXTERNAL_FUNC
and TRANSLATOR_UDF
).
Additionally, you can host your images either in s3 or snowflake. set pulumi config set url https://s3:xyz/s3.amazonaws.com
if you have images in s3
Your contributions are always welcome! Here's how: