From 00a2efb09b6531ef2ea0b3a8274665c87104441e Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Mon, 28 Oct 2024 00:01:31 -0400 Subject: [PATCH 1/3] docs: optuna k8s hyperparam tuning guide + images --- .../guides/optuna-hyperprameter-kubernetes.md | 518 ++++++++++++++++++ .../deletepod-logs.png | Bin 0 -> 120439 bytes .../k8s-example-logs.png | Bin 0 -> 61860 bytes 3 files changed, 518 insertions(+) create mode 100644 content/guides/optuna-hyperprameter-kubernetes.md create mode 100644 public/guides/images/optuna-hyperprameter-kubernetes/deletepod-logs.png create mode 100644 public/guides/images/optuna-hyperprameter-kubernetes/k8s-example-logs.png diff --git a/content/guides/optuna-hyperprameter-kubernetes.md b/content/guides/optuna-hyperprameter-kubernetes.md new file mode 100644 index 0000000000..f4efc43956 --- /dev/null +++ b/content/guides/optuna-hyperprameter-kubernetes.md @@ -0,0 +1,518 @@ +--- +title: Distributed hyperparameter tuning with Optuna, Neon Postgres, and Kubernetes +subtitle: Use Neon Postgres to orchestrate multi-node hyperparameter tuning for your scikit-learn, XGBoost, PyTorch, and TensorFlow/Keras models on a Kubernetes cluster +author: sam-harri +enableTableOfContents: true +createdAt: '2024-10-28T00:00:00.000Z' +updatedOn: '2024-10-28T00:00:00.000Z' +--- + +In this guide, you'll learn how to set up distributed hyperparameter tuning for machine learning models across multiple nodes using Kubernetes. You'll use Optuna, a bayesian optimization library, to fine-tune models built with popular libraries like scikit-learn, XGBoost, PyTorch, and TensorFlow/Keras. + +To orchestrate all the trials, you'll use Neon Postgres, a serverless postgres database. The combination of Neon Postgres, Kubernetes, and Docker allows for scalable, distributed hyperparameter tuning, simplifying the orchestration and management of complex machine learning workflows. + +## Prerequisites + +Before you begin, ensure you have the following tools and services set up: + +- `Neon Serverless Postgres`: To provision and manage your serverless PostgreSQL database. If you don't have an account yet, [sign up here](https://console.neon.tech/signup). +- `Minikube`: For running a local Kubernetes cluster. You can install it by following the official [Minikube installation guide](https://minikube.sigs.k8s.io/docs/start). +- `kubectl`: Kubernetes command-line tool for interacting with your cluster. Follow the [kubectl installation instructions](https://kubernetes.io/docs/tasks/tools/) to get started. +- `Docker`: For containerizing your applications. If you don't have it installed, check out the [Docker installation guide](https://docs.docker.com/engine/install/). +- `Python`: To create, train, and optimize machine learning models. You can download Python from the [official website](https://www.python.org/downloads/). + +## Overview + +Hyperparameters are essential to machine learning model performance. Unlike parameters learned during training, hyperparameters—like learning rates, batch sizes, or the number of layers in a neural network—need to be set in advance. Tuning these hyperparameters effectively can greatly improve model performance, squeezing out the last bit of accuracy or reducing training time. + +Bayesian optimization offers an efficient method for hyperparameter tuning. Unlike traditional approaches like grid or random search, Bayesian optimization builds a probabilistic model of the objective function to help it sample which hyperparameters to test next, which reduces the number of experiments needed, saving time and compute. + +Distributing hyperparameter tuning across multiple nodes allows each trial to run independently on its own machine, enabling multiple configurations to be tested simultaneously and speeding up the search process. However, these nodes need to be coordinated, and a serverless database like Neon Postgres is perfect. Neon offers a pay-as-you-go model that minimizes costs during idle periods,but scales when the workload demands it. This database will maintain the state of the hyperparameter tuning process, storing the results of each trial and coordinating the distribution of new trials to available nodes. + +These nodes are managed using Kubernetes, a container orchestration platform, which enables the same task to run concurrently across multiple nodes, allowing each node to handle a separate trial independently. It can also manage resources per node, and reboot nodes that fail, allowing for a fault tolerant training process. + +In this guide, you will combine Optuna, Kubernetes, and Neon Postgres to create a scalable and cost-effective system for distributed tuning of your PyTorch, TensorFlow/Keras, scikit-learn, and XGBoost models. + +## Hyperparameter Tuning + +Optuna organizes hyperparameter tuning into studies, which are collections of trials. A study represents a single optimization run, and each trial within the study corresponds to a set of hyperparameters to be evaluated. Optuna uses a study to manage the optimization process, keeping track of the trials, their results, and the best hyperparameters found so far. + +When you create a study, you can specify various parameters like the study name, the direction of optimization (minimize or maximize), and the storage backend. The storage backend is where Optuna stores the study data, including the trials and their results. By using a persistent storage backend like Neon Postgres, you can save the state of the optimization process, allowing all nodes to access the same study and coordinate the tuning process. + +A study is created like so : + +```python {4,5} +if __name__ == "__main__": + study = optuna.create_study( + study_name="sklearn_example", + storage=os.environ["DATABASE_URL"], + load_if_exists=True, + direction="maximize", + ) + study.optimize(objective, n_trials=100) +``` + +In the case of the distributed training, the `load_if_exists` parameter is set to `True` to load an existing study if it already exists, allowing nodes to join the optimization process. + +Based on your machine learning library of choice, you can define an `objective` function that takes a `trial` object as input and returns a metric to optimize. Let's dive into each library and see how to define the `objective` function for scikit-learn, XGBoost, PyTorch, and TensorFlow/Keras models using test datasets. + +To follow along, name your python script `hyperparam_optimization.py`. + +### sklearn + +ScikitLearn has a very wide range of models in its library, but in this you will be comparing a Support Vector Classifier and a Random Forest Classifier, and their hyperparameter configurations. For the SVC, you will optimize the strength of the regularization parameter `C`, while for the RF, you will optimize the maximum depth of the trees `max_depth`. + +```python +import os +import optuna +import sklearn.datasets +import sklearn.ensemble +import sklearn.model_selection +import sklearn.svm + +def objective(trial): + iris = sklearn.datasets.load_iris() + x, y = iris.data, iris.target + + classifier_name = trial.suggest_categorical("classifier", ["SVC", "RandomForest"]) + if classifier_name == "SVC": + svc_c = trial.suggest_float("svc_c", 1e-10, 1e10, log=True) + classifier_obj = sklearn.svm.SVC(C=svc_c, gamma="auto") + else: + rf_max_depth = trial.suggest_int("rf_max_depth", 2, 32, log=True) + classifier_obj = sklearn.ensemble.RandomForestClassifier( + max_depth=rf_max_depth, n_estimators=10 + ) + + score = sklearn.model_selection.cross_val_score(classifier_obj, x, y, n_jobs=-1, cv=3) + accuracy = score.mean() + return accuracy + + +if __name__ == "__main__": + study = optuna.create_study( + study_name="sklearn_example", + storage=os.environ["DATABASE_URL"], + load_if_exists=True, + direction="maximize", + ) + study.optimize(objective, n_trials=100) + print(study.best_trial) +``` + +### xgboost + +Gradient Boosting is king in the world of tabular data, and XGBoost is one of the most popular libraries for this task. However, these models are especially sensitive to hyperparameter choice. In this example, you will optimize the booster type, regularization weights, sampling ratios, and tree complexity parameters. + +```python +import numpy as np +import os +import optuna +import sklearn.datasets +import sklearn.metrics +from sklearn.model_selection import train_test_split +import xgboost as xgb + + +def objective(trial): + (data, target) = sklearn.datasets.load_breast_cancer(return_X_y=True) + train_x, valid_x, train_y, valid_y = train_test_split(data, target, test_size=0.25) + dtrain = xgb.DMatrix(train_x, label=train_y) + dvalid = xgb.DMatrix(valid_x, label=valid_y) + + param = { + "verbosity": 0, + "objective": "binary:logistic", + # use exact for small dataset. + "tree_method": "exact", + # defines booster, gblinear for linear functions. + "booster": trial.suggest_categorical("booster", ["gbtree", "gblinear", "dart"]), + # L2 regularization weight. + "lambda": trial.suggest_float("lambda", 1e-8, 1.0, log=True), + # L1 regularization weight. + "alpha": trial.suggest_float("alpha", 1e-8, 1.0, log=True), + # sampling ratio for training data. + "subsample": trial.suggest_float("subsample", 0.2, 1.0), + # sampling according to each tree. + "colsample_bytree": trial.suggest_float("colsample_bytree", 0.2, 1.0), + } + + if param["booster"] in ["gbtree", "dart"]: + # maximum depth of the tree, signifies complexity of the tree. + param["max_depth"] = trial.suggest_int("max_depth", 3, 9, step=2) + # minimum child weight, larger the term more conservative the tree. + param["min_child_weight"] = trial.suggest_int("min_child_weight", 2, 10) + param["eta"] = trial.suggest_float("eta", 1e-8, 1.0, log=True) + # defines how selective algorithm is. + param["gamma"] = trial.suggest_float("gamma", 1e-8, 1.0, log=True) + param["grow_policy"] = trial.suggest_categorical("grow_policy", ["depthwise", "lossguide"]) + + if param["booster"] == "dart": + param["sample_type"] = trial.suggest_categorical("sample_type", ["uniform", "weighted"]) + param["normalize_type"] = trial.suggest_categorical("normalize_type", ["tree", "forest"]) + param["rate_drop"] = trial.suggest_float("rate_drop", 1e-8, 1.0, log=True) + param["skip_drop"] = trial.suggest_float("skip_drop", 1e-8, 1.0, log=True) + + bst = xgb.train(param, dtrain) + preds = bst.predict(dvalid) + pred_labels = np.rint(preds) + accuracy = sklearn.metrics.accuracy_score(valid_y, pred_labels) + return accuracy + +if __name__ == "__main__": + study = optuna.create_study( + study_name="xgboost_example", + storage=os.environ["DATABASE_URL"], + load_if_exists=True, + direction="maximize", + ) + study.optimize(objective, n_trials=100) +``` + +### PyTorch + +PyTorch is now the defacto library for deep learning research, and its flexibility makes it a popular choice for many machine learning tasks. In this example, you will optimize the number of layers, hidden units, and dropout ratios in a feedforward neural network for the FashionMNIST dataset, a popular benchmark for image classification. + +```python +import os +import optuna +from optuna.trial import TrialState +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torch.utils.data +from torchvision import datasets +from torchvision import transforms + + +DEVICE = torch.device("cpu") +BATCHSIZE = 128 +CLASSES = 10 +DIR = os.getcwd() +EPOCHS = 10 +N_TRAIN_EXAMPLES = BATCHSIZE * 30 +N_VALID_EXAMPLES = BATCHSIZE * 10 + + +def define_model(trial): + n_layers = trial.suggest_int("n_layers", 1, 3) + layers = [] + + in_features = 28 * 28 + for i in range(n_layers): + out_features = trial.suggest_int("n_units_l{}".format(i), 4, 128) + layers.append(nn.Linear(in_features, out_features)) + layers.append(nn.ReLU()) + p = trial.suggest_float("dropout_l{}".format(i), 0.2, 0.5) + layers.append(nn.Dropout(p)) + + in_features = out_features + layers.append(nn.Linear(in_features, CLASSES)) + layers.append(nn.LogSoftmax(dim=1)) + + return nn.Sequential(*layers) + + +def get_mnist(): + train_loader = torch.utils.data.DataLoader( + datasets.FashionMNIST(DIR, train=True, download=True, transform=transforms.ToTensor()), + batch_size=BATCHSIZE, + shuffle=True, + ) + valid_loader = torch.utils.data.DataLoader( + datasets.FashionMNIST(DIR, train=False, transform=transforms.ToTensor()), + batch_size=BATCHSIZE, + shuffle=True, + ) + + return train_loader, valid_loader + + +def objective(trial): + model = define_model(trial).to(DEVICE) + + # Generate the optimizers. + optimizer_name = trial.suggest_categorical("optimizer", ["Adam", "RMSprop", "SGD"]) + lr = trial.suggest_float("lr", 1e-5, 1e-1, log=True) + optimizer = getattr(optim, optimizer_name)(model.parameters(), lr=lr) + + train_loader, valid_loader = get_mnist() + + for epoch in range(EPOCHS): + model.train() + for batch_idx, (data, target) in enumerate(train_loader): + data, target = data.view(data.size(0), -1).to(DEVICE), target.to(DEVICE) + + optimizer.zero_grad() + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + + model.eval() + correct = 0 + with torch.no_grad(): + for batch_idx, (data, target) in enumerate(valid_loader): + if batch_idx * BATCHSIZE >= N_VALID_EXAMPLES: + break + data, target = data.view(data.size(0), -1).to(DEVICE), target.to(DEVICE) + output = model(data) + pred = output.argmax(dim=1, keepdim=True) + correct += pred.eq(target.view_as(pred)).sum().item() + + accuracy = correct / min(len(valid_loader.dataset), N_VALID_EXAMPLES) + + trial.report(accuracy, epoch) + + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + return accuracy + + +if __name__ == "__main__": + study = optuna.create_study( + study_name="pytorch_example", + storage=os.environ["DATABASE_URL"], + load_if_exists=True, + direction="maximize", + ) + study.optimize(objective, n_trials=100, timeout=600) +``` + +### tfkeras + +While PyTorch is the go-to library for research, Keras with the TensorFlow backend is popular for its simplicity and ease of use. In this example, you will optimize the number of filters, kernel size, strides, activation functions, and learning rate in a convolutional neural network for the MNIST dataset. + +```python +import urllib +import os + +import optuna +from tensorflow.keras.backend import clear_session +from tensorflow.keras.datasets import mnist +from tensorflow.keras.layers import Conv2D +from tensorflow.keras.layers import Dense +from tensorflow.keras.layers import Flatten +from tensorflow.keras.models import Sequential +from tensorflow.keras.optimizers import RMSprop + +N_TRAIN_EXAMPLES = 3000 +N_VALID_EXAMPLES = 1000 +BATCHSIZE = 128 +CLASSES = 10 +EPOCHS = 10 + + +def objective(trial): + clear_session() + + (x_train, y_train), (x_valid, y_valid) = mnist.load_data() + img_x, img_y = x_train.shape[1], x_train.shape[2] + x_train = x_train.reshape(-1, img_x, img_y, 1)[:N_TRAIN_EXAMPLES].astype("float32") / 255 + x_valid = x_valid.reshape(-1, img_x, img_y, 1)[:N_VALID_EXAMPLES].astype("float32") / 255 + y_train = y_train[:N_TRAIN_EXAMPLES] + y_valid = y_valid[:N_VALID_EXAMPLES] + input_shape = (img_x, img_y, 1) + + model = Sequential() + model.add( + Conv2D( + filters=trial.suggest_categorical("filters", [32, 64]), + kernel_size=trial.suggest_categorical("kernel_size", [3, 5]), + strides=trial.suggest_categorical("strides", [1, 2]), + activation=trial.suggest_categorical("activation", ["relu", "linear"]), + input_shape=input_shape, + ) + ) + model.add(Flatten()) + model.add(Dense(CLASSES, activation="softmax")) + + learning_rate = trial.suggest_float("learning_rate", 1e-5, 1e-1, log=True) + model.compile( + loss="sparse_categorical_crossentropy", + optimizer=RMSprop(learning_rate=learning_rate), + metrics=["accuracy"], + ) + + model.fit( + x_train, + y_train, + validation_data=(x_valid, y_valid), + shuffle=True, + batch_size=BATCHSIZE, + epochs=EPOCHS, + verbose=False, + ) + + score = model.evaluate(x_valid, y_valid, verbose=0) + return score[1] + +if __name__ == "__main__": + study = optuna.create_study( + study_name="tfkeras_example", + storage=os.environ["DATABASE_URL"], + load_if_exists=True, + direction="maximize", + ) + study.optimize(objective, n_trials=100, timeout=600) +``` + +## Creating the Docker Image + +To run the hyperparameter tuning process in a Kubernetes cluster, you'll need to containerize your application using Docker by creating a Docker image. The Docker image will contain your Python code, dependencies, and the necessary configuration files to run. + +```Dockerfile +FROM python:3.10-slim-buster + +WORKDIR /usr/src/ + +RUN pip install --no-cache-dir optuna psycopg2-binary OTHER_DEPENDENCIES + +COPY hyperparam_optimization.py . +``` + +Depending on the machine learning library you're using, you'll need to install the appropriate dependencies in the Docker image. Each of the examples above requires the `optuna`, and `psycopg2-binary` packages, but you will need additional dependencies for each of the examples : + +- For scikit-learn, you'll need to install `scikit-learn` +- For XGBoost, you'll need to install `xgboost` +- For PyTorch, you'll need to install `torch` and `torchvision` +- For TensorFlow/Keras, you'll need to install `tensorflow` + +You'll want to build the Docker image later, once the Kubernetes cluster is set up, so that the image is available to the Kubernetes nodes. + +## Setting up Kubernetes + +To run distributed hyperparameter tuning across multiple nodes, you'll need a Kubernetes cluster. For this guide, you'll use Minikube to set up a local Kubernetes cluster on your machine. Minikube is a lightweight Kubernetes distribution, making it easy to get started with Kubernetes development. + +To start Minikube, run the following command: + +```bash +minikube start +``` + +This command will create a new Kubernetes cluster using the default settings. Once Minikube is up and running, you can interact with the cluster using the `kubectl` command-line tool. + +To check the status of your cluster, run: + +```bash +kubectl cluster-info +``` + +This command will display information about the Kubernetes cluster, including the API server address and the cluster services. + +Now that minikube is running, you can build your Docker using: + +```bash +eval "$(minikube docker-env)" +docker image build -t "optuna-kubernetes:example" . +``` + +Note the `eval "$(minikube docker-env)"` command, which sets the Docker environment variables to point to the Minikube Docker daemon. This allows you to build the Docker image inside the Minikube cluster, making it available to the Kubernetes nodes. + +To submit jobs to the Kubernetes cluster, you'll need to create a Kubernetes manifest file. This file describes the task you want to run, including the container image, command, and environment variables. You can define the number of parallel jobs to run and the restart policy for the job. + +To allow the Job to access the Neon Postgres database, you'll need to create a Kubernetes Secret containing the database credentials. You can create the secret from a `.env` file containing the database URL like so: + +```bash +kubectl create secret generic optuna-postgres-secrets --from-env-file=.env +``` + +where your `.env` file contains the database URL from the Neon Console: + +```bash +DATABASE_URL=YOUR_DATABASE_URL +``` + +Or from the raw string in the Neon Console like so: + +```bash +kubectl create secret generic optuna-postgres-secrets \ + --from-literal=DATABASE_URL=YOUR_DATABASE_URL +``` + +Now, you can create the Kubernetes Job manifest file: + +```yaml +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: worker +spec: + parallelism: 3 + template: + spec: + restartPolicy: OnFailure + containers: + - name: worker + image: optuna-kubernetes:example + imagePullPolicy: IfNotPresent + command: + - python + - hyperparam_optimization.py + envFrom: + - secretRef: + name: optuna-postgres-secrets +``` + +Here, the manifest tells Kubernetes to launch 3 parallel jobs, each running the `hyperparam_optimization.py` script inside the Docker container, and if the job fails, Kubernetes will restart it automatically. The `envFrom` field specifies that the Job should use the `optuna-postgres-secrets` secret you just created to access the Neon Postgres database. + +Finally, you can submit the Job to the Kubernetes cluster using the following command: + +```bash +kubectl apply -f k8s-manifests.yaml +``` + +Now, if you run the following command, you should see the Job running in the Kubernetes cluster: + +```bash +kubectl get jobs +``` + +and if you run the following command, you should see the 3 pods running the job: + +```bash +kubectl get pods +``` + +## Monitoring + +To monitor your Kubernetes cluster, you can use the Kubernetes Dashboard, a web-based UI for managing and monitoring your cluster. To access the Kubernetes Dashboard, run the following command: + +```bash +minikube dashboard +``` + +Likewise, you can monitor logs of the running pods to monitor using a tool like `stern`, which allows you to tail logs from multiple pods at once: + +```bash +stern . +``` + +Here, you can see that the first pod creates a new study, and the other pods join the existing study. Then, each pods runs its trial, logs the result, and creates new a trial based on the results of the previous ones in the database. + +![Stern Logs](/guides/images/optuna-hyperprameter-kubernetes/k8s-example-logs.png) + +To show off the power of Kubernetes fault tolerance, you can delete one of the pods, and see that the job is automatically restarted on a new pod. First, find all the running pods and chose one to delete: + +```bash +kubectl get pods +``` + +Then, delete the pod: + +```bash +kubectl delete pod +``` + +In the stern logs, you can see the pod getting removed, and a new pod being created to replace it, all while continuing the same study as before. + +![Delete Pod Stern Logs](/guides/images/optuna-hyperprameter-kubernetes/deletepod-logs.png) + +## Conclusion + +Now, you have successfully set up distributed hyperparameter tuning using Optuna, Neon Postgres, and Kubernetes. By leveraging Kubernetes to manage multiple nodes running hyperparameter tuning jobs, you can speed up the optimization process and find the best hyperparameters for your machine learning models more efficiently. This kind of task, which sees bursts of database activity followed by long periods of inactivity, is well-suited to a serverless database like Neon Postgres, which can scale dynamically to any workload, then back to zero. + +To take this to the next step, you can leverage cloud Kubernetes services like Azure Kubernetes Service (AKS) or Amazon Elastic Kubernetes Service (EKS). These services offer managed Kubernetes clusters that can scale to hundreds of nodes to run your jobs at scale. You can also integrate with cloud storage services like Azure Blob Storage or Amazon S3 to store your training data and model checkpoints, making it easier to manage large datasets and distributed training workflows. diff --git a/public/guides/images/optuna-hyperprameter-kubernetes/deletepod-logs.png b/public/guides/images/optuna-hyperprameter-kubernetes/deletepod-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcd986166527e148b94670db0606632b90c1113 GIT binary patch literal 120439 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 bIA;uCjZRsw_qw_`z(+ww^=W~WvCsbiS%}X< literal 0 HcmV?d00001 diff --git a/public/guides/images/optuna-hyperprameter-kubernetes/k8s-example-logs.png b/public/guides/images/optuna-hyperprameter-kubernetes/k8s-example-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..246bbdb902c9b28caaba83784381d28051f4dbaf GIT binary patch literal 61860 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 _v*i(->S}fBAvqSTxI5qT?VO<_;=2&__j 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 Date: Fri, 22 Nov 2024 16:18:44 -0500 Subject: [PATCH 2/3] fix: addd neon driver --- .../guides/query-postgres-azure-functions.md | 691 ++++++++++-------- 1 file changed, 367 insertions(+), 324 deletions(-) diff --git a/content/guides/query-postgres-azure-functions.md b/content/guides/query-postgres-azure-functions.md index 9cbf368255..196921dbe3 100644 --- a/content/guides/query-postgres-azure-functions.md +++ b/content/guides/query-postgres-azure-functions.md @@ -120,369 +120,412 @@ After creating the database, make sure to copy the connection details (such as * ## Step 2: Create an Azure Function to Manage Products -1. **Sign in to Azure** +1. **Sign in to Azure** - If you don't already have an account, sign up on the Microsoft [Azure](https://portal.azure.com/) portal. + If you don't already have an account, sign up on the Microsoft [Azure](https://portal.azure.com/) portal. - We will initialize an Azure Functions project where we will create an **HTTP Trigger function** in Visual Studio Code (VS Code) using the **Azure Functions extension**. + We will initialize an Azure Functions project where we will create an **HTTP Trigger function** in Visual Studio Code (VS Code) using the **Azure Functions extension**. -2. **Install the Azure Functions extension**: +2. **Install the Azure Functions extension**: - - Open VS Code, or install [Visual Studio Code](https://code.visualstudio.com/) if it's not yet installed. - - Go to the extensions tab or press `Ctrl+Shift+X`. - - Search for "Azure Functions" and install the official extension. + - Open VS Code, or install [Visual Studio Code](https://code.visualstudio.com/) if it's not yet installed. + - Go to the extensions tab or press `Ctrl+Shift+X`. + - Search for "Azure Functions" and install the official extension. -3. **Create an Azure Functions Project** +3. **Create an Azure Functions Project** - Open the command palette or press `Ctrl+Shift+P` to open the command palette. + Open the command palette or press `Ctrl+Shift+P` to open the command palette. - - Type `Azure Functions: Create New Project...` and select that option. - - Choose a directory where you want to create the project. - - Select the programming language (`JavaScript` in our case). - - Choose a JavaScript programming model (`Model V4`). - - Choose a function template, and select `HTTP trigger`. - - Give your function a name, for example, `manageClients`. + - Type `Azure Functions: Create New Project...` and select that option. + - Choose a directory where you want to create the project. + - Select the programming language (`JavaScript` in our case). + - Choose a JavaScript programming model (`Model V4`). + - Choose a function template, and select `HTTP trigger`. + - Give your function a name, for example, `manageClients`. - Once confirmed, the project will be created with some default code. + Once confirmed, the project will be created with some default code. -4. **Install the Postgres client** +4. **Install the Postgres client** - In the terminal of your Azure Functions project, install the **pg** package, which will be used to connect to Postgres: + In the terminal of your Azure Functions project, install the **pg** package, which will be used to connect to Postgres: - ```bash - npm install pg - ``` + ```bash + npm install pg + ``` -5. **Azure Functions Core Tools** +5. **Azure Functions Core Tools** - Install Azure Functions Core Tools to run functions locally. + Install Azure Functions Core Tools to run functions locally. - ```bash - npm install -g azure-functions-core-tools@4 --unsafe-perm true - ``` + ```bash + npm install -g azure-functions-core-tools@4 --unsafe-perm true + ``` - + - Since there are three tables in the database (`Clients`, `Hotels`, and `Reservations`), using a separate file for each feature or interaction with the database is a good practice to maintain clear and organized code. + Since there are three tables in the database (`Clients`, `Hotels`, and `Reservations`), using a separate file for each feature or interaction with the database is a good practice to maintain clear and organized code. - ``` - src/ - ├──index.js - ├──functions/ - │ ├──manageClients.js - │ ├──manageHotels.js - │ └──manageReservations.js - └──database/ - ├──client.js - ├──hotel.js - └──reservation.js - ``` + ``` + src/ + ├──index.js + ├──functions/ + │ ├──manageClients.js + │ ├──manageHotels.js + │ └──manageReservations.js + └──database/ + ├──client.js + ├──hotel.js + └──reservation.js + ``` - + -6. **Configure Environment Variables** +6. **Configure Environment Variables** - On the Neon dashboard, go to `Connection string`, select `Node.js`, and click `.env`. Then, click `show password` and copy the database connection string. If you don't click `show password`, you'll copy a connection string without the password (which is masked). + On the Neon dashboard, go to `Connection string`, select `Node.js`, and click `.env`. Then, click `show password` and copy the database connection string. If you don't click `show password`, you'll copy a connection string without the password (which is masked). - Create a `.env` file at the root of the project to store your database connection information from the Neon. + Create a `.env` file at the root of the project to store your database connection information from the Neon. - Here's an example of the connection string you'll copy: + Here's an example of the connection string you'll copy: - ```bash shouldWrap - DATABASE_URL='postgresql://neondb_owner:************@ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech/neondb?sslmode=require' - ``` + ```bash shouldWrap + DATABASE_URL='postgresql://neondb_owner:************@ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech/neondb?sslmode=require' + ``` - For clarity, you can break this connection string down like this: +7. **Modify the `local.settings.json` file** - ```bash - DB_USER=neondb_owner - DB_HOST=ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech - DB_NAME=neondb - DB_PASSWORD=your_db_password - DB_PORT=5432 - ``` + The `local.settings.json` file is used by Azure Functions for **local executions**. Azure Functions does not directly read the `.env` file. Instead, it relies on `local.settings.json` to inject environment variable values during local execution. In production, you will define the same settings through `App Settings` in the Azure portal. -7. **Modify the `local.settings.json` file** + Here's an example of the `local.settings.json` file : - The `local.settings.json` file is used by Azure Functions for **local executions**. Azure Functions does not directly read the `.env` file. Instead, it relies on `local.settings.json` to inject environment variable values during local execution. In production, you will define the same settings through `App Settings` in the Azure portal. + ```JSON + { + "IsEncrypted": false, + "Values": { + "AzureWebJobsStorage": "", + "FUNCTIONS_WORKER_RUNTIME": "node", + "DATABASE_URL": "postgresql://neondb_owner:************@ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech/neondb?sslmode=require" + } + } + ``` - Here's an example of the `local.settings.json` file : + For clarity, you can break this connection string down like this: - ```JSON - { - "IsEncrypted": false, - "Values": { - "AzureWebJobsStorage": "", - "FUNCTIONS_WORKER_RUNTIME": "node", - "DATABASE_URL": "postgresql://neondb_owner:************@ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech/neondb?sslmode=require" - } - } - ``` + ```JSON + { + "IsEncrypted": false, + "Values": { + "AzureWebJobsStorage": "", + "FUNCTIONS_WORKER_RUNTIME": "node", + "DB_USER": "neondb_owner", + "DB_HOST": "ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech", + "DB_NAME": "neondb", + "DB_PASSWORD": "your_db_password", + "DB_PORT": "5432" + } + } + ``` - For clarity, you can break this connection string down like this: - - ```JSON - { - "IsEncrypted": false, - "Values": { - "AzureWebJobsStorage": "", - "FUNCTIONS_WORKER_RUNTIME": "node", - "DB_USER": "neondb_owner", - "DB_HOST": "ep-quiet-leaf-a85k5wbg.eastus2.azure.neon.tech", - "DB_NAME": "neondb", - "DB_PASSWORD": "your_db_password", - "DB_PORT": "5432" - } - } - ``` + Install the `dotenv` package by opening the terminal in your Azure Functions project. This package will allow you to load environment variables from the `.env` file: - Install the `dotenv` package by opening the terminal in your Azure Functions project. This package will allow you to load environment variables from the `.env` file: + ```bash + npm install dotenv + ``` - ```bash - npm install dotenv - ``` +8. **Manage Each Table** -8. **Manage Each Table** - - a. Create a separate file for each table in the `database/` folder. - - **Example code for `client.js`** - - ```javascript - // src/database/client.js - const { Client } = require('pg'); - require('dotenv').config(); - - const client = new Client({ - user: process.env.DB_USER, - host: process.env.DB_HOST, - database: process.env.DB_NAME, - password: process.env.DB_PASSWORD, - port: process.env.DB_PORT || 5432, - ssl: true, - }); - - const connectDB = async () => { - if (!client._connected) { - await client.connect(); - } - }; - - const getAllClients = async () => { - await connectDB(); - const result = await client.query('SELECT * FROM clients'); - return result.rows; - }; - - const addClient = async (first_name, last_name, email, phone_number) => { - await connectDB(); - const result = await client.query( - `INSERT INTO clients (first_name, last_name, email, phone_number) - VALUES ($1, $2, $3, $4) - RETURNING *`, - [first_name, last_name, email, phone_number] - ); - return result.rows[0]; - }; - - module.exports = { - getAllClients, - addClient, - client, // Optional if you need to close the connection elsewhere - }; - ``` + a. Create a separate file for each table in the `database/` folder. - **Example code for `hotel.js`** - - ```javascript - // src/database/hotel.js - const { Client } = require('pg'); - require('dotenv').config(); - - const client = new Client({ - user: process.env.DB_USER, - host: process.env.DB_HOST, - database: process.env.DB_NAME, - password: process.env.DB_PASSWORD, - port: process.env.DB_PORT || 5432, - ssl: true, - }); - - const connectDB = async () => { - if (!client._connected) { - await client.connect(); - } - }; - - const getAllHotels = async () => { - await connectDB(); - const result = await client.query('SELECT * FROM hotels'); - return result.rows; - }; - - module.exports = { - getAllHotels, - client, - }; - ``` + Here, you can use either the `neon` package or the `pg` package to connect to the database. - **Example code for `reservation.js`** - - ```javascript - // src/database/reservation.js - const { Client } = require('pg'); - require('dotenv').config(); - - const client = new Client({ - user: process.env.DB_USER, - host: process.env.DB_HOST, - database: process.env.DB_NAME, - password: process.env.DB_PASSWORD, - port: process.env.DB_PORT || 5432, - ssl: true, - }); - - const connectDB = async () => { - if (!client._connected) { - await client.connect(); - } - }; - - const getAvailableReservations = async () => { - await connectDB(); - const result = await client.query('SELECT * FROM reservations WHERE status = $1', [ - 'available', - ]); - return result.rows; - }; - - module.exports = { - getAvailableReservations, - client, - }; - ``` + **Example code for `client.js`** - b. Modify the `functions/` folder by adding the function files: - - In the `functions/` folder, remove the default file, and then add three function management files (`manageClients.js`, `manageHotels.js`, and `manageReservations.js`). - - **Example for `manageClients.js`** - - ```javascript - // src/functions/manageClients.js - const { app } = require('@azure/functions'); - const { getAllClients, addClient } = require('../database/client'); - - app.http('manageClients', { - methods: ['GET', 'POST'], - authLevel: 'anonymous', - handler: async (request, context) => { - context.log(`HTTP function processed request for url "${request.url}"`); - - if (request.method === 'GET') { - try { - const clients = await getAllClients(); - console.table(clients); - return { - body: clients, - }; - } catch (error) { - context.log('Error fetching clients:', error); - return { - status: 500, - body: 'Error retrieving clients.', - }; - } - } - - if (request.method === 'POST') { - try { - const { first_name, last_name, email, phone_number } = await request.json(); - - if (!first_name || !last_name || !email || !phone_number) { - return { - status: 400, - body: 'Missing required fields: first_name, last_name, email, phone_number.', - }; - } - - const newClient = await addClient(first_name, last_name, email, phone_number); - console.table(newClient); - return { - status: 201, - body: newClient, - }; - } catch (error) { - context.log('Error adding client:', error); - return { - status: 500, - body: 'Error adding client.', - }; - } - } - }, - }); - ``` + - **Example for `manageHotels.js`** - - ```javascript - // src/functions/manageHotels.js - const { app } = require('@azure/functions'); - const { getAllHotels } = require('../database/hotel'); - - app.http('manageHotels', { - methods: ['GET'], - authLevel: 'anonymous', - handler: async (request, context) => { - context.log(`HTTP function processed request for url "${request.url}"`); - - try { - const hotels = await getAllHotels(); - return { - body: hotels, - }; - } catch (error) { - context.log('Error fetching hotels:', error); - return { - status: 500, - body: 'Error retrieving hotels.', - }; - } - }, - }); - ``` + ```javascript + import { neon } from '@neondatabase/serverless'; + import dotenv from 'dotenv'; - **Example for `manageReservations.js`** - - ```javascript - // src/functions/manageReservations.js - const { app } = require('@azure/functions'); - const { getAvailableReservations } = require('../database/reservation'); - - app.http('manageReservations', { - methods: ['GET'], - authLevel: 'anonymous', - handler: async (request, context) => { - context.log(`HTTP function processed request for url "${request.url}"`); - - try { - const reservations = await getAvailableReservations(); - return { - body: reservations, - }; - } catch (error) { - context.log('Error fetching reservations:', error); - return { - status: 500, - body: 'Error retrieving available reservations.', - }; - } - }, - }); - ``` + dotenv.config(); + + const sql = neon(process.env.DATABASE_URL); + + const getAllClients = async () => { + const rows = await sql`SELECT * FROM clients`; + return rows; + }; + + const addClient = async (first_name, last_name, email, phone_number) => { + const [newClient] = await sql` + INSERT INTO clients (first_name, last_name, email, phone_number) + VALUES (${first_name}, ${last_name}, ${email}, ${phone_number}) + RETURNING *`; + return newClient; + }; + + export { getAllClients, addClient }; + ``` + + ```javascript + const { Client } = require('pg'); + require('dotenv').config(); + + const client = new Client({ + connectionString: process.env.DATABASE_URL, + }); + + const connectDB = async () => { + if (!client._connected) { + await client.connect(); + } + }; + + const getAllClients = async () => { + await connectDB(); + const result = await client.query('SELECT * FROM clients'); + return result.rows; + }; + + const addClient = async (first_name, last_name, email, phone_number) => { + await connectDB(); + const result = await client.query( + `INSERT INTO clients (first_name, last_name, email, phone_number) + VALUES ($1, $2, $3, $4) + RETURNING *`, + [first_name, last_name, email, phone_number] + ); + return result.rows[0]; + }; + + module.exports = { + getAllClients, + addClient, + }; + ``` + + + + **Example code for `hotel.js`** + + + + ```javascript + import { neon } from '@neondatabase/serverless'; + import dotenv from 'dotenv'; + + dotenv.config(); + + const sql = neon(process.env.DATABASE_URL); + + const getAllHotels = async () => { + const rows = await sql`SELECT * FROM hotels`; + return rows; + }; + + export { getAllHotels }; + ``` + + ```javascript + const { Client } = require('pg'); + require('dotenv').config(); - Feel free to extend this structure to include features such as adding new clients, creating new reservations, or even updating and deleting data, each with **its own file** and **its own logic**. + const client = new Client({ + connectionString: process.env.DATABASE_URL, + }); + + const connectDB = async () => { + if (!client.\_connected) { + await client.connect(); + } + }; + + const getAllHotels = async () => { + await connectDB(); + const result = await client.query('SELECT \* FROM hotels'); + return result.rows; + }; + + module.exports = { + getAllHotels, + client, + }; + ``` + + + + **Example code for `reservation.js`** + + + + ```javascript + import { neon } from '@neondatabase/serverless'; + import dotenv from 'dotenv'; + + dotenv.config(); + + const sql = neon(process.env.DATABASE_URL); + + const getAvailableReservations = async () => { + const rows = await sql` + SELECT * FROM reservations WHERE status = ${'available'} + `; + return rows; + }; + + export { getAvailableReservations }; + ``` + + ```javascript + const { Client } = require('pg'); + require('dotenv').config(); + + const client = new Client({ + connectionString: process.env.DATABASE_URL, + }); + + const connectDB = async () => { + if (!client._connected) { + await client.connect(); + } + }; + + const getAvailableReservations = async () => { + await connectDB(); + const result = await client.query('SELECT * FROM reservations WHERE status = $1', [ + 'available', + ]); + return result.rows; + }; + + module.exports = { + getAvailableReservations, + client, + }; + ``` + + + + b. Modify the `functions/` folder by adding the function files: + + In the `functions/` folder, remove the default file, and then add three function management files (`manageClients.js`, `manageHotels.js`, and `manageReservations.js`). + + **Example for `manageClients.js`** + + ```javascript + // src/functions/manageClients.js + const { app } = require('@azure/functions'); + const { getAllClients, addClient } = require('../database/client'); + + app.http('manageClients', { + methods: ['GET', 'POST'], + authLevel: 'anonymous', + handler: async (request, context) => { + context.log(`HTTP function processed request for url "${request.url}"`); + + if (request.method === 'GET') { + try { + const clients = await getAllClients(); + console.table(clients); + return { + body: clients, + }; + } catch (error) { + context.log('Error fetching clients:', error); + return { + status: 500, + body: 'Error retrieving clients.', + }; + } + } + + if (request.method === 'POST') { + try { + const { first_name, last_name, email, phone_number } = await request.json(); + + if (!first_name || !last_name || !email || !phone_number) { + return { + status: 400, + body: 'Missing required fields: first_name, last_name, email, phone_number.', + }; + } + + const newClient = await addClient(first_name, last_name, email, phone_number); + console.table(newClient); + return { + status: 201, + body: newClient, + }; + } catch (error) { + context.log('Error adding client:', error); + return { + status: 500, + body: 'Error adding client.', + }; + } + } + }, + }); + ``` + + **Example for `manageHotels.js`** + + ```javascript + // src/functions/manageHotels.js + const { app } = require('@azure/functions'); + const { getAllHotels } = require('../database/hotel'); + + app.http('manageHotels', { + methods: ['GET'], + authLevel: 'anonymous', + handler: async (request, context) => { + context.log(`HTTP function processed request for url "${request.url}"`); + + try { + const hotels = await getAllHotels(); + return { + body: hotels, + }; + } catch (error) { + context.log('Error fetching hotels:', error); + return { + status: 500, + body: 'Error retrieving hotels.', + }; + } + }, + }); + ``` + + **Example for `manageReservations.js`** + + ```javascript + // src/functions/manageReservations.js + const { app } = require('@azure/functions'); + const { getAvailableReservations } = require('../database/reservation'); + + app.http('manageReservations', { + methods: ['GET'], + authLevel: 'anonymous', + handler: async (request, context) => { + context.log(`HTTP function processed request for url "${request.url}"`); + + try { + const reservations = await getAvailableReservations(); + return { + body: reservations, + }; + } catch (error) { + context.log('Error fetching reservations:', error); + return { + status: 500, + body: 'Error retrieving available reservations.', + }; + } + }, + }); + ``` + + Feel free to extend this structure to include features such as adding new clients, creating new reservations, or even updating and deleting data, each with **its own file** and **its own logic**. ## Step 3: Test the Function Locally From 7e1e8e8d8b39664dbf79b2f530473c86d3e16757 Mon Sep 17 00:00:00 2001 From: Sam Harrison Date: Fri, 22 Nov 2024 16:22:56 -0500 Subject: [PATCH 3/3] fix: added neon driver reference --- content/guides/query-postgres-azure-functions.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/content/guides/query-postgres-azure-functions.md b/content/guides/query-postgres-azure-functions.md index 196921dbe3..848e28c9d4 100644 --- a/content/guides/query-postgres-azure-functions.md +++ b/content/guides/query-postgres-azure-functions.md @@ -147,12 +147,20 @@ After creating the database, make sure to copy the connection details (such as * 4. **Install the Postgres client** - In the terminal of your Azure Functions project, install the **pg** package, which will be used to connect to Postgres: + In the terminal of your Azure Functions project, install either **neon** postgres driver or the **pg** package, which will be used to connect to Postgres: + + + + ```bash + npm install @neondatabase/serverless + ``` ```bash npm install pg ``` + + 5. **Azure Functions Core Tools** Install Azure Functions Core Tools to run functions locally.