Mengotomatiskan penyebaran sumber daya untuk aplikasi fungsi Anda di Azure Functions
Anda dapat menggunakan file Bicep atau templat Azure Resource Manager (ARM) untuk mengotomatiskan proses penyebaran aplikasi fungsi Anda. Selama penyebaran, Anda dapat menggunakan sumber daya Azure yang sudah ada atau membuat sumber daya baru. Automation membantu Anda dengan skenario ini:
- Mengintegrasikan penyebaran sumber daya Anda dengan kode sumber Anda di Azure Pipelines dan penyebaran berbasis GitHub Actions.
- Memulihkan aplikasi fungsi dan sumber daya terkait dari cadangan.
- Menyebarkan topologi aplikasi beberapa kali.
Artikel ini memperlihatkan kepada Anda cara mengotomatiskan pembuatan sumber daya dan penyebaran untuk Azure Functions. Bergantung pada pemicu dan pengikatan yang digunakan oleh fungsi Anda, Anda mungkin perlu menyebarkan sumber daya lain, yang berada di luar cakupan artikel ini.
Kode templat yang diperlukan tergantung pada opsi hosting yang diinginkan untuk aplikasi fungsi Anda. Artikel ini mendukung opsi hosting berikut:
Opsi Hosting | Jenis penyebaran | Untuk mempelajari selengkapnya, lihat... |
---|---|---|
Paket Konsumsi Azure Functions | Kode-saja | Paket Konsumsi |
Paket Konsumsi Flex Azure Functions | Kode-saja | Paket Konsumsi Flex |
Paket Azure Functions Elastic Premium | Kode | Wadah | Paket premium |
Paket Azure Functions Dedicated (App Service) | Kode | Wadah | Paket khusus |
Azure Container Apps | Hanya kontainer | Hosting Aplikasi Kontainer Azure Functions |
Azure Arc | Kode | Wadah | App Service, Functions, dan Logic Apps pada Azure Arc (Pratinjau) |
Saat menggunakan artikel ini, ingatlah pertimbangan ini:
Tidak ada cara kanonis untuk menyusun templat ARM.
Penyebaran Bicep dapat dimodulir menjadi beberapa file Bicep.
Artikel ini mengasumsikan bahwa Anda memiliki pemahaman dasar tentang membuat file Bicep atau menulis templat Azure Resource Manager.
- Contoh ditampilkan sebagai bagian individual untuk sumber daya tertentu. Untuk serangkaian contoh lengkap file Bicep dan templat ARM, lihat contoh penyebaran aplikasi fungsi ini.
- Contoh ditampilkan sebagai bagian individual untuk sumber daya tertentu. Untuk serangkaian lengkap file Bicep lengkap dan contoh templat ARM, lihat contoh penyebaran aplikasi Konsumsi Flex ini.
- Contoh ditampilkan sebagai bagian individual untuk sumber daya tertentu.
Sumber daya yang diperlukan
Anda harus membuat atau mengonfigurasi sumber daya ini untuk penyebaran yang dihosting Azure Functions:
Sumber daya | Persyaratan | Referensi sintaks dan properti |
---|---|---|
Akun penyimpanan | Wajib | Microsoft.Storage/storageAccounts |
Komponen Application Insights | Direkomendasikan | Microsoft.Insights/components* |
Paket hosting | Wajib | Microsoft.Web/serverfarms |
Aplikasi fungsi | Wajib | Microsoft.Web/sites |
Anda harus membuat atau mengonfigurasi sumber daya ini untuk penyebaran yang dihosting Azure Functions:
Sumber daya | Persyaratan | Referensi sintaks dan properti |
---|---|---|
Akun penyimpanan | Wajib | Microsoft.Storage/storageAccounts |
Komponen Application Insights | Direkomendasikan | Microsoft.Insights/components* |
Aplikasi fungsi | Wajib | Microsoft.Web/sites |
Penyebaran yang dihosting Azure Container Apps biasanya terdiri dari sumber daya ini:
Sumber daya | Persyaratan | Referensi sintaks dan properti |
---|---|---|
Akun penyimpanan | Wajib | Microsoft.Storage/storageAccounts |
Komponen Application Insights | Direkomendasikan | Microsoft.Insights/components* |
Lingkungan terkelola | Wajib | Microsoft.App/managedEnvironments |
Aplikasi fungsi | Wajib | Microsoft.Web/sites |
Penyebaran yang dihosting Azure Arc biasanya terdiri dari sumber daya ini:
Sumber daya | Persyaratan | Referensi sintaks dan properti |
---|---|---|
Akun penyimpanan | Wajib | Microsoft.Storage/storageAccounts |
Komponen Application Insights | Direkomendasikan | Microsoft.Insights/components1 |
Lingkungan App Service Kubernetes | Wajib | Microsoft.ExtendedLocation/customLocations |
Aplikasi fungsi | Wajib | Microsoft.Web/sites |
*Jika Anda belum memiliki Ruang Kerja Analitik Log yang dapat digunakan oleh instans Application Insights, Anda juga perlu membuat sumber daya ini.
Saat Anda menyebarkan beberapa sumber daya dalam satu file Bicep atau templat ARM, urutan pembuatan sumber daya penting. Persyaratan ini adalah hasil dari dependensi antar sumber daya. Untuk dependensi tersebut dependsOn
, pastikan untuk menggunakan elemen untuk menentukan dependensi dalam sumber daya dependen. Untuk informasi selengkapnya, lihat Menentukan urutan untuk menyebarkan sumber daya dalam templat ARM atau Dependensi sumber daya di Bicep.
Prasyarat
- Contoh dirancang untuk dijalankan dalam konteks grup sumber daya yang ada.
- Application Insights dan log penyimpanan mengharuskan Anda memiliki ruang kerja Azure Log Analytics yang sudah ada. Ruang kerja dapat dibagikan antar layanan, dan sebagai aturan praktis, Anda harus membuat ruang kerja di setiap wilayah geografis untuk meningkatkan performa. Untuk contoh cara membuat ruang kerja Analitik Log, lihat Membuat ruang kerja Analitik Log. Anda dapat menemukan ID sumber daya ruang kerja yang sepenuhnya memenuhi syarat di halaman ruang kerja di portal Azure di bawah ID Sumber Daya Properti>Pengaturan.>
- Artikel ini mengasumsikan bahwa Anda telah membuat lokasi kustom dengan dukungan App Service pada kluster Kubernetes dengan dukungan Azure Arc. Anda memerlukan ID lokasi kustom dan ID lingkungan Kubernetes untuk membuat aplikasi fungsi yang dihosting di lokasi kustom Azure Arc.
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.
Penting
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 ini membuat akun penyimpanan v2 tujuan umum Standar:
resource storageAccountName 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
properties: {
supportsHttpsTrafficOnly: true
defaultToOAuthAuthentication: true
allowBlobPublicAccess: false
}
}
Untuk konteks selengkapnya, lihat file main.bicep lengkap di repositori templat.
Untuk konteks selengkapnya, lihat file storage-account.bicep lengkap di repositori sampel.
Anda perlu mengatur string koneksi akun penyimpanan ini sebagai AzureWebJobsStorage
pengaturan aplikasi, yang diperlukan Functions. Templat dalam artikel ini membuat nilai string koneksi ini berdasarkan akun penyimpanan yang dibuat, yang merupakan praktik terbaik. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
Kontainer penyebaran
Penyebaran ke aplikasi yang berjalan dalam paket Konsumsi Flex memerlukan kontainer di Azure Blob Storage sebagai sumber penyebaran. Anda dapat menggunakan akun penyimpanan default atau Anda dapat menentukan akun penyimpanan terpisah. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan penyebaran.
Akun penyebaran ini harus sudah dikonfigurasi saat Anda 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:
resource blobServices 'blobServices' = if (!empty(containers)) {
name: 'default'
properties: {
deleteRetentionPolicy: deleteRetentionPolicy
}
resource container 'containers' = [for container in containers: {
name: container.name
properties: {
publicAccess: contains(container, 'publicAccess') ? container.publicAccess : 'None'
}
}]
}
Untuk cuplikan dalam konteks, lihat contoh penyebaran ini.
Pengaturan penyebaran lainnya dikonfigurasi dengan aplikasi itu sendiri.
Mengaktifkan log penyimpanan
Karena akun penyimpanan digunakan untuk data aplikasi fungsi penting, Anda harus memantau akun untuk modifikasi konten tersebut. Untuk memantau akun penyimpanan, Anda perlu mengonfigurasi log sumber daya Azure Monitor untuk Azure Storage. Di bagian contoh ini, ruang kerja Analitik Log bernama myLogAnalytics
digunakan sebagai tujuan untuk log ini.
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2021-09-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
}
]
}
}
Ruang kerja yang sama ini dapat digunakan untuk sumber daya Application Insights yang ditentukan nanti. Untuk informasi selengkapnya, termasuk cara bekerja dengan log ini, lihat Memantau Azure Storage.
Membuat Application Insights
Anda harus menggunakan 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, sumber daya Application Insights didefinisikan 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.
Koneksi harus disediakan ke aplikasi fungsi menggunakan APPLICATIONINSIGHTS_CONNECTION_STRING
pengaturan aplikasi. Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
Contoh dalam artikel ini mendapatkan nilai string koneksi untuk instans yang dibuat. Versi yang lebih lama mungkin digunakan APPINSIGHTS_INSTRUMENTATIONKEY
untuk mengatur kunci instrumentasi, yang tidak lagi direkomendasikan.
Membuat paket hosting
Aplikasi yang dihosting dalam paket Konsumsi Flex Azure Functions, paket Premium, atau paket Khusus (App Service) harus memiliki paket hosting yang ditentukan secara eksplisit.
Konsumsi Flex adalah paket hosting berbasis Linux yang dibangun berdasarkan pembayaran Konsumsi untuk apa yang Anda gunakan model penagihan tanpa server. 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 Name
nilai properti di sku
properti dengan tier
nilai FlexConsumption
.
Bagian contoh ini membuat paket Konsumsi Flex:
resource flexFuncPlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: planName
location: location
tags: tags
kind: 'functionapp'
sku: {
tier: 'FlexConsumption'
name: 'FC1'
}
properties: {
reserved: true
}
}
Untuk konteks selengkapnya, lihat file function.bicep lengkap di repositori sampel paket Konsumsi Flex.
Karena paket Konsumsi Flex saat ini hanya mendukung Linux, Anda juga harus mengatur reserved
properti ke true
.
Paket Premium menawarkan penskalaan yang sama dengan paket Konsumsi tetapi mencakup sumber daya khusus dan kemampuan ekstra. Untuk mempelajari selengkapnya, lihat Paket Azure Functions Premium.
Paket Premium adalah jenis khusus sumber daya serverfarm
. Anda dapat menentukannya dengan menggunakan EP1
, , EP2
atau EP3
untuk Name
nilai properti dalam sku
properti . Cara Anda menentukan paket hosting Functions bergantung pada apakah aplikasi fungsi Anda berjalan di Windows atau di Linux. Bagian contoh ini membuat EP1
paket:
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-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 VM khusus pada SKU Dasar, Standar, dan Premium dalam paket App Service, mirip dengan aplikasi web. Untuk informasi selengkapnya, lihat Paket khusus.
Untuk contoh file Bicep/templat Azure Resource Manager, lihat Aplikasi fungsi di 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 --sku
pengaturan untuk az appservice plan create
daftar nilai yang didukung saat ini untuk paket Khusus.
Cara Anda menentukan paket hosting tergantung pada apakah aplikasi fungsi Anda berjalan di Windows atau di Linux:
Membuat paket hosting
Anda tidak perlu secara eksplisit menentukan sumber daya paket hosting Konsumsi. Saat Anda melewati definisi sumber daya ini, paket secara otomatis dibuat atau dipilih per wilayah saat Anda membuat sumber daya aplikasi fungsi itu sendiri.
Anda dapat secara eksplisit menentukan paket Konsumsi sebagai jenis serverfarm
sumber daya khusus, yang Anda tentukan menggunakan nilai Dynamic
untuk computeMode
properti dan sku
. 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@2022-03-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.
Lingkungan Kubernetes
Azure Functions dapat disebarkan ke Kubernetes dengan dukungan Azure Arc baik sebagai proyek kode atau aplikasi fungsi dalam kontainer.
Untuk membuat aplikasi dan merencanakan resource, Anda harus sudah membuat lingkungan App Service Kubernetes untuk klaster Kubernetes dengan dukungan Azure Arc. Contoh dalam artikel ini mengasumsikan Anda memiliki ID sumber daya lokasi kustom (customLocationId
) dan lingkungan App Service Kubernetes (kubeEnvironmentId
) tempat Anda menyebarkan, yang diatur dalam contoh ini:
param kubeEnvironmentId string
param customLocationId string
Situs dan paket harus mereferensikan lokasi kustom melalui bidang extendedLocation
. Seperti yang ditunjukkan dalam contoh terpotong ini, extendedLocation
berada di luar properties
, sebagai serekan ke kind
dan location
:
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
...
{
extendedLocation: {
name: customLocationId
}
}
}
Sumber daya rencana harus menggunakan nilai Kubernetes (K1
) untuk SKU
, kind
bidang harus linux,kubernetes
, dan reserved
properti harus true
, karena ini adalah penyebaran Linux. Anda juga harus mengatur extendedLocation
dan kubeEnvironmentProfile.id
ke ID lokasi kustom dan ID lingkungan Kubernetes, masing-masing, yang mungkin terlihat seperti bagian contoh ini:
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
kind: 'linux,kubernetes'
sku: {
name: 'K1'
tier: 'Kubernetes'
}
extendedLocation: {
name: customLocationId
}
properties: {
kubeEnvironmentProfile: {
id: kubeEnvironmentId
}
reserved: true
}
}
Buat aplikasi fungsi
Sumber daya aplikasi fungsi didefinisikan oleh sumber daya jenis Microsoft.Web/sites
dan kind
yang mencakup functionapp
, minimal.
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/templat Azure Resource Manager, lihat aplikasi fungsi yang dihosting di Windows dalam templat paket Konsumsi.
Untuk daftar pengaturan aplikasi yang diperlukan saat berjalan di Windows, lihat Konfigurasi aplikasi.
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.
resource flexFuncApp 'Microsoft.Web/sites@2023-12-01' = {
name: appName
location: location
tags: tags
kind: 'functionapp,linux'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: flexFuncPlan.id
siteConfig: {
appSettings: [
{
name: 'AzureWebJobsStorage__accountName'
value: storage.name
}
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: appInsights.properties.ConnectionString
}
]
}
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.properties.primaryEndpoints.blob}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
}
}
scaleAndConcurrency: {
maximumInstanceCount: maximumInstanceCount
instanceMemoryMB: instanceMemoryMB
}
runtime: {
name: functionAppRuntime
version: functionAppRuntimeVersion
}
}
}
}
Untuk konteks selengkapnya, lihat file function.bicep lengkap di repositori sampel paket Konsumsi Flex.
Catatan
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 pengaturan dependsOn
yang juga mereferensikan 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 pengaturan dependsOn
yang juga mereferensikan paket tersebut.
resource functionAppName_resource 'Microsoft.Web/sites@2022-03-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: '~14'
}
]
}
}
}
Untuk contoh end-to-end lengkap, lihat file main.bicep ini.
resource functionApp 'Microsoft.Web/sites@2022-03-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: '~14'
}
]
}
}
}
Untuk contoh end-to-end lengkap, lihat file main.bicep ini.
Sumber penyebaran
File Bicep atau templat ARM Anda dapat secara opsional juga menentukan penyebaran untuk kode fungsi Anda, yang dapat mencakup metode ini:
Sumber penyebaran
Dalam paket Konsumsi Flex, kode proyek Anda disebarkan dari paket terkompresi zip yang diterbitkan ke kontainer penyimpanan Blob. Untuk informasi selengkapnya, lihat Penerapan. Akun penyimpanan dan kontainer tertentu yang digunakan untuk penyebaran, metode autentikasi, dan kredensial diatur dalam functionAppConfig.deployment.storage
elemen properties
untuk situs. Kontainer dan pengaturan aplikasi apa pun harus ada saat aplikasi dibuat. 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:
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.properties.primaryEndpoints.blob}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
}
}
Saat menggunakan identitas terkelola, Anda juga harus mengaktifkan aplikasi fungsi untuk mengakses akun penyimpanan menggunakan identitas, seperti yang ditunjukkan dalam contoh ini:
// Allow access from function app to storage account using a managed identity
resource storageRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
name: guid(storage.id, storageRoleDefinitionId)
scope: storage
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', storageRoleDefinitionId)
principalId: flexFuncApp.identity.principalId
principalType: 'ServicePrincipal'
}
}
Untuk contoh referensi lengkap, lihat file Bicep ini.
Saat menggunakan string koneksi alih-alih identitas terkelola, Anda perlu mengatur authentication.type
ke StorageAccountConnectionString
dan mengatur authentication.storageAccountConnectionStringName
ke nama pengaturan aplikasi yang berisi akun penyimpanan penyebaran string koneksi.
Sumber penyebaran
File Bicep atau templat ARM Anda dapat secara opsional juga menentukan penyebaran untuk kode fungsi Anda menggunakan paket penyebaran zip.
Untuk berhasil menyebarkan aplikasi Anda dengan menggunakan Azure Resource Manager, penting untuk memahami cara sumber daya disebarkan di Azure. Dalam kebanyakan contoh, konfigurasi tingkat atas diterapkan dengan menggunakan siteConfig
. Penting untuk mengatur konfigurasi ini di tingkat atas, karena konfigurasi-konfigurasi ini menyampaikan informasi ke runtime Functions dan mesin penyebaran. Informasi tingkat atas diperlukan sebelum sumber daya anak sourcecontrols/web
diterapkan. Meskipun dimungkinkan untuk mengonfigurasi pengaturan ini di sumber daya tingkat config/appSettings
anak, dalam beberapa kasus aplikasi fungsi Anda harus disebarkan sebelum config/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 untuk 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 paket Konsumsi di Linux, sebagai gantinya atur URI paket penyebaran langsung dalam WEBSITE_RUN_FROM_PACKAGE
pengaturan, seperti yang ditunjukkan dalam contoh templat ini.
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@2021-02-01' = {
name: '${functionAppName}/ZipDeploy'
location: location
properties: {
packageUri: packageUri
}
}
Ingatlah hal-hal berikut saat menyertakan sumber daya penyebaran zip di templat Anda:
- Paket konsumsi di Linux tidak mendukung
WEBSITE_RUN_FROM_PACKAGE = 1
. Anda harus mengatur URI paket penyebaran langsung diWEBSITE_RUN_FROM_PACKAGE
pengaturan. Untuk informasi selengkapnya, lihat WEBSITE_RUN_FROM_PACKAGE. Untuk contoh templat, lihat Aplikasi fungsi yang dihosting di Linux dalam paket Konsumsi.
packageUri
harus merupakan lokasi yang dapat diakses oleh Functions. Pertimbangkan untuk menggunakan penyimpanan blob Azure dengan tanda tangan akses bersama (SAS). Setelah SAS kedaluwarsa, Functions tidak dapat lagi mengakses berbagi untuk penyebaran. Saat Anda meregenerasi SAS, ingatlah untuk memperbaruiWEBSITE_RUN_FROM_PACKAGE
pengaturan dengan nilai URI baru.Saat mengatur
WEBSITE_RUN_FROM_PACKAGE
ke URI, Anda harus menyinkronkan pemicu secara manual.Pastikan untuk selalu mengatur semua pengaturan aplikasi yang
appSettings
diperlukan dalam koleksi saat menambahkan atau memperbarui pengaturan. Pengaturan yang ada yang tidak diatur secara eksplisit dihapus oleh pembaruan. 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.
Build jarak jauh
Proses penyebaran mengasumsikan bahwa file .zip yang Anda gunakan atau penyebaran zip berisi aplikasi yang siap dijalankan. Ini berarti bahwa secara default tidak ada kustomisasi yang dijalankan.
Ada skenario yang 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 aplikasi disebarkan ke Windows, perintah khusus bahasa (seperti dotnet restore
untuk aplikasi C# atau npm install
untuk aplikasi Node.js) dijalankan.
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
sepenuhnya.
Kontainer Linux
Jika Anda menyebarkan aplikasi fungsi dalam kontainer ke paket Azure Functions Premium atau Dedicated, Anda harus:
- Atur
linuxFxVersion
pengaturan situs dengan pengidentifikasi gambar kontainer Anda. - Atur pengaturan yang diperlukan
DOCKER_REGISTRY_SERVER_*
saat mendapatkan kontainer dari registri privat. - Atur
WEBSITES_ENABLE_APP_SERVICE_STORAGE
pengaturan aplikasi kefalse
.
Untuk informasi selengkapnya, lihat Konfigurasi aplikasi.
resource functionApp 'Microsoft.Web/sites@2022-03-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: '~14'
}
{
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 dalam kontainer ke Azure Container Apps, templat Anda harus:
- Atur
kind
bidang ke nilaifunctionapp,linux,container,azurecontainerapps
. - Atur
managedEnvironmentId
properti situs ke URI yang sepenuhnya memenuhi syarat dari lingkungan Aplikasi Kontainer. - Tambahkan tautan sumber daya di kumpulan situs
dependsOn
saat membuatMicrosoft.App/managedEnvironments
sumber daya secara 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@2022-03-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
]
}
Saat menyebarkan fungsi ke Azure Arc, nilai yang Anda tetapkan untuk kind
bidang sumber daya aplikasi fungsi bergantung pada jenis penyebaran:
Jenis penyebaran | kind nilai bidang |
---|---|
Penyebaran khusus kode | functionapp,linux,kubernetes |
Penyebaran kontainer | functionapp,linux,kubernetes,container |
Anda juga harus mengatur seperti yang customLocationId
Anda lakukan untuk sumber daya paket hosting.
Definisi aplikasi fungsi dalam kontainer, menggunakan gambar mulai cepat .NET 6, mungkin terlihat seperti contoh ini:
resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
name: functionAppName
kind: 'kubernetes,functionapp,linux,container'
location: location
extendedLocation: {
name: customLocationId
}
properties: {
serverFarmId: hostingPlanName
siteConfig: {
linuxFxVersion: 'DOCKER|mcr.microsoft.com/azure-functions/4-dotnet-isolated6.0-appservice-quickstart'
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
}
]
alwaysOn: true
}
}
dependsOn: [
storageAccount
hostingPlan
]
}
Konfigurasi aplikasi
Dalam paket Konsumsi Flex, Anda mengonfigurasi aplikasi fungsi di Azure dengan dua jenis properti:
Konfigurasi | Properti Microsoft.Web/sites |
---|---|
Konfigurasi aplikasi | functionAppConfig |
Pengaturan aplikasi | siteConfig.appSettings koleksi |
Konfigurasi ini dipertahankan dalam functionAppConfig
:
Perilaku | Pengaturan di functionAppConfig |
---|---|
Runtime bahasa | runtime.name |
Versi bahasa | runtime.version |
Jumlah instans maksimum | scaleAndConcurrency.maximumInstanceCount |
Ukuran memori instans | scaleAndConcurrency.instanceMemoryMB |
Sumber penyebaran | deployment |
Paket Konsumsi Flex juga mendukung pengaturan aplikasi ini:
- Pengaturan berbasis string koneksi:
- Pengaturan berbasis identitas terkelola:
Konfigurasi aplikasi
Functions menyediakan opsi berikut untuk mengonfigurasi aplikasi fungsi Anda di Azure:
Konfigurasi | Properti Microsoft.Web/sites |
---|---|
Pengaturan situs | siteConfig |
Pengaturan aplikasi | siteConfig.appSettings koleksi |
Pengaturan situs ini diperlukan pada siteConfig
properti:
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:
- Ada pertimbangan penting ketika Anda harus mengatur
WEBSITE_CONTENTSHARE
dalam penyebaran otomatis. Untuk panduan terperinci, lihat referensinyaWEBSITE_CONTENTSHARE
.
- Untuk penyebaran kontainer, atur
WEBSITES_ENABLE_APP_SERVICE_STORAGE
juga kefalse
, karena konten aplikasi Anda disediakan dalam kontainer itu sendiri.
Anda harus selalu menentukan pengaturan aplikasi Anda sebagai kumpulan sumber daya yang
siteConfig/appSettings
Microsoft.Web/sites
dibuat, seperti yang dilakukan dalam contoh dalam artikel ini. Definisi ini menjamin pengaturan yang perlu dijalankan aplikasi fungsi Anda tersedia pada startup awal.Saat menambahkan atau memperbarui pengaturan aplikasi menggunakan templat, pastikan Anda menyertakan semua pengaturan yang ada dengan pembaruan. Anda harus melakukan ini karena panggilan REST API pembaruan yang mendasar menggantikan seluruh
/config/appsettings
sumber daya. 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.
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. Slot penyebaran adalah fitur Azure App Service. Jumlah slot yang tersedia tergantung pada paket hosting Anda. Untuk informasi selengkapnya, lihat Fungsi slot penyebaran Azure Functions .
Sumber daya slot didefinisikan dengan cara yang sama seperti sumber daya aplikasi fungsi (Microsoft.Web/sites
), tetapi sebagai gantinya Microsoft.Web/sites/slots
Anda menggunakan pengidentifikasi sumber daya. Untuk contoh penyebaran (dalam templat Bicep dan ARM) yang membuat produksi dan slot penahapan dalam paket Premium, lihat Aplikasi Fungsi Azure dengan Slot Penyebaran.
Untuk mempelajari tentang cara menukar slot dengan menggunakan templat, lihat Mengotomatiskan dengan templat Resource Manager.
Ingatlah pertimbangan berikut saat bekerja dengan penyebaran slot:
Jangan secara eksplisit mengatur
WEBSITE_CONTENTSHARE
pengaturan dalam definisi slot penyebaran. Pengaturan ini dibuat untuk Anda ketika aplikasi dibuat di slot penyebaran.Ketika Anda menukar slot, beberapa pengaturan aplikasi dianggap "lengket", karena mereka tetap dengan slot dan tidak dengan kode yang ditukar. Anda dapat menentukan pengaturan slot seperti itu dengan menyertakan
"slotSetting":true
dalam definisi pengaturan aplikasi tertentu di templat Anda. Untuk informasi selengkapnya, lihat Mengelola pengaturan.
Penyebaran aman
Anda dapat membuat aplikasi fungsi dalam penyebaran di mana satu atau beberapa sumber daya telah diamankan dengan mengintegrasikan dengan jaringan virtual. Integrasi jaringan virtual untuk aplikasi fungsi Anda ditentukan oleh Microsoft.Web/sites/networkConfig
sumber daya. 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 tinggi terhubung ke pusat aktivitas yang diamankan oleh jaringan virtual: Fungsi yang dipicu HTTP (mode pekerja terisolasi.NET) menerima panggilan dari sumber mana pun dan kemudian mengirim isi panggilan HTTP tersebut ke hub peristiwa aman yang berjalan di jaringan virtual dengan menggunakan integrasi jaringan virtual.
- Fungsi dipicu oleh antrean Bus Layanan yang diamankan dalam jaringan virtual: Fungsi Python dipicu oleh antrean Bus Layanan yang diamankan dalam jaringan virtual. Antrean diakses di jaringan virtual menggunakan titik akhir privat. Komputer virtual di jaringan virtual digunakan untuk mengirim pesan.
Saat membuat penyebaran yang menggunakan akun penyimpanan aman, Anda harus secara eksplisit mengatur WEBSITE_CONTENTSHARE
pengaturan dan membuat sumber daya berbagi file bernama dalam pengaturan ini. Pastikan Anda membuat sumber daya menggunakan nilai , seperti yang Microsoft.Storage/storageAccounts/fileServices/shares
ditunjukkan dalam contoh ini (file Bicep templat|ARM).WEBSITE_CONTENTSHARE
Anda juga harus mengatur properti vnetContentShareEnabled
situs ke true.
Catatan
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 | Deskripsi |
---|---|
Membuat aplikasi fungsi dengan integrasi jaringan virtual | Aplikasi fungsi Anda dibuat 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. |
Membuat aplikasi fungsi yang mengakses akun penyimpanan aman | Aplikasi fungsi yang Anda buat menggunakan akun penyimpanan aman, yang diakses Functions dengan menggunakan titik akhir privat. Untuk informasi selengkapnya, lihat Membatasi akun penyimpanan Anda ke jaringan virtual. |
Membuat 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 Titik akhir privat. |
Pengaturan jaringan terbatas
Anda mungkin juga perlu menggunakan pengaturan ini saat aplikasi fungsi Anda memiliki pembatasan jaringan:
Pengaturan | Nilai | Deskripsi |
---|---|---|
WEBSITE_CONTENTOVERVNET |
1 |
Pengaturan aplikasi yang memungkinkan aplikasi fungsi Anda untuk menskalakan saat akun penyimpanan dibatasi ke 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_ALL aplikasi . |
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
Kunci akses fungsi tingkat host didefinisikan sebagai sumber daya Azure. Ini berarti Anda dapat 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 ini 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 dependsOn
pengaturan untuk menjamin bahwa kunci dibuat dengan aplikasi fungsi baru. Terakhir, properties
objek kunci host juga dapat menyertakan value
properti yang dapat digunakan untuk mengatur kunci tertentu.
Saat Anda tidak mengatur value
properti, Functions secara otomatis menghasilkan kunci baru untuk Anda saat sumber daya dibuat, yang direkomendasikan. Untuk mempelajari selengkapnya tentang kunci akses, termasuk praktik terbaik keamanan untuk bekerja dengan kunci akses, lihat Bekerja dengan kunci akses di Azure Functions.
Buat templat Anda
Para ahli dengan templat Bicep atau ARM dapat secara manual mengkodekan penyebaran mereka menggunakan editor teks sederhana. Bagi kita semua, ada beberapa cara untuk mempermudah proses pengembangan:
Visual Studio Code: Ada ekstensi yang tersedia untuk membantu Anda bekerja dengan file Bicep dan templat ARM. Anda dapat menggunakan alat-alat ini untuk membantu memastikan bahwa kode Anda benar, dan mereka memberikan beberapa validasi dasar.
portal Azure: Saat Anda membuat aplikasi fungsi dan sumber daya terkait di portal, layar Tinjau + buat akhir memiliki 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":""}}]}}
Metode berikut dapat digunakan untuk memvalidasi templat Anda sebelum penyebaran:
Tugas penyebaran grup sumber daya Azure v2 berikut 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
Anda bisa menggunakan salah satu cara berikut untuk menyebarkan file Bicep dan templat Anda:
Tombol Sebarkan ke Azure
Catatan
Saat ini, metode ini tidak mendukung penyebaran file Bicep jarak jauh.
Ganti <url-encoded-path-to-azuredeploy-json>
dengan versi URL yang dikodekan dari jalur mentah file azuredeploy.json
Anda di GitHub.
Berikut adalah contoh yang menggunakan markdown:
[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](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 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 berjalan secara lokal, Anda harus menginstal Azure PowerShell. Jalankan Connect-AzAccount
untuk masuk.
# 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, Anda dapat menggunakan templat seperti ini yang membuat aplikasi fungsi pada Windows dalam paket Konsumsi.
Langkah berikutnya
Pelajari selengkapnya tentang cara mengembangkan dan mengonfigurasi Azure Functions.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk