This repository hosts a pair of Azure Functions designed for Extract, Transform, Load (ETL) operations:
1. HTTP-triggered Function:
Handles CSV file uploads from request body to the Blob 'in/input.csv' under container 'hvalfangstcontainer'.
2. Blob-triggered Function:
Listens for changes to aforementioned Blob 'in/input.csv' and responds by loading the CSV into a Pandas dataframe on changes.
Conducts calculations to determine correlations between specific columns.
Stores the resulting correlations in a dictionary and dumps said dictionary to JSON.
It then proceeds to upload the JSON contents to the Blob 'out/statistics.json'.
A CI/CD pipeline has been implemented utilizing a GitHub Actions Workflow script, which enabled automatic deployment to Azure Function App on repository pushes. Azure resources are provisioned with Terraform via shell scripts 'up' and 'down'.
- x86-64
- Linux/Unix
- Python
The shell script 'up' allocates Azure resources with Terraform.
The shell script 'down' deallocates Azure resources.
- Run the 'up' script to provision Azure resources with Terraform.
- Open your browser and navigate to the Azure Portal.
- Navigate to the newly created Function App 'hvalfangstlinuxfunctionapp'
- Click on 'Get publish profile' to download a file.
- The associated file contents will be used in the next step.
- Open the 'Settings' tab of your GitHub repository.
- Click on 'Actions' under 'Security' -> 'Secrets and variables'.
- Create the following repository secret:
- PUBLISH_PROFILE: Copy value from downloaded file obtained in step #3
Our Azure Function will be deployed on repository pushes by utilizing a GitHub Actions workflow script.