Bagikan melalui


Penyebaran Zip untuk Azure Functions

Artikel ini menjelaskan cara menerapkan file proyek aplikasi fungsi Anda ke Azure dari file .zip (terkompresi). Anda mempelajari cara melakukan penerapan push, baik dengan menggunakan Azure CLI dan dengan menggunakan REST API. Azure Functions Core Tools juga menggunakan API penerapan ini saat menerbitkan proyek lokal ke Azure.

Penyebaran Zip juga merupakan cara mudah untuk menjalankan fungsi Anda dari paket penyebaran. Untuk mempelajari selengkapnya, lihat Menjalankan fungsi dari file paket di Azure.

Azure Functions memiliki berbagai opsi penerapan dan integrasi berkelanjutan yang diberikan oleh Azure App Service. Untuk informasi selengkapnya, lihat Penerapan berkelanjutan untuk Azure Functions.

Untuk mempercepat pengembangan, Anda mungkin merasa lebih mudah untuk menyebarkan file proyek aplikasi fungsi Langsung dari file .zip. API penerapan .zip ini mengambil konten file .zip dan mengekstrak konten ke dalam folder wwwroot aplikasi fungsi Anda. Penerapan file .zip ini menggunakan layanan Kudu yang sama yang mendukung penerapan berbasis integrasi berkelanjutan, termasuk:

  • Penghapusan file yang tersisa dari penerapan sebelumnya.
  • Penyesuaian penyebaran, termasuk menjalankan skrip penyebaran.
  • Log penyebaran.
  • Sinkronisasi pemicu fungsi di aplikasi fungsi Paket konsumsi.

Untuk informasi selengkapnya, lihat referensi penerapan .zip

Penting

Saat menggunakan penerapan .zip, file apa pun dari penerapan yang ada yang tidak ditemukan di file .zip dihapus dari aplikasi fungsi Anda.

Persyaratan file .zip penerapan

Arsip zip yang Anda sebarkan harus berisi semua file yang diperlukan untuk menjalankan aplikasi fungsi Anda. Anda dapat membuat arsip zip secara manual dari konten folder proyek Functions menggunakan fungsionalitas kompresi .zip bawaan atau alat pihak ketiga.

Arsip harus menyertakan file host.json di akar folder yang diekstrak. Tumpukan bahasa yang dipilih untuk aplikasi fungsi membuat persyaratan tambahan:

Penting

Untuk bahasa yang menghasilkan output yang dikompilasi untuk penyebaran, pastikan untuk mengompres konten folder output yang Anda rencanakan untuk diterbitkan dan bukan seluruh folder proyek. Ketika Functions mengekstrak konten arsip zip, host.json file harus ada di akar paket.

Proses penyebaran zip mengekstrak file dan folder arsip zip di wwwroot direktori. Jika Anda menyertakan direktori induk saat membuat arsip, sistem tidak akan menemukan file yang diharapkan untuk dilihat di wwwroot.

Menerapkan dengan menggunakan Azure CLI

Anda dapat menggunakan Azure CLI untuk memicu penerapan push. Dorong penerapan file .zip ke aplikasi fungsi Anda dengan menggunakan perintah az functionapp deployment source config-zip. Untuk menggunakan perintah ini, Anda harus menggunakan Azure CLI versi 2.0.21 atau yang lebih baru. Untuk melihat versi Azure CLI yang Anda gunakan, gunakan perintah az --version.

Dalam perintah berikut, ganti tempat penampung <zip_file_path> dengan jalur ke lokasi file .zip Anda. Selain itu, ganti <app_name> dengan nama unik aplikasi fungsi Anda dan ganti <resource_group> dengan nama grup sumber daya Anda.

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

Perintah ini menerapkan file proyek dari file .zip unduhan ke aplikasi fungsi Anda di Azure. Perintah ini kemudian menghidupkan ulang aplikasi. Untuk melihat daftar penerapan untuk aplikasi fungsi ini, Anda harus menggunakan REST API.

Saat menggunakan Azure CLI di komputer lokal Anda, <zip_file_path> adalah jalur ke file .zip di komputer Anda. Anda juga dapat menjalankan Azure CLI di Azure Cloud Shell. Saat menggunakan Cloud Shell, Anda harus mengunggah penerapan file .zip terlebih dahulu ke akun Azure Files yang terkait dengan Cloud Shell Anda. Dalam hal ini, <zip_file_path> adalah lokasi penyimpanan yang digunakan akun Cloud Shell Anda. Untuk informasi selengkapnya, lihat Menyimpan file di Azure Cloud Shell.

Menyebarkan file ZIP dengan REST API

Anda dapat menggunakan layanan penyebaran REST API untuk menyebarkan file .zip ke aplikasi Anda di Azure. Untuk menyebarkan, kirim permintaan POST ke https://<app_name>.scm.azurewebsites.net/api/zipdeploy. Permintaan POST harus berisi file .zip di isi pesan. Kredensial penyebaran untuk aplikasi Anda disediakan dalam permintaan dengan menggunakan autentikasi HTTP BASIC. Untuk informasi selengkapnya, lihat referensi penyebaran push .zip.

Untuk autentikasi HTTP BASIC, Anda memerlukan kredensial penyebaran App Service Anda. Untuk melihat cara mengatur kredensial penyebaran Anda, lihat Mengatur dan mengatur ulang kredensial tingkat pengguna.

Dengan cURL

Contoh berikut menggunakan alat cURL untuk menyebarkan file .zip. Ganti tempat penampung <deployment_user>, <zip_file_path>, dan <app_name>. Ketika diminta oleh cURL, masukkan kata sandi.

curl -X POST -u <deployment_user> --data-binary "@<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

Permintaan ini memicu penyebaran push dari file .zip yang diunggah. Anda dapat meninjau penyebaran saat ini dan sebelumnya dengan menggunakan titik akhir https://<app_name>.scm.azurewebsites.net/api/deployments, seperti yang ditunjukkan pada contoh cURL berikut. Sekali lagi, ganti <app_name> dengan nama aplikasi Anda dan <deployment_user> dengan nama pengguna kredensial penyebaran Anda.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Penyebaran zip asinkron

Saat menyebarkan secara sinkron, Anda mungkin menerima kesalahan yang terkait dengan waktu koneksi habis. Tambahkan ?isAsync=true ke URL untuk menyebarkan secara asinkron. Anda akan segera menerima respons setelah file zip diunggah dengan header Location yang menunjuk ke URL status penyebaran yang dapat dijajaki. Saat polling URL tersedia di header Location, Anda akan menerima respons HTTP 202 (Diterima) saat proses sedang berlangsung dan respons HTTP 200 (OK) setelah arsip diperluas dan penyebaran telah berhasil diselesaikan.

Autentikasi Microsoft Entra

Alternatif untuk menggunakan autentikasi HTTP BASIC untuk penyebaran zip adalah dengan menggunakan identitas Microsoft Entra. Identitas Microsoft Entra mungkin diperlukan jika autentikasi HTTP BASIC dinonaktifkan untuk situs SCM.

Token akses Microsoft Entra yang valid untuk pengguna atau perwakilan layanan yang melakukan penyebaran akan diperlukan. Token akses dapat diambil menggunakan perintah Azure CLI az account get-access-token. Token akses akan digunakan di header Autentikasi permintaan HTTP POST.

curl -X POST \
    --data-binary "@<zip_file_path>" \
    -H "Authorization: Bearer <access_token>" \
    "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"

Dengan PowerShell

Contoh berikut menggunakan Publish-AzWebapp untuk mengunggah file .zip. Ganti tempat penampung <group-name>, <app-name>, dan <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

Permintaan ini memicu penyebaran push dari file .zip yang diunggah.

Untuk meninjau penyebaran saat ini dan sebelumnya, jalankan perintah berikut. Sekali lagi, ganti tempat penampung <deployment-user>, <deployment-password>, dan <app-name>.

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Menyebarkan dengan menggunakan Templat ARM

Anda dapat menggunakan ekstensi templat ZipDeploy ARM untuk mendorong file .zip ke aplikasi fungsi Anda.

Contoh Templat ARM ZipDeploy

Templat ini mencakup slot produksi dan penahapan dan disebarkan ke satu atau yang lain. Biasanya, Anda akan menggunakan templat ini untuk menyebarkan ke slot penahapan dan kemudian menukar untuk menjalankan paket zip baru Anda di slot produksi.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceName": {
      "type": "string"
    },
    "deployToProduction": {
      "type": "bool",
      "defaultValue": false
    },
    "slot": {
      "type": "string",
      "defaultValue": "staging"
    },
    "packageUri": {
      "type": "secureString"
    }
  },
  "resources": [
    {
      "condition": "[parameters('deployToProduction')]",
      "type": "Microsoft.Web/sites/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/ZipDeploy', parameters('appServiceName'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    },
    {
      "condition": "[not(parameters('deployToProduction'))]",
      "type": "Microsoft.Web/sites/slots/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/{1}/ZipDeploy', parameters('appServiceName'), parameters('slot'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    }
  ]
}

Untuk penyebaran awal, Anda akan menyebarkan langsung ke slot produksi. Untuk informasi selengkapnya, lihat Penyebaran slot.

Menjalankan fungsi dari paket penerapan

Anda juga dapat memilih untuk menjalankan fungsi secara langsung dari file paket penerapan. Metode ini melompati langkah penerapan menyalin file dari paket ke direktori wwwroot aplikasi fungsi Anda. Sebagai gantinya, file paket dipasang oleh runtime Functions dan konten direktori wwwroot menjadi baca-saja.

Penerapan Zip terintegrasi dengan fitur ini, yang dapat Anda aktifkan dengan mengeset pengaturan aplikasi fungsi WEBSITE_RUN_FROM_PACKAGE ke nilai 1. Untuk informasi selengkapnya, lihat Menjalankan fungsi Anda dari file paket penerapan.

Kustomisasi penyebaran

Proses penyebaran mengasumsikan bahwa .zip file yang Anda dorong berisi aplikasi siap dijalankan. Secara default, tidak ada kustomisasi yang dijalankan. Untuk mengaktifkan proses build yang sama dengan integrasi berkelanjutan, tambahkan yang berikut ini ke pengaturan aplikasi Anda:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

Saat Anda menggunakan .zip mendorong, pengaturan ini false secara default. Defaultnya adalah true untuk penyebaran integrasi berkelanjutan. Saat diatur ke true, pengaturan terkait penyebaran Anda digunakan selama penyebaran. Anda dapat mengonfigurasi pengaturan ini baik sebagai pengaturan aplikasi atau dalam file konfigurasi .deployment yang terletak di akar file .zip Anda. Untuk informasi selengkapnya, lihat Pengaturan terkait repositori dan penyebaran dalam referensi penyebaran.

Unduh file aplikasi fungsi Anda

Jika Anda membuat fungsi menggunakan editor di portal Microsoft Azure, Anda dapat mengunduh proyek aplikasi fungsi yang ada sebagai file .zip dengan salah satu cara berikut:

  • Dari portal Microsoft Azure:

    1. Masuk ke portal Microsoft Azure, lalu buka aplikasi fungsi Anda.

    2. Pada tab Gambaran Umum, pilih Unduh konten aplikasi. Pilih opsi pengunduhan Anda, lalu pilih Unduh.

      Unduh proyek aplikasi fungsi

      File .zip yang diunduh memiliki format yang benar untuk diterbitkan ulang ke aplikasi fungsi Anda dengan menggunakan penerapan push .zip. Pengunduhan portal juga dapat menambahkan file yang diperlukan untuk membuka aplikasi fungsi Anda secara langsung di Visual Studio.

  • Menggunakan REST API:

    Gunakan API GET penerapan berikut untuk mengunduh file dari proyek <function_app> Anda:

    https://<function_app>.scm.azurewebsites.net/api/zip/site/wwwroot/
    

    Menyertakan /site/wwwroot/ memastikan file zip Anda hanya menyertakan file proyek aplikasi fungsi dan bukan seluruh situs. Jika belum masuk ke Azure, Anda akan diminta untuk melakukannya.

Anda juga dapat mengunduh file .zip dari repositori GitHub. Saat Anda mengunduh repositori GitHub sebagai file .zip, GitHub menambahkan tingkat folder tambahan untuk cabang. Tingkat folder tambahan ini berarti Anda tidak dapat menerapkan file .zip secara langsung saat Anda mengunduhnya dari GitHub. Jika Anda menggunakan repositori GitHub untuk memelihara aplikasi fungsi, Anda harus menggunakan integrasi berkelanjutan untuk menerapkan aplikasi Anda.

Langkah berikutnya