Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk mengotomatiskan penyebaran aplikasi fungsi Anda, gunakan file Bicep atau templat Azure Resource Manager (templat ARM). Selama penyebaran, Anda dapat menggunakan sumber daya Azure yang sudah ada atau membuat sumber daya baru.
Dengan menggunakan otomatisasi penyebaran, infrastruktur sebagai kode (IaC) dan integrasi dan penyebaran berkelanjutan (CI/CD), Anda dapat membawa manfaat ini ke aplikasi produksi Anda:
- Konsistensi: Tentukan infrastruktur Anda dalam kode untuk memastikan penyebaran yang konsisten di seluruh lingkungan.
- Kontrol Versi: Lacak perubahan pada infrastruktur dan konfigurasi aplikasi Anda di kontrol sumber, bersama dengan kode proyek Anda.
- Otomatisasi: Mengotomatiskan penyebaran, yang mengurangi kesalahan manual dan mempersingkat proses rilis.
- Skalabilitas: Mereplikasi infrastruktur dengan mudah untuk beberapa lingkungan, seperti pengembangan, pengujian, dan produksi.
- Pemulihan Bencana: Membuat ulang infrastruktur dengan cepat setelah kegagalan atau selama migrasi.
Artikel ini memperlihatkan kepada Anda cara mengotomatiskan pembuatan sumber daya Azure dan konfigurasi penyebaran untuk Azure Functions. Untuk mempelajari selengkapnya tentang penyebaran berkelanjutan kode proyek Anda, lihat Sebaran berkelanjutan untuk Azure Functions.
Kode templat untuk membuat sumber daya Azure yang diperlukan tergantung pada opsi hosting yang diinginkan untuk aplikasi fungsi Anda. Artikel ini mendukung opsi hosting berikut:
| Opsi Hosting | Jenis penyebaran | Contoh templat |
|---|---|---|
| Paket Konsumsi Fleksibel | Code-only |
Bicep template ARM Terraform |
| Paket premium | Kode | Kontainer |
Bicep template ARM |
| Paket khusus | Kode | Kontainer |
Bicep template ARM |
| Azure Container Apps | Container-only | Bicep |
| Paket konsumsi (warisan) | Code-only |
Bicep template ARM |
Untuk aplikasi fungsi tanpa server baru, gunakan paket Konsumsi Flex.
Paket Konsumsi adalah paket hosting warisan. Untuk aplikasi yang ada, migrasikan ke paket Konsumsi Flex.
Pastikan untuk memilih paket hosting Anda di bagian atas artikel.
Important
Aplikasi fungsi yang masih menggunakan runtime v3 yang sudah mencapai akhir masa pakai di Linux dalam rencana Konsumsi akan berhenti beroperasi setelah 30 September 2026. Untuk menghindari gangguan layanan, migrasikan aplikasi Anda ke runtime v4.
Opsi untuk menghosting aplikasi fungsi di Linux dalam paket Konsumsi akan dihentikan pada 30 September 2028. Paket Konsumsi Linux tidak mendapatkan fitur atau versi bahasa baru. Aplikasi yang berjalan di Windows dalam paket Konsumsi saat ini tidak terpengaruh. Migrasikan aplikasi Anda ke paket Konsumsi Flex sebelum tanggal penghentian.
Saat menggunakan artikel ini, ingatlah pertimbangan ini:
Tidak ada cara kanonis untuk menyusun templat ARM.
Anda dapat memodulasi penyebaran Bicep ke dalam beberapa file Bicep dan Modul Terverifikasi Azure (AVM).
Artikel ini mengasumsikan bahwa Anda memiliki pemahaman dasar tentang buat file Bicep atau buat templat Azure Resource Manager.
- Contoh ditampilkan sebagai bagian individual untuk sumber daya tertentu. Untuk Bicep, Modul Terverifikasi Azure (AVM) akan ditampilkan jika tersedia. Untuk serangkaian contoh file Bicep dan templat ARM yang lengkap, lihat contoh penyebaran aplikasi Flex Consumption.
- Contoh ditampilkan sebagai bagian individual untuk sumber daya tertentu.
Sumber daya yang diperlukan
Anda harus membuat atau mengonfigurasi sumber daya ini pada penyebaran yang dihosting oleh Azure Functions.
| Resource | Requirement | Referensi sintaks dan properti |
|---|---|---|
| Akun penyimpanan | Required | Microsoft. Storage/storageAccounts |
| Komponen Application Insights | Recommended | Microsoft. Wawasan/komponen* |
| Paket hosting | Required | Microsoft. Web/serverfarms |
| Aplikasi fungsi | Required | Microsoft.Web/sites |
Anda harus membuat atau mengonfigurasi sumber daya ini pada penyebaran yang dihosting oleh Azure Functions.
| Resource | Requirement | Referensi sintaks dan properti |
|---|---|---|
| Akun penyimpanan | Required | Microsoft. Storage/storageAccounts |
| Komponen Application Insights | Recommended | Microsoft. Wawasan/komponen* |
| Aplikasi fungsi | Required | Microsoft.Web/sites |
Penyebaran yang di-host oleh Azure Container Apps biasanya terdiri dari sumber daya ini:
| Resource | Requirement | Referensi sintaks dan properti |
|---|---|---|
| Akun penyimpanan | Required | Microsoft. Storage/storageAccounts |
| Komponen Application Insights | Recommended | Microsoft. Wawasan/komponen* |
| Lingkungan terkelola | Required | Microsoft.App/managedEnvironments |
| Aplikasi fungsi | Required | Microsoft.Web/sites |
*Jika Anda belum memiliki Ruang Kerja Analitik Log yang dapat digunakan instans Application Insights, Anda juga perlu membuat sumber daya ini.
Ketika Anda menyebarkan beberapa sumber daya dalam satu file Bicep atau templat ARM, urutan pembuatan sumber daya sangat penting. Persyaratan ini dihasilkan dari dependensi antar sumber daya. Untuk dependensi tersebut, pastikan untuk menggunakan elemen dependsOn untuk menentukan dependensi dalam sumber daya yang bergantung. Untuk informasi selengkapnya, lihat Menentukan urutan untuk menyebarkan sumber daya dalam templat ARM atau dependensi sumber daya di Bicep.
Prerequisites
- Contoh-contoh ini berfungsi dalam konteks grup sumber daya yang ada.
- Application Insights dan log penyimpanan memerlukan ruang kerja Azure Log Analytics yang sudah ada. Anda dapat berbagi ruang kerja antar layanan. Untuk meningkatkan performa, buat ruang kerja di setiap wilayah geografis. Untuk contoh cara membuat ruang kerja Log Analytics, lihat Buat ruang kerja Log Analytics. Anda dapat menemukan ID sumber daya ruang kerja yang sepenuhnya memenuhi syarat di halaman ruang kerja di portal Microsoft Azure di bawah PENGATURAN>ID Sumber Daya>.
- Artikel ini mengasumsikan bahwa Anda sudah membuat lingkungan terkelola di Azure Container Apps. Anda memerlukan nama dan ID lingkungan terkelola untuk membuat aplikasi fungsi yang dihosting di Container Apps.
Membuat akun penyimpanan
Semua aplikasi fungsi memerlukan akun penyimpanan Azure. Anda memerlukan akun tujuan umum yang mendukung blob, tabel, antrean, dan file. Untuk informasi selengkapnya, lihat persyaratan akun penyimpanan Azure Functions.
Important
Akun penyimpanan digunakan untuk menyimpan data aplikasi penting, terkadang termasuk kode aplikasi itu sendiri. Anda harus membatasi akses dari aplikasi dan pengguna lain ke akun penyimpanan.
Bagian contoh berikut membuat akun penyimpanan Standar tujuan umum v2:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
properties: {
supportsHttpsTrafficOnly: true
defaultToOAuthAuthentication: true
allowBlobPublicAccess: false
minimumTlsVersion: 'TLS1_2'
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Untuk konteks selengkapnya, lihat file storage-PrivateEndpoint.bicep lengkap di repositori sampel.
Aplikasi fungsi memerlukan koneksi ke akun penyimpanan ini. Konfigurasikan koneksi ini dengan menggunakan pengaturan AzureWebJobsStorage. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
Tip
Untuk keamanan yang lebih baik, tambahkan allowSharedKeyAccess: false ke properti akun penyimpanan Anda dan gunakan koneksi berbasis identitas terkelola alih-alih string koneksi. Contoh rencana Konsumsi Fleksibel dalam artikel ini menggunakan pendekatan ini, termasuk AzureWebJobsStorage__* pengaturan berbasis identitas dan identitas yang dikelola yang ditetapkan oleh sistem. Untuk informasi lebih lengkap, lihat Menyambung ke penyimpanan host dengan identitas.
Tip
Untuk keamanan yang lebih baik, atur allowSharedKeyAccess ke false pada akun penyimpanan Anda dan gunakan koneksi berbasis identitas terkelola alih-alih string koneksi. Untuk informasi lebih lengkap, lihat Menyambung ke penyimpanan host dengan identitas.
Important
Paket Elastic Premium dan Consumption menggunakan Azure Files untuk berbagi konten, dan Azure Files saat ini tidak mendukung koneksi berbasis identitas terkelola. Batasan ini berarti paket ini memerlukan akses kunci bersama ke akun penyimpanan, jadi jangan atur allowSharedKeyAccess ke false. Saat Anda harus menggunakan string koneksi, simpan di Azure Key Vault dan gunakan referensi Key Vault di pengaturan aplikasi Anda alih-alih menyimpan kunci secara langsung. Jika Anda ingin menghapus dependensi Azure Files, lihat Membuat aplikasi tanpa Azure Files.
Kontainer penyebaran
Untuk menyebarkan ke aplikasi yang berjalan dalam paket Konsumsi Flex, Anda memerlukan kontainer di Azure Blob Storage sebagai sumber penyebaran. Anda dapat menggunakan akun penyimpanan default atau menentukan akun penyimpanan terpisah. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan penyebaran.
Anda harus mengonfigurasi akun penyebaran ini saat membuat aplikasi, termasuk kontainer tertentu yang digunakan untuk penyebaran. Untuk mempelajari selengkapnya tentang mengonfigurasi penyebaran, lihat Sumber penyebaran.
Contoh ini menunjukkan cara membuat kontainer di akun penyimpanan:
}
// Azure Functions Flex Consumption
module functionApp 'br/public:avm/res/web/site:0.16.0' = {
name: 'functionapp'
scope: rg
params: {
kind: 'functionapp,linux'
name: functionAppName_resolved
location: location
tags: union(tags, { 'azd-service-name': 'api' })
serverFarmResourceId: appServicePlan.outputs.resourceId
managedIdentities: {
systemAssigned: true
}
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.outputs.primaryBlobEndpoint}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
Contoh ini menunjukkan cara menggunakan AVM untuk akun penyimpanan untuk membuat kontainer penyimpanan blob bersama dengan akun penyimpanan. Untuk cuplikan ini dalam konteks, lihat contoh penyebaran ini.
Konfigurasikan pengaturan penyebaran lain dengan aplikasi itu sendiri.
Mengaktifkan log penyimpanan
Karena akun penyimpanan digunakan untuk data aplikasi fungsi penting, pantau akun untuk modifikasi konten tersebut. Untuk memantau akun penyimpanan Anda, konfigurasikan log sumber daya Azure Monitor untuk Azure Storage. Di bagian contoh ini, ruang kerja Log Analytics bernama myLogAnalytics digunakan sebagai tujuan untuk log ini.
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2023-05-01' existing = {
name:'default'
parent:storageAccountName
}
resource storageDataPlaneLogs 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: '${storageAccountName}-logs'
scope: blobService
properties: {
workspaceId: myLogAnalytics.id
logs: [
{
category: 'StorageWrite'
enabled: true
}
]
metrics: [
{
category: 'Transaction'
enabled: true
}
]
}
}
Anda dapat menggunakan ruang kerja yang sama untuk sumber daya Application Insights yang ditentukan nanti. Untuk informasi selengkapnya, termasuk cara bekerja dengan log ini, lihat Monitoring Azure Storage.
Membuat Application Insights
Gunakan Application Insights untuk memantau eksekusi aplikasi fungsi Anda. Application Insights sekarang memerlukan ruang kerja Azure Log Analytics, yang dapat dibagikan. Contoh-contoh ini mengasumsikan Anda menggunakan ruang kerja yang ada dan memiliki ID sumber daya yang sepenuhnya memenuhi syarat untuk ruang kerja. Untuk informasi selengkapnya, lihat ruang kerja Azure Log Analytics.
Di bagian contoh ini, tentukan sumber daya Application Insights dengan jenis Microsoft.Insights/components dan jenisnya web:
resource applicationInsight 'Microsoft.Insights/components@2020-02-02' = {
name: applicationInsightsName
location: appInsightsLocation
tags: tags
kind: 'web'
properties: {
Application_Type: 'web'
WorkspaceResourceId: '<FULLY_QUALIFIED_RESOURCE_ID>'
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Anda harus menyediakan koneksi ke aplikasi fungsi dengan menggunakan APPLICATIONINSIGHTS_CONNECTION_STRING pengaturan aplikasi. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
Contoh-contoh dalam artikel ini mendapatkan nilai string koneksi untuk instans yang dibuat. Versi yang lebih lama mungkin menggunakan APPINSIGHTS_INSTRUMENTATIONKEY untuk menetapkan kunci instrumentasi, yang tidak lagi direkomendasikan.
Membuat paket hosting
Anda harus secara eksplisit menentukan paket hosting untuk aplikasi yang dihosting dalam paket Konsumsi Azure Functions Flex, paket Premium, atau paket Khusus (App Service).
Paket Pemakaian Fleksibel adalah paket hosting berbasis Linux yang dibangun berdasarkan model penagihan serverless bayar sesuai pemakaian. Fitur paket mendukung jaringan privat, pemilihan ukuran memori instans, dan dukungan identitas terkelola yang ditingkatkan.
Paket Konsumsi Flex adalah jenis serverfarm sumber daya khusus. Anda dapat menentukannya dengan menggunakan FC1 untuk nilai pada properti Name dalam properti sku dengan nilai tier sebesar FlexConsumption.
Bagian contoh ini membuat paket Konsumsi Flex:
scaleAndConcurrency: {
maximumInstanceCount: maximumInstanceCount
instanceMemoryMB: instanceMemoryMB
}
runtime: {
name: functionAppRuntime
version: functionAppRuntimeVersion
}
}
siteConfig: {
alwaysOn: false
}
configs: [{
name: 'appsettings'
properties:{
Contoh ini menggunakan AVM untuk paket App Service. Untuk cuplikan ini dalam konteks, lihat contoh penyebaran ini.
Karena saat ini paket Flex Consumption hanya mendukung Linux, Anda juga harus mengatur properti reserved ke true.
Paket Premium menawarkan penskalaan yang sama dengan paket Konsumsi tetapi mencakup sumber daya khusus dan kemampuan ekstra. Untuk mempelajari selengkapnya, lihat Azure Functions Paket Premium.
Paket Premium adalah jenis khusus sumber daya serverfarm. Anda dapat menentukannya dengan menggunakan EP1, EP2, atau EP3 untuk nilai properti Name di dalam properti sku. Cara Anda menentukan paket hosting Functions bergantung pada apakah aplikasi fungsi Anda berjalan di Windows atau di Linux. Bagian contoh ini membuat EP1 rencana:
resource hostingPlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
name: 'EP1'
tier: 'ElasticPremium'
family: 'EP'
}
kind: 'elastic'
properties: {
maximumElasticWorkerCount: 20
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Untuk informasi selengkapnya tentang objek, sku lihat SkuDefinition atau tinjau contoh templat.
Dalam paket Khusus (App Service), aplikasi fungsi Anda berjalan pada komputer virtual khusus pada SKU Dasar, Standar, dan Premium dalam paket App Service, mirip dengan aplikasi web. Untuk informasi selengkapnya, lihat Paket khusus.
Untuk contoh templat file/Azure Resource Manager Bicep sampel, lihat aplikasi Function pada paket Azure App Service.
Dalam Functions, paket Khusus hanyalah paket App Service reguler, yang ditentukan oleh sumber daya serverfarm. Anda harus memberikan setidaknya nilainya name . Untuk daftar nama paket yang didukung, lihat pengaturan di --skuaz appservice plan create untuk daftar nilai yang didukung saat ini pada paket Dedicated.
Cara Anda menentukan paket hosting tergantung pada apakah aplikasi fungsi Anda berjalan di Windows atau di Linux:
resource hostingPlanName 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
tier: 'Standard'
name: 'S1'
size: 'S1'
family: 'S'
capacity: 1
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Membuat paket hosting
Anda tidak perlu secara eksplisit menentukan sumber daya paket hosting Konsumsi. Saat Anda mengabaikan definisi sumber daya ini, portal secara otomatis membuat atau memilih paket per wilayah saat Anda membuat sumber daya aplikasi fungsi tersebut.
Anda dapat secara eksplisit menentukan paket Konsumsi sebagai jenis serverfarm sumber daya khusus. Atur properti computeMode dan sku ke Dynamic. Bagian contoh ini menunjukkan kepada Anda cara menentukan paket konsumsi secara eksplisit. Cara Anda menentukan paket hosting bergantung pada apakah aplikasi fungsi Anda berjalan di Windows atau di Linux.
resource hostingPlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
size: 'Y1'
family: 'Y'
capacity: 0
}
properties: {
computeMode: 'Dynamic'
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Buat aplikasi fungsi
Tentukan sumber daya aplikasi fungsi sebagai sumber daya jenis Microsoft.Web/sites dengan properti kind yang menyertakan functionapp.
Cara Anda menentukan sumber daya aplikasi fungsi bergantung pada apakah Anda menghosting di Linux atau di Windows:
Untuk daftar pengaturan aplikasi yang diperlukan saat berjalan di Windows, lihat konfigurasi Aplikasi. Untuk contoh file Bicep atau templat Azure Resource Manager, lihat templat aplikasi fungsi yang dihosting di Windows dengan rencana Konsumsi.
Konsumsi Flex menggantikan banyak pengaturan aplikasi standar dan properti konfigurasi situs yang digunakan dalam penyebaran templat Bicep dan ARM. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
AzureWebJobsStorage__blobServiceUri: 'https://${storage.outputs.name}.blob.${environment().suffixes.storage}'
AzureWebJobsStorage__queueServiceUri: 'https://${storage.outputs.name}.queue.${environment().suffixes.storage}'
AzureWebJobsStorage__tableServiceUri: 'https://${storage.outputs.name}.table.${environment().suffixes.storage}'
// Application Insights settings are always included
APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.outputs.connectionString
APPLICATIONINSIGHTS_AUTHENTICATION_STRING: 'Authorization=AAD'
}
}]
}
}
// Consolidated Role Assignments
module rbacAssignments 'rbac.bicep' = {
name: 'rbacAssignments'
scope: rg
params: {
storageAccountName: storage.outputs.name
appInsightsName: applicationInsights.outputs.name
managedIdentityPrincipalId: functionApp.outputs.?systemAssignedMIPrincipalId ?? ''
userIdentityPrincipalId: principalId
allowUserIdentityPrincipal: !empty(principalId)
}
}
// Outputs
output AZURE_LOCATION string = location
output AZURE_TENANT_ID string = tenant().tenantId
output AZURE_FUNCTION_NAME string = functionApp.outputs.name
output APPLICATIONINSIGHTS_CONNECTION_STRING string = applicationInsights.outputs.connectionString
Contoh ini menggunakan AVM untuk aplikasi fungsi. Untuk cuplikan ini dalam konteks, lihat contoh penyebaran ini.
Note
Jika Anda memilih untuk menentukan paket Konsumsi secara opsional, Anda harus mengatur serverFarmId properti pada aplikasi sehingga menunjuk ke ID sumber daya paket. Pastikan bahwa aplikasi fungsi memiliki sebuah pengaturan dependsOn yang juga merujuk kepada paket tersebut. Jika Anda tidak secara eksplisit menentukan paket, paket akan dibuat untuk Anda.
Atur serverFarmId properti pada aplikasi sehingga menunjuk ke ID sumber daya paket. Pastikan bahwa aplikasi fungsi memiliki sebuah pengaturan dependsOn yang juga merujuk kepada paket tersebut.
resource functionAppName_resource 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlanName.id
siteConfig: {
appSettings: [
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTSHARE'
value: toLower(functionAppName)
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
]
}
}
}
Untuk contoh menyeluruh lengkap, lihat file main.bicep ini.
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
alwaysOn: true
appSettings: [
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
]
}
}
}
Untuk contoh menyeluruh lengkap, lihat file main.bicep ini.
Sumber penyebaran
linuxFxVersion Gunakan pengaturan situs untuk meminta kontainer Linux tertentu untuk disebarkan ke aplikasi Anda saat Anda membuatnya. Untuk mengakses gambar di repositori privat, Anda memerlukan lebih banyak pengaturan. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
Important
Saat membuat kontainer sendiri, Anda diharuskan untuk menjaga gambar dasar kontainer Anda diperbarui ke gambar dasar terbaru yang didukung. Gambar dasar yang didukung untuk Azure Functions bersifat khusus bahasa. Lihat repositori gambar dasar Azure Functions.
Tim Functions berkomitmen untuk menerbitkan pembaruan bulanan untuk gambar dasar ini. Pembaruan rutin mencakup pembaruan versi minor terbaru dan perbaikan keamanan untuk fungsi runtime dan bahasa pemrograman. Anda harus memperbarui kontainer Anda secara teratur dari gambar dasar terbaru dan menyebarkan ulang versi kontainer Anda yang diperbarui. Untuk informasi selengkapnya, lihat Memelihara kontainer kustom.
File Bicep atau templat ARM Anda dapat secara opsional juga menentukan penyebaran untuk kode fungsi Anda. Penyebaran ini dapat mencakup metode ini:
Paket Konsumsi Flex mempertahankan kode proyek Anda dalam file paket terkompresi zip dalam kontainer penyimpanan blob yang dikenal sebagai kontainer penyebaran. Anda dapat mengonfigurasi akun penyimpanan dan kontainer yang digunakan untuk penyebaran. Untuk informasi selengkapnya, lihat Penyebaran.
Anda harus menggunakan satu kali penerapan untuk menerbitkan paket kode Anda ke wadah penerapan. Selama templat ARM atau penyebaran Bicep, Anda dapat melakukan langkah ini dengan menentukan sumber paket yang menggunakan ekstensi /onedeploy. Jika Anda memilih untuk langsung mengunggah paket Anda ke kontainer, paket tidak disebarkan secara otomatis.
Kontainer penyebaran
Atur akun penyimpanan dan kontainer tertentu yang digunakan untuk penyebaran, metode autentikasi, dan kredensial dalam functionAppConfig.deployment.storage elemen properties untuk situs. Kontainer dan pengaturan aplikasi apa pun harus ada saat Anda membuat aplikasi. Untuk contoh cara membuat kontainer penyimpanan, lihat Kontainer penyebaran.
Contoh ini menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses kontainer penyimpanan blob yang ditentukan, yang dibuat di tempat lain dalam penyebaran:
// Consolidated Role Assignments
module rbacAssignments 'rbac.bicep' = {
name: 'rbacAssignments'
scope: rg
params: {
storageAccountName: storage.outputs.name
appInsightsName: applicationInsights.outputs.name
managedIdentityPrincipalId: functionApp.outputs.?systemAssignedMIPrincipalId ?? ''
userIdentityPrincipalId: principalId
allowUserIdentityPrincipal: !empty(principalId)
}
}
// Outputs
output AZURE_LOCATION string = location
output AZURE_TENANT_ID string = tenant().tenantId
output AZURE_FUNCTION_NAME string = functionApp.outputs.name
output APPLICATIONINSIGHTS_CONNECTION_STRING string = applicationInsights.outputs.connectionString
Contoh ini menggunakan AVM untuk aplikasi fungsi. Untuk cuplikan ini dalam konteks, lihat contoh penyebaran ini.
Saat menggunakan identitas terkelola, Anda juga harus mengaktifkan aplikasi fungsi untuk mengakses akun penyimpanan dengan menggunakan identitas, seperti yang ditunjukkan dalam contoh ini:
module storageRoleAssignment_User 'br/public:avm/ptn/authorization/resource-role-assignment:0.1.2' = if (allowUserIdentityPrincipal && !empty(userIdentityPrincipalId)) {
name: 'storageRoleAssignment-User-${uniqueString(storageAccount.id, userIdentityPrincipalId)}'
params: {
resourceId: storageAccount.id
roleDefinitionId: roleDefinitions.storageBlobDataOwner
principalId: userIdentityPrincipalId
principalType: 'User'
description: 'Storage Blob Data Owner role for user identity (development/testing)'
roleName: 'Storage Blob Data Owner'
}
}
Contoh ini menggunakan AVM untuk penetapan peran yang terbatas pada sumber daya. Untuk cuplikan ini dalam konteks, lihat contoh penyebaran ini.
Contoh ini mengharuskan Anda mengetahui nilai GUID untuk peran yang Anda tetapkan. Untuk mendapatkan nilai ID ini untuk nama peran yang ramah, gunakan perintah az role definition list , seperti yang ditunjukkan dalam contoh ini:
az role definition list --output tsv --query "[?roleName=='Storage Blob Data Owner'].{name:name}"
Saat Anda menggunakan string koneksi alih-alih identitas terkelola, atur authentication.type ke StorageAccountConnectionString dan atur authentication.storageAccountConnectionStringName ke nama pengaturan aplikasi yang berisi string koneksi akun penyimpanan penyebaran.
Paket implementasi
Paket Konsumsi Flex menggunakan satu deploy untuk menyebarkan proyek kode Anda. Paket kode itu sendiri sama dengan paket yang Anda gunakan untuk penyebaran zip dalam paket hosting Functions lainnya. Namun, nama file paket harus released-package.zip.
Untuk menyertakan satu paket penyebaran dalam templat Anda, gunakan /onedeploy definisi sumber daya untuk URL jarak jauh yang berisi paket penyebaran. Host Fungsi harus dapat mengakses sumber paket jarak jauh ini dan wadah penyebaran.
Contoh ini menambahkan satu sumber penyebaran ke aplikasi yang sudah ada:
@description('The name of the function app.')
param functionAppName string
@description('The location into which the resources should be deployed.')
param location string = resourceGroup().location
@description('The zip content URL for released-package.zip.')
param packageUri string
resource functionAppName_OneDeploy 'Microsoft.Web/sites/extensions@2022-09-01' = {
name: '${functionAppName}/onedeploy'
location: location
properties: {
packageUri: packageUri
remoteBuild: false
}
}
File Bicep atau templat ARM Anda secara opsional juga dapat menentukan penyebaran untuk kode fungsi Anda dengan menggunakan paket penyebaran zip.
Agar berhasil menyebarkan aplikasi Anda dengan menggunakan Azure Resource Manager, Anda perlu memahami bagaimana sumber daya disebarkan di Azure. Dalam kebanyakan contoh, Anda menerapkan konfigurasi tingkat atas dengan menggunakan siteConfig. Atur konfigurasi ini pada level tertinggi, karena mereka menyampaikan informasi ke runtime Functions dan mesin penyebaran. Mesin penerapan memerlukan informasi tingkat atas sebelum menerapkan sumber daya turunan sourcecontrols/web. Meskipun Anda dapat mengonfigurasi pengaturan ini di tingkat sumber daya config/appSettings anak, dalam beberapa kasus aplikasi fungsi Anda harus dikembangkan sebelumconfig/appSettings diterapkan.
Paket penyebaran Zip
Penyebaran Zip adalah cara yang disarankan untuk menyebarkan kode aplikasi fungsi Anda. Secara default, fungsi yang menggunakan penyebaran zip berjalan dalam paket penyebaran itu sendiri. Untuk informasi selengkapnya, termasuk persyaratan untuk paket penyebaran, lihat penyebaran Zip di Azure Functions. Saat menggunakan otomatisasi penyebaran sumber daya, Anda dapat mereferensikan paket penyebaran .zip di templat Bicep atau ARM Anda.
Untuk menggunakan penyebaran zip di templat Anda, atur WEBSITE_RUN_FROM_PACKAGE pengaturan di aplikasi ke 1 dan sertakan /zipDeploy definisi sumber daya.
Untuk rencana Konsumsi di Linux, sebagai gantinya atur URI paket penyebaran langsung di pengaturan
Contoh ini menambahkan sumber penyebaran zip ke aplikasi yang ada:
@description('The name of the function app.')
param functionAppName string
@description('The location into which the resources should be deployed.')
param location string = resourceGroup().location
@description('The zip content url.')
param packageUri string
resource functionAppName_ZipDeploy 'Microsoft.Web/sites/extensions@2024-04-01' = {
name: '${functionAppName}/ZipDeploy'
location: location
properties: {
packageUri: packageUri
}
}
Ingatlah pertimbangan berikut saat menyertakan sumber daya penyebaran zip di templat Anda:
- Rencana konsumsi di Linux tidak mendukung
WEBSITE_RUN_FROM_PACKAGE = 1. Anda harus menetapkan URI paket penerapan langsung pada pengaturanWEBSITE_RUN_FROM_PACKAGE. Untuk informasi selengkapnya, lihat WEBSITE_RUN_FROM_PACKAGE. Untuk contoh templat, lihat aplikasi Function yang dihosting di Linux dalam paket Konsumsi.
packageUriharus merupakan lokasi yang dapat diakses Functions. Pertimbangkan untuk menggunakan penyimpanan Azure Blob dengan tanda tangan akses bersama (SAS). Setelah SAS kedaluwarsa, Functions tidak dapat lagi mengakses saham untuk penyebaran. Saat Anda meregenerasi SAS Anda, jangan lupa untuk memperbarui pengaturan dengan nilai URI yang baru.Saat mengatur
WEBSITE_RUN_FROM_PACKAGEke URI, Anda harus menyinkronkan pemicu secara manual.Selalu atur semua pengaturan aplikasi yang diperlukan dalam koleksi
appSettingssaat menambahkan atau memperbarui pengaturan. Pembaruan menghapus pengaturan yang sudah ada yang tidak Anda tetapkan secara eksplisit. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.Functions tidak mendukung Web Deploy (
msdeploy) untuk penyebaran paket. Anda harus menggunakan penyebaran zip dalam alur penyebaran dan otomatisasi Anda. Untuk informasi selengkapnya, lihat penyebaran Zip untuk Azure Functions.
Pembangunan jarak jauh
Proses penyebaran mengasumsikan bahwa file .zip yang Anda gunakan atau penyebaran zip berisi aplikasi yang siap dijalankan. Asumsi ini berarti bahwa secara default tidak ada penyesuaian yang dijalankan.
Beberapa skenario mengharuskan Anda membangun kembali aplikasi dari jarak jauh. Salah satu contohnya adalah ketika Anda perlu menyertakan paket khusus Linux dalam aplikasi Python atau Node.js yang Anda kembangkan di komputer Windows. Dalam hal ini, Anda dapat mengonfigurasi Functions untuk melakukan build jarak jauh pada kode Anda setelah penyebaran zip.
Cara Anda meminta build jarak jauh bergantung pada sistem operasi yang Anda sebarkan:
Saat Anda menyebarkan aplikasi ke Windows, proses penyebaran menjalankan perintah khusus bahasa, seperti dotnet restore untuk aplikasi C# atau npm install untuk aplikasi Node.js.
Untuk mengaktifkan proses build yang sama dengan integrasi berkelanjutan, tambahkan SCM_DO_BUILD_DURING_DEPLOYMENT=true ke pengaturan aplikasi Anda dalam kode penyebaran Anda dan hapus WEBSITE_RUN_FROM_PACKAGE pengaturan sepenuhnya.
Kontainer Linux
Jika Anda menyebarkan aplikasi fungsi terkonteinerisasi ke rencana Premium atau Khusus Azure Functions, Anda harus:
- Atur
linuxFxVersionpengaturan situs web dengan pengidentifikasi gambar kontainer Anda. - Atur pengaturan yang diperlukan
DOCKER_REGISTRY_SERVER_*saat mendapatkan kontainer dari registri privat. - Atur
WEBSITES_ENABLE_APP_SERVICE_STORAGEpengaturan aplikasi kefalse.
Jika beberapa pengaturan hilang, provisi aplikasi mungkin gagal dengan kesalahan HTTP/500 ini:
Function app provisioning failed.
Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
appSettings: [
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'DOCKER_REGISTRY_SERVER_URL'
value: dockerRegistryUrl
}
{
name: 'DOCKER_REGISTRY_SERVER_USERNAME'
value: dockerRegistryUsername
}
{
name: 'DOCKER_REGISTRY_SERVER_PASSWORD'
value: dockerRegistryPassword
}
{
name: 'WEBSITES_ENABLE_APP_SERVICE_STORAGE'
value: 'false'
}
]
linuxFxVersion: 'DOCKER|myacr.azurecr.io/myimage:mytag'
}
}
dependsOn: [
storageAccount
]
}
Saat menyebarkan fungsi kontainerisasi ke Azure Container Apps, templat Anda harus:
- Atur
kindbidang ke nilaifunctionapp,linux,container,azurecontainerapps. - Atur properti situs
managedEnvironmentIdke URI yang terdefinisi sepenuhnya dari lingkungan Aplikasi Container. - Tambahkan tautan sumber daya di kumpulan
dependsOnsitus saat membuat sumber dayaMicrosoft.App/managedEnvironmentssecara bersamaan dengan situs.
Definisi aplikasi fungsi kontainer yang disebarkan dari registri kontainer privat ke lingkungan Container Apps yang ada mungkin terlihat seperti contoh ini:
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
kind: 'functionapp,linux,container,azurecontainerapps'
location: location
properties: {
serverFarmId: hostingPlanName
siteConfig: {
linuxFxVersion: 'DOCKER|myacr.azurecr.io/myimage:mytag'
appSettings: [
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
]
}
managedEnvironmentId: managedEnvironmentId
}
dependsOn: [
storageAccount
hostingPlan
]
}
Konfigurasi aplikasi
Dalam paket Konsumsi Flex, Anda mengonfigurasi aplikasi fungsi di Azure dengan dua jenis properti:
| Configuration | properti Microsoft.Web/sites |
|---|---|
| Konfigurasi aplikasi | functionAppConfig |
| Pengaturan aplikasi |
siteConfig.appSettings koleksi |
Anda mempertahankan konfigurasi aplikasi ini di functionAppConfig:
| Behavior | Pengaturan di functionAppConfig |
|---|---|
| Instans yang selalu siap | scaleAndConcurrency.alwaysReady |
| Sumber penyebaran | deployment |
| Ukuran instans | scaleAndConcurrency.instanceMemoryMB |
| Konkurensi pemicu HTTP | scaleAndConcurrency.triggers.http.perInstanceConcurrency |
| Runtime bahasa pemrograman | runtime.name |
| Versi bahasa | runtime.version |
| Jumlah instans maksimum | scaleAndConcurrency.maximumInstanceCount |
| Strategi pembaruan situs | siteUpdateStrategy.type |
Paket Konsumsi Flex juga mendukung pengaturan aplikasi ini:
- Pengaturan berdasarkan connection string:
- Pengaturan berbasis identitas terkelola:
Functions menyediakan opsi berikut untuk mengonfigurasi aplikasi fungsi Anda di Azure:
| Configuration | properti Microsoft.Web/sites |
|---|---|
| Pengaturan situs | siteConfig |
| Pengaturan aplikasi |
siteConfig.appSettings koleksi |
Pengaturan situs ini diperlukan pada siteConfig properti:
Pengaturan situs ini hanya diperlukan saat menggunakan identitas terkelola untuk mendapatkan gambar dari instans Azure Container Registry:
Pengaturan aplikasi ini diperlukan (atau disarankan) untuk sistem operasi dan opsi hosting tertentu:
Pengaturan aplikasi ini diperlukan untuk penyebaran kontainer:
Pengaturan ini hanya diperlukan saat menyebarkan dari registri kontainer privat:
Ingatlah pertimbangan ini saat bekerja dengan pengaturan situs dan aplikasi menggunakan file Bicep atau templat ARM:
- Pengaturan opsional
alwaysReadyberisi array dari satu atau lebih{name,instanceCount}objek, dengan satu untuk setiap kelompok penskalaan per fungsi . Grup skala ini membuat keputusan skala yang selalu siap diambil. Contoh ini menetapkan jumlah yang selalu siap untukhttpgrup dan satu fungsi bernamahelloworld, yang merupakan jenis pemicu yang tidak dikelompokkan:
- Pertimbangkan kapan untuk mengatur
WEBSITE_CONTENTSHAREdalam penyebaran otomatis. Untuk panduan terperinci, lihat referensinyaWEBSITE_CONTENTSHARE.
- Untuk penyebaran kontainer, atur
WEBSITES_ENABLE_APP_SERVICE_STORAGEjuga kefalse, karena konten aplikasi Anda disediakan dalam kontainer itu sendiri.
Selalu tentukan pengaturan aplikasi Anda sebagai kumpulan dari sumber daya yang sedang Anda buat, seperti yang ditunjukkan dalam contoh-contoh di artikel ini. Definisi ini menjamin pengaturan yang perlu dijalankan aplikasi fungsi Anda tersedia pada startup awal.
Saat menambahkan atau memperbarui pengaturan aplikasi dengan menggunakan templat, pastikan Anda menyertakan semua pengaturan yang ada dengan pembaruan. Anda harus melakukan ini karena panggilan REST API pembaruan berbasis dasar menggantikan seluruh sumber daya
/config/appsettings. Jika Anda menghapus pengaturan yang ada, aplikasi fungsi Anda tidak akan berjalan. Untuk memperbarui pengaturan aplikasi individual secara terprogram, Anda dapat menggunakan Azure CLI, Azure PowerShell, atau portal Azure untuk membuat perubahan ini. Untuk informasi selengkapnya, harap lihat Bekerja dengan pengaturan aplikasi.Jika memungkinkan, gunakan koneksi berbasis identitas terkelola ke layanan Azure lainnya, termasuk
AzureWebJobsStoragekoneksi. Untuk informasi selengkapnya, lihat Mengonfigurasi koneksi berbasis identitas.
Penyebaran slot
Functions memungkinkan Anda menyebarkan versi kode yang berbeda ke titik akhir unik di aplikasi fungsi Anda. Opsi ini memudahkan untuk mengembangkan, memvalidasi, dan menyebarkan pembaruan fungsi tanpa memengaruhi fungsi yang berjalan dalam produksi. "Deployment slots adalah fitur dari Azure App Service." Jumlah slot yang tersedia tergantung pada paket hosting Anda. Untuk informasi selengkapnya, lihat Slot penyebaran Azure Functions.
Anda menentukan sumber daya slot dengan cara yang sama seperti sumber daya aplikasi fungsi (Microsoft.Web/sites), tetapi Anda menggunakan pengidentifikasi sumber daya Microsoft.Web/sites/slots sebagai gantinya. Untuk contoh penyebaran (dalam templat Bicep dan ARM) yang membuat slot produksi dan penahapan dalam paket Premium, lihat Azure Function App dengan Slot Penyebaran.
Untuk mempelajari tentang cara menukar slot dengan menggunakan templat, lihat Automate dengan templat Resource Manager.
Perhatikan pertimbangan berikut saat berurusan dengan penerapan slot:
Jangan mengatur pengaturan
WEBSITE_CONTENTSHAREsecara eksplisit dalam definisi slot penyebaran. Proses pembuatan aplikasi di slot penyebaran menghasilkan pengaturan ini untuk Anda.Ketika Anda menukar slot, beberapa pengaturan aplikasi dianggap "tetap," karena mereka tetap dengan slot dan tidak dengan kode yang ditukar. Anda dapat menentukan pengaturan slot seperti itu dengan menyertakan
"slotSetting":truedalam definisi pengaturan aplikasi tertentu di templat Anda. Untuk informasi selengkapnya, lihat Mengelola pengaturan.
Penyebaran aman
Anda dapat membuat aplikasi fungsi dalam penyebaran tempat Anda mengamankan satu atau beberapa sumber daya dengan mengintegrasikan dengan jaringan virtual. Resource Microsoft.Web/sites/networkConfig mendefinisikan integrasi jaringan virtual untuk aplikasi fungsi Anda. Integrasi ini tergantung pada aplikasi fungsi yang dirujuk dan sumber daya jaringan virtual. Aplikasi fungsi Anda mungkin juga bergantung pada sumber daya jaringan privat lainnya, seperti titik akhir dan rute privat. Untuk informasi selengkapnya, lihat opsi jaringan Azure Functions.
Proyek-proyek ini memberikan contoh berbasis Bicep tentang cara menyebarkan aplikasi fungsi Anda di jaringan virtual, termasuk dengan pembatasan akses jaringan:
- Fungsi yang dipicu HTTP skala besar terhubung ke hub peristiwa yang diamankan oleh jaringan virtual: Fungsi yang dipicu HTTP (mode pekerja terisolasi .NET) menerima panggilan dari sumber apa pun dan kemudian mengirim isi panggilan HTTP tersebut ke hub peristiwa aman yang berjalan di jaringan virtual dengan menggunakan integrasi jaringan virtual.
- Function dipicu oleh antrean Service Bus yang diamankan dalam jaringan virtual: Sebuah fungsi Python dipicu oleh antrean Service Bus yang diamankan dalam jaringan virtual. Antrean diakses di jaringan virtual menggunakan titik akhir privat. Komputer virtual di jaringan virtual digunakan untuk mengirim pesan.
Saat Anda membuat penyebaran yang menggunakan akun penyimpanan aman, Anda harus secara eksplisit mengatur pengaturan yang ditentukan dalam WEBSITE_CONTENTSHARE dan membuat sumber daya berbagi file yang diberi nama sesuai dengan pengaturan ini. Pastikan Anda membuat sebuah resources dengan menggunakan nilai Microsoft.Storage/storageAccounts/fileServices/shares, seperti yang ditunjukkan dalam contoh ini (templat ARM|file Bicep). Anda juga perlu mengatur properti vnetContentShareEnabled situs ke benar.
Note
Ketika pengaturan ini bukan bagian dari penyebaran yang menggunakan akun penyimpanan aman, Anda akan melihat kesalahan ini selama validasi penyebaran: Could not access storage account using provided connection string.
Proyek-proyek ini menyediakan contoh templat Bicep dan ARM tentang cara menyebarkan aplikasi fungsi Anda di jaringan virtual, termasuk dengan pembatasan akses jaringan:
| Skenario terbatas | Description |
|---|---|
| Buat aplikasi fungsi dengan integrasi jaringan virtual | Anda membuat aplikasi fungsi di jaringan virtual dengan akses penuh ke sumber daya di jaringan tersebut. Akses masuk dan keluar ke aplikasi fungsi Anda tidak dibatasi. Untuk informasi lebih lanjut, lihat Integrasi jaringan virtual. |
| Buat aplikasi fungsi yang mengakses akun penyimpanan aman | Aplikasi fungsi yang Anda buat menggunakan akun penyimpanan yang aman, yang diakses oleh Functions dengan menggunakan titik akhir privat. Untuk informasi selengkapnya, lihat Membatasi akun penyimpanan Anda ke jaringan virtual. |
| Buat aplikasi fungsi dan akun penyimpanan yang keduanya menggunakan titik akhir privat | Aplikasi fungsi yang Anda buat hanya dapat diakses dengan menggunakan titik akhir privat, dan menggunakan titik akhir privat untuk mengakses sumber daya penyimpanan. Untuk informasi selengkapnya, lihat Private Endpoint. |
Pengaturan jaringan terbatas
Anda mungkin juga perlu menggunakan pengaturan ini saat aplikasi fungsi Anda memiliki pembatasan jaringan:
| Setting | Value | Description |
|---|---|---|
WEBSITE_CONTENTOVERVNET |
1 |
Pengaturan aplikasi yang memungkinkan aplikasi fungsi Anda untuk melakukan penskalaan saat akun penyimpanan dibatasi pada jaringan virtual. Untuk informasi selengkapnya, lihat Membatasi akun penyimpanan Anda ke jaringan virtual. |
vnetrouteallenabled |
1 |
Pengaturan situs yang memaksa semua lalu lintas dari aplikasi fungsi untuk menggunakan jaringan virtual. Untuk informasi selengkapnya, lihat Integrasi jaringan virtual regional. Pengaturan situs ini menggantikan pengaturan WEBSITE_VNET_ROUTE_ALLaplikasi . |
Pertimbangan untuk pembatasan jaringan
Saat Membatasi akses ke akun penyimpanan melalui titik akhir privat, Anda tidak dapat mengakses akun penyimpanan melalui portal atau perangkat apa pun di luar jaringan virtual. Anda dapat memberikan akses ke alamat IP aman atau jaringan virtual Anda di akun penyimpanan dengan Mengelola aturan akses jaringan default.
Kunci akses fungsi
Tentukan kunci akses fungsi tingkat host sebagai sumber daya Azure. Pendekatan ini memungkinkan Anda membuat dan mengelola kunci host di templat ARM dan file Bicep Anda. Kunci host didefinisikan sebagai sumber daya jenis Microsoft.Web/sites/host/functionKeys. Contoh berikut membuat kunci akses tingkat host bernama my_custom_key saat aplikasi fungsi dibuat:
resource functionKey 'Microsoft.Web/sites/host/functionKeys@2022-09-01' = {
name: '${parameters('name')}/default/my_custom_key'
properties: {
name: 'my_custom_key'
}
dependsOn: [
resourceId('Microsoft.Web/Sites', parameters('name'))
]
}
Dalam contoh ini, name parameter adalah nama aplikasi fungsi baru. Anda harus menyertakan pengaturan dependsOn untuk menjamin bahwa kunci dibuat dengan fungsi aplikasi baru. Terakhir, properties objek kunci host juga dapat menyertakan value properti yang dapat Anda gunakan untuk mengatur kunci tertentu.
Saat Anda tidak mengatur properti value, Functions akan secara otomatis menghasilkan kunci baru untuk Anda ketika sumber daya dibuat; ini direkomendasikan. Untuk mempelajari selengkapnya tentang kunci akses, termasuk praktik terbaik keamanan untuk bekerja dengan kunci akses, lihat Kerja dengan kunci akses di Azure Functions.
Buat templat Anda
Para ahli dengan templat Bicep atau ARM dapat secara manual mengkodekan penyebaran mereka dengan menggunakan editor teks sederhana. Bagi kita semua, beberapa opsi membuat proses pengembangan lebih mudah:
Visual Studio Code: Ekstensi tersedia untuk membantu Anda bekerja dengan file Bicep dan templat ARM. Gunakan alat ini untuk membantu memastikan bahwa kode Anda sudah benar. Mereka memberikan beberapa validasi dasar.
portal Azure: Saat Anda membuat aplikasi fungsi dan sumber daya terkait di portal, layar final Review + create memiliki sebuah tautan Unduh templat untuk otomatisasi.
Tautan ini menunjukkan templat ARM yang dihasilkan berdasarkan opsi yang Anda pilih di portal. Templat ini bisa tampak sedikit kompleks saat Anda membuat aplikasi fungsi dengan banyak sumber daya baru. Namun, ini dapat memberikan referensi yang baik tentang tampilan templat ARM Anda.
Memvalidasi templat Anda
Saat Anda membuat file templat penyebaran secara manual, penting untuk memvalidasi templat Anda sebelum penyebaran. Semua metode penyebaran memvalidasi sintaks templat Anda dan memunculkan pesan kesalahan seperti yang validation failed ditunjukkan dalam contoh berformat JSON berikut:
{"error":{"code":"InvalidTemplate","message":"Deployment template validation failed: 'The resource 'Microsoft.Web/sites/func-xyz' is not defined in the template. Please see https://aka.ms/arm-template for usage details.'.","additionalInfo":[{"type":"TemplateViolation","info":{"lineNumber":0,"linePosition":0,"path":""}}]}}
Gunakan metode berikut untuk memvalidasi templat Anda sebelum penyebaran:
Langkah berikut penyebaran grup sumber daya v2 Azure dengan deploymentMode: 'Validation' menginstruksikan Azure Pipelines untuk memvalidasi templat.
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
subscriptionId: # Required subscription ID
action: 'Create Or Update Resource Group'
resourceGroupName: # Required resource group name
location: # Required when action == Create Or Update Resource Group
templateLocation: 'Linked artifact'
csmFile: # Required when TemplateLocation == Linked Artifact
csmParametersFile: # Optional
deploymentMode: 'Validation'
Anda juga dapat membuat grup sumber daya pengujian untuk menemukan kesalahan pra-penerbangan dan penyebaran .
Menerapkan templat Anda
Gunakan salah satu metode berikut untuk menyebarkan file dan templat Bicep Anda:
Tombol Terapkan ke Azure
Note
Metode ini tidak mendukung penyebaran file Bicep saat ini.
Ganti <url-encoded-path-to-azuredeploy-json> dengan versi URL yang telah di-encode dari jalur mentah file azuredeploy.json Anda di GitHub.
Berikut adalah contoh yang menggunakan markdown:
[](https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>)
Berikut adalah contoh yang menggunakan HTML:
<a href="https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>" target="_blank"><img src="https://azuredeploy.net/deploybutton.png"></a>
Menyebarkan dengan menggunakan PowerShell
Perintah PowerShell berikut membuat grup sumber daya dan menyebarkan file Bicep atau templat ARM yang membuat aplikasi fungsi dengan sumber daya yang diperlukan. Untuk menjalankan perintah secara lokal, Anda harus menginstal Azure PowerShell . Untuk masuk ke Azure, jalankan Connect-AzAccountterlebih dahulu .
# Register Resource Providers if they're not already registered
Register-AzResourceProvider -ProviderNamespace "microsoft.web"
Register-AzResourceProvider -ProviderNamespace "microsoft.storage"
# Create a resource group for the function app
New-AzResourceGroup -Name "MyResourceGroup" -Location 'West Europe'
# Deploy the template
New-AzResourceGroupDeployment -ResourceGroupName "MyResourceGroup" -TemplateFile main.bicep -Verbose
Untuk menguji penyebaran ini, gunakan templat seperti ini yang membuat aplikasi fungsi di Windows dalam paket Konsumsi.
Langkah selanjutnya
Pelajari selengkapnya tentang cara mengembangkan dan mengonfigurasi Azure Functions.