Loading repository data…
Loading repository data…
abeltavares / repository
☁️ ETL pipeline using Pulumi, AWS services, and Snowflake for automated data flow.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This project creates an advanced ETL pipeline using Pulumi for infrastructure as code, leveraging AWS services such as S3, Lambda, and Glue, and integrating with Snowflake for data warehousing. The pipeline automates the ingestion, transformation, and loading of customer data from an S3 data lake into Snowflake.
├── assets
│ ├── etl_pipeline.jpg
│ └── final_snowflake.png
├── data
│ └── customers.csv
├── glue
│ └── glue_job.py
├── lambda
│ ├── __init__.py
│ ├── lambda_deployment.zip
│ └── trigger_glue.py
├── __main__.py
├── modules
│ ├── glue.py
│ ├── __init__.py
│ ├── lambdas.py
│ ├── __pycache__
│ ├── s3.py
│ └── snowflake.py
├── Pulumi.dev.yaml
├── Pulumi.yaml
├── README.md
└── requirements.txt
Data Ingestion:
customers.csv located in the data directory.Triggering ETL Process:
Loading Data to Snowflake:
s3.py)Sets up S3 buckets for data lake, output, and scripts.
lambdas.py)Manages Lambda functions and IAM roles/policies. Uploads Lambda code.
glue.py)Sets up Glue database, crawlers, and jobs. Uploads Glue scripts to S3.
snowflake.py)Configures Snowflake resources including warehouses, databases, schemas, tables, and stages. Sets up Snowpipe for automatic data ingestion.
Variables are managed in Pulumi.dev.yaml. Ensure the following variables are set:
config:
aws:region: "aws-region"
aws_account_id: "aws-account-id"
snowflake_account: "your-snowflake-account"
snowflake_user: "your-snowflake-user"
snowflake_password: "your-snowflake-password"
aws_etl_pipeline:s3_bucket_name: "name-you-want-for-data-lake-bucket"
aws_etl_pipeline:output_bucket_name: "name-you-want-for-output-bucket"
aws_etl_pipeline:scripts_bucket_name: "name you want for scripts bucket"
pulumi plugin install
pip install -r requirements.txt
Pulumi.dev.yaml file)pulumi config set aws:region <aws-region>
pulumi config set aws_account_id <aws-account-id>
pulumi config set snowflake_account <your-snowflake-account>
pulumi config set snowflake_user <your-snowflake-user>
pulumi config set --secret snowflake_password <your-snowflake-password>
pulumi config set aws_etl_pipeline:s3_bucket_name <name-you-want-for-data-lake-bucket>
pulumi config set aws_etl_pipeline:output_bucket_name <name-you-want-for-output-bucket>
pulumi config set aws_etl_pipeline:scripts_bucket_name <name-you-want-for-scripts-bucket>
pulumi up
This project showcases a powerful ETL pipeline leveraging modern cloud technologies and infrastructure as code practices. The integration of AWS and Snowflake provides a scalable and efficient solution for data ingestion, transformation, and loading.