PowerShell kullanarak Azure'da işlev uygulaması kaynakları oluşturma
Bu makaledeki Azure PowerShell örnek betikleri, işlevlerinizi Azure'da barındırmak için gereken işlev uygulamalarını ve diğer kaynakları oluşturur. İşlev uygulaması, işlevlerinizin yürütüldiği bir yürütme bağlamı sağlar. İşlev uygulamasında çalışan tüm işlevler aynı kaynakları ve bağlantıları paylaşır ve hepsi birlikte ölçeklendirilir.
Kaynaklar oluşturulduktan sonra proje dosyalarınızı yeni işlev uygulamasına dağıtabilirsiniz. Daha fazla bilgi için bkz . Dağıtım yöntemleri.
Her işlev uygulaması aşağıdaki kaynakları oluşturmak için PowerShell betiklerinizi gerektirir:
Kaynak | Cmdlet | Tanım |
---|---|---|
Kaynak grubu | New-AzResourceGroup | İşlev uygulamanızı oluşturacağınız bir kaynak grubu oluşturur. |
Depolama hesabı | New-Az Depolama Account | İşlev uygulamanız tarafından kullanılan bir depolama hesabı oluşturur. Depolama hesap adları 3 ila 24 karakter uzunluğunda olmalıdır ve yalnızca sayı ve küçük harf içerebilir. Depolama hesabı gereksinimlerini karşılaması gereken mevcut bir hesabı da kullanabilirsiniz. |
App Service planı | New-AzFunctionAppPlan | Kaynakların işlev uygulamanıza nasıl ayrıldığını tanımlayan bir barındırma planı oluşturur. Yalnızca Premium veya Ayrılmış planda barındırırken kullanılır. çalıştırdığınızda New-AzFunctionApp Tüketim planları oluşturulduğundan sunucusuz Tüketim planında barındırırken bu cmdlet'i kullanamazsınız. Daha fazla bilgi için bkz. Azure İşlevleri barındırma seçenekleri. |
İşlev uygulaması | New-AzFunctionApp | gerekli kaynakları kullanarak işlev uygulamasını oluşturur. parametresi, -Name tüm Azure Uygulaması Hizmeti genelinde genel olarak benzersiz bir ad olmalıdır. içindeki -Name geçerli karakterler şunlardır a-z (büyük/küçük harfe duyarsız), 0-9 ve - . Çoğu örnek, C# işlevlerini destekleyen bir işlev uygulaması oluşturur. parametresini -Runtime kullanarak, desteklenen , Java , Node PowerShell ve Python değerleriyle DotNet dili değiştirebilirsiniz. Belirli bir dil sürümünü seçmek için öğesini -RuntimeVersion kullanın. |
Bu makalede aşağıdaki örnekler yer alır:
- C için sunucusuz işlev uygulaması oluşturma#
- Python için sunucusuz işlev uygulaması oluşturma
- Premium planda ölçeklenebilir işlev uygulaması oluşturma
- Ayrılmış planda işlev uygulaması oluşturma
- Adlandırılmış Depolama bağlantısıyla işlev uygulaması oluşturma
- Azure Cosmos DB bağlantısıyla işlev uygulaması oluşturma
- Sürekli dağıtım ile işlev uygulaması oluşturma
- Sunucusuz Python işlev uygulaması oluşturma ve dosya paylaşımını bağlama
Ön koşullar
- Azure PowerShell'i yerel olarak kullanmayı seçerseniz:
- Az PowerShell modülünün en son sürümünü yükleyin.
- Bağlan-AzAccount cmdlet'ini kullanarak Azure hesabınıza Bağlan.
- Azure Cloud Shell'i kullanmayı seçerseniz:
- Daha fazla bilgi için bkz . Azure Cloud Shell'e genel bakış.
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
C için sunucusuz işlev uygulaması oluşturma#
Aşağıdaki betik, varsayılan Tüketim planında sunucusuz bir C# işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-consumption"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "msdocs-serverless-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a serverless function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -Runtime DotNet-Isolated -FunctionsVersion $functionsVersion
Python için sunucusuz işlev uygulaması oluşturma
Aşağıdaki betik, Tüketim planında sunucusuz bir Python işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-consumption-python"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "msdocs-serverless-python-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
$pythonVersion = "3.9" #Allowed values: 3.7, 3.8, and 3.9
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a serverless Python function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -OSType Linux -Runtime Python -RuntimeVersion $pythonVersion -FunctionsVersion $functionsVersion
Premium planda ölçeklenebilir işlev uygulaması oluşturma
Aşağıdaki betik, dinamik ölçeklendirmeyi destekleyen bir Elastik Premium planında bir C# işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-premium-plan"}
$storage = "msdocsaccount$randomIdentifier"
$premiumPlan = "msdocs-premium-plan-$randomIdentifier"
$functionApp = "msdocs-function-$randomIdentifier"
$skuStorage = "Standard_LRS" # Allowed values: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS
$skuPlan = "EP1"
$functionsVersion = "4"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a Premium plan
Write-Host "Creating $premiumPlan"
New-AzFunctionAppPlan -Name $premiumPlan -ResourceGroupName $resourceGroup -Location $location -Sku $skuPlan -WorkerType Windows
# Create a Function App
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -PlanName $premiumPlan -ResourceGroupName $resourceGroup -Runtime DotNet -FunctionsVersion $functionsVersion
Ayrılmış planda işlev uygulaması oluşturma
Aşağıdaki betik, İşlevler tarafından dinamik olarak ölçeklendirilmemiş ayrılmış planda barındırılan bir işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-app-service-plan"}
$storage = "msdocsaccount$randomIdentifier"
$appServicePlan = "msdocs-app-service-plan-$randomIdentifier"
$functionApp = "msdocs-serverless-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$skuPlan = "B1"
$functionsVersion = "4"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create an App Service plan
Write-Host "Creating $appServicePlan"
New-AzFunctionAppPlan -Name $appServicePlan -ResourceGroupName $resourceGroup -Location $location -Sku $skuPlan -WorkerType Windows
# Create a Function App
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -PlanName $appServicePlan -ResourceGroupName $resourceGroup -Runtime DotNet -FunctionsVersion $functionsVersion
Adlandırılmış Depolama bağlantısıyla işlev uygulaması oluşturma
Aşağıdaki betik, uygulama ayarlarında adlandırılmış Depolama bağlantısı olan bir işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-connect-to-storage-account"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "msdocs-serverless-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a serverless function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -Runtime DotNet -FunctionsVersion $functionsVersion
# Get the storage account connection string.
$connstr = (Get-AzStorageAccount -StorageAccountName $storage -ResourceGroupName $resourceGroup).Context.ConnectionString
# Update function app settings to connect to the storage account.
Update-AzFunctionAppSetting -Name $functionApp -ResourceGroupName $resourceGroup -AppSetting @{StorageConStr = $connstr}
Azure Cosmos DB bağlantısıyla işlev uygulaması oluşturma
Aşağıdaki betik bir işlev uygulaması ve bağlı bir Azure Cosmos DB hesabı oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "create-function-app-connect-to-cosmos-db"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "msdocs-serverless-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a serverless function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -Runtime DotNet -FunctionsVersion $functionsVersion
# Create an Azure Cosmos DB database account using the same function app name.
Write-Host "Creating $functionApp"
New-AzCosmosDBAccount -Name $functionApp -ResourceGroupName $resourceGroup -Location $location
# Get the Azure Cosmos DB connection string.
$endpoint = (Get-AzCosmosDBAccount -Name $functionApp -ResourceGroupName $resourceGroup).DocumentEndpoint
Write-Host $endpoint
$key = (Get-AzCosmosDBAccountKey -Name $functionApp -ResourceGroupName $resourceGroup).PrimaryMasterKey
Write-Host $key
# Configure function app settings to use the Azure Cosmos DB connection string.
Update-AzFunctionAppSetting -Name $functionApp -ResourceGroupName $resourceGroup -AppSetting @{CosmosDB_Endpoint = $endpoint; CosmosDB_Key = $key}
Sürekli dağıtım ile işlev uygulaması oluşturma
Aşağıdaki betik, genel bir GitHub deposundan yayımlamak üzere yapılandırılmış sürekli dağıtımı olan bir işlev uygulaması oluşturur:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "deploy-function-app-with-function-github"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "mygithubfunc$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
$runtime = "Node"
# Public GitHub repository containing an Azure Functions code project.
$gitrepo = "https://github.com/Azure-Samples/functions-quickstart-javascript"
<# Set GitHub personal access token (PAT) to enable authenticated GitHub deployment in your subscription when using a private repo.
$token = <Replace with a GitHub access token when using a private repo.>
$propertiesObject = @{
token = $token
}
Set-AzResource -PropertyObject $propertiesObject -ResourceId /providers/Microsoft.Web/sourcecontrols/GitHub -ApiVersion 2018-02-01 -Force
#>
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Create a function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -Runtime $runtime -FunctionsVersion $functionsVersion
# Configure GitHub deployment from a public GitHub repo and deploy once.
$propertiesObject = @{
repoUrl = $gitrepo
branch = 'main'
isManualIntegration = $True # $False when using a private repo
}
Set-AzResource -PropertyObject $propertiesObject -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/sourcecontrols -ResourceName $functionApp/web -ApiVersion 2018-02-01 -Force
# Connect to function application
Invoke-RestMethod -Uri "https://$functionApp.azurewebsites.net/api/httpexample?name=Azure"
Sunucusuz Python işlev uygulaması oluşturma ve dosya paylaşımını bağlama
Aşağıdaki betik, Linux üzerinde bir Python işlev uygulaması oluşturur ve bir dış Azure Dosyalar paylaşımı oluşturur ve bağlar:
# Function app and storage account names must be unique.
# Variable block
$randomIdentifier = Get-Random
$location = "eastus"
$resourceGroup = "msdocs-azure-functions-rg-$randomIdentifier"
$tag = @{script = "functions-cli-mount-files-storage-linux"}
$storage = "msdocsaccount$randomIdentifier"
$functionApp = "msdocs-serverless-function-$randomIdentifier"
$skuStorage = "Standard_LRS"
$functionsVersion = "4"
$pythonVersion = "3.9" #Allowed values: 3.7, 3.8, and 3.9
$share = "msdocs-fileshare-$randomIdentifier"
$directory = "msdocs-directory-$randomIdentifier"
$shareId = "msdocs-share-$randomIdentifier"
$mountPath = "/mounted-$randomIdentifier"
# Create a resource group
Write-Host "Creating $resourceGroup in $location..."
New-AzResourceGroup -Name $resourceGroup -Location $location -Tag $tag
# Create an Azure storage account in the resource group.
Write-Host "Creating $storage"
New-AzStorageAccount -Name $storage -Location $location -ResourceGroupName $resourceGroup -SkuName $skuStorage
# Get the storage account key.
$keys = Get-AzStorageAccountKey -Name $storage -ResourceGroupName $resourceGroup
$storageKey = $keys[0].Value
## Create a serverless Python function app in the resource group.
Write-Host "Creating $functionApp"
New-AzFunctionApp -Name $functionApp -StorageAccountName $storage -Location $location -ResourceGroupName $resourceGroup -OSType Linux -Runtime Python -RuntimeVersion $pythonVersion -FunctionsVersion $functionsVersion
# Create a share in Azure Files.
Write-Host "Creating $share"
$storageContext = New-AzStorageContext -StorageAccountName $storage -StorageAccountKey $storageKey
New-AzStorageShare -Name $share -Context $storageContext
# Create a directory in the share.
Write-Host "Creating $directory in $share"
New-AzStorageDirectory -ShareName $share -Path $directory -Context $storageContext
# Add a storage account configuration to the function app
Write-Host "Adding $storage configuration"
$storagePath = New-AzWebAppAzureStoragePath -Name $shareid -Type AzureFiles -ShareName $share -AccountName $storage -MountPath $mountPath -AccessKey $storageKey
Set-AzWebApp -Name $functionApp -ResourceGroupName $resourceGroup -AzureStoragePath $storagePath
# Get a function app's storage account configurations.
(Get-AzWebApp -Name $functionApp -ResourceGroupName $resourceGroup).AzureStoragePath
Bağlı dosya paylaşımları yalnızca Linux'ta desteklenir. Daha fazla bilgi için bkz . Dosya paylaşımlarını bağlama.
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. Gelecekte bu kaynaklara ihtiyaç duymayı beklemiyorsanız aşağıdaki PowerShell komutunu çalıştırarak kaynak grubunu silin:
Remove-AzResourceGroup -Name myResourceGroup
Bu komutun çalıştırılması bir dakika sürebilir.
Sonraki adımlar
Azure PowerShell hakkında daha fazla bilgi için bkz . Azure PowerShell belgeleri.