[Azure Cloud] Example deployment Function App

1 min read

Hướng dẫn triển khai Function App Cơ bản với các bước chi tiết. Bao gồm các yêu cầu, thiết lập, và chiến lược triển khai để đảm bảo thực hiện thành công.

Cài Đặt Các Gói Yêu Cầu

Trên Ubuntu, bạn cần cài đặt các gói sau:

sudo apt-get update && sudo apt-get install -y \
    git \
    curl \
    unzip \
    cron \
    wget

Cài Đặt Node Version Manager (nvm)

Cài đặt nvm bằng lệnh:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

Tạo Một Function App Ví Dụ

Cấu trúc thư mục:

.
└── Function App/
    ├── src/
    │   ├── function1.js
    │   ├── function2.js
    │   └── ...
    ├── .funcignore
    ├── host.json
    ├── local.settings.json
    └── package.json

Mã Lệnh Của Function

import { app } from '@azure/functions';
import { formatDistance, subDays } from "date-fns";
app.http('function1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    handler: async (request, context) => {
        context.log(`Http function processed request for url "${request.url}"`);
        const name = request.query.get('name') || await request.text() || 'world';
        let distance = formatDistance(subDays(new Date(), 3), new Date(), { addSuffix: true });
        return { body: `${name} - ${distance}`};
    }
});

Dòng 4, function1 là một http export, nó là đường dẫn của domain.

Nội Dung Tệp package.json

{
    "name": "node",
    "main": "src/*.js",
    "type": "module",
    "version": "1.0.0",
    "description": "",
    "scripts": {
      "start": "func start",
      "test": "echo \"No tests yet...\"",
      "deploy": "zip -r app.zip * -x \"./node_modules/*\"  && az functionapp deployment source config-zip --resource-group $RESOURCE_GROUP --name $FUNCTION_APP --src app.zip --build-remote true && rm -rf app.zip"
    },
    "dependencies": {
      "@azure/functions": "^4.0.0",
      "date-fns": "^3.1.1"
    },
    "devDependencies": {}
}

Dòng 3, func sẽ tải tất cả các function trong src/*.js.

Nội Dung Tệp host.json

{
    "version": "2.0",
    "logging": {
      "applicationInsights": {
        "samplingSettings": {
          "isEnabled": true,
          "excludedTypes": "Request"
        }
      }
    },
    "extensionBundle": {
      "id": "Microsoft.Azure.Functions.ExtensionBundle",
      "version": "[3.*, 4.0.0)"
    }
}

Nội Dung Tệp local.settings.json

{
    "IsEncrypted": false,
    "Values": {
      "FUNCTIONS_WORKER_RUNTIME": "node",
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "AzureWebJobs.HttpExample.Disabled": "true"
    },
    "Host": {
      "LocalHttpPort": 7071,
      "CORS": "*",
      "CORSCredentials": false
    }
}

Tham khảo: https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-local#local-settings-file

Run Local để kiểm tra

npm i
func start

Deploy lên Azure

Xem lại dòng 10 trong package.json để thay đổi thông tin triển khai trên Azure

  • Resource group: RESOURCE_GROUP_NAME
  • Function App Name: FUNCTION_APP_NAME

RESOURCE_GROUP=RESOURCE_GROUP_NAME FUNCTION_APP=FUNCTION_APP_NAME npm run deploy

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *