Flex Consumption planında işlev uygulamaları oluşturma ve yönetme

Bu makalede, Azure İşlevleri'de Flex Tüketim planında barındırılan işlev uygulamalarının nasıl oluşturulacağı gösterilmektedir. Ayrıca Flex Tüketim planı barındırılan uygulamasının belirli özelliklerini nasıl yönetileceğini de gösterir.

İşlev uygulaması kaynakları langauge'a özeldir. Makalenin başında tercih ettiğiniz kod geliştirme dilini seçtiğinizden emin olun.

Önemli

Flex Consumption planı şu anda önizleme aşamasındadır.

Önkoşullar

Flex Consumption uygulaması oluşturma

Bu bölümde, Azure CLI, Azure portalı veya Visual Studio Code kullanarak Esnek Tüketim planında işlev uygulamasının nasıl oluşturulacağı gösterilmektedir. Bicep/ARM şablonlarını kullanarak Flex Consumption planında uygulama oluşturma örneği için bkz . Flex Consumption deposu.

Bunun yerine Maven kullanarak uygulamanızı oluşturmayı ve dağıtmayı seçerseniz bu bölümü atlayabilirsiniz.

İşlev kodunuzu desteklemek için üç kaynak oluşturmanız gerekir:

  1. Henüz yapmadıysanız Azure'da oturum açın:

    az login
    

    Komutu sizi az login Azure hesabınızda oturum açar.

  2. az functionapp list-flexconsumption-locations Şu anda Flex Consumption'ı destekleyen bölgelerin listesini gözden geçirmek için komutunu kullanın.

    az functionapp list-flexconsumption-locations --output table
    
  1. Şu anda desteklenen bölgelerden birinde bir kaynak grubu oluşturun:

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    Yukarıdaki komutta değerini aboneliğinizde benzersiz olan bir değerle ve <REGION> şu anda desteklenen bölgelerden biriyle değiştirin<RESOURCE_GROUP>. az group create komutu bir kaynak grubu oluşturur.

  2. Kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturun:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    Önceki örnekte değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin <STORAGE_NAME> . Adlar yalnızca üç ile 24 karakter arasında sayı ve küçük harf içermelidir. Standard_LRSİşlevler tarafından desteklenen genel amaçlı bir hesap belirtir. az storage account create komutu depolama hesabını oluşturur.

    Önemli

    Depolama hesabı, bazen uygulama kodunun kendisi de dahil olmak üzere önemli uygulama verilerini depolamak için kullanılır. Diğer uygulama ve kullanıcılardan depolama hesabına erişimi sınırlamanız gerekir.

  3. Azure'da işlev uygulamasını oluşturun:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0 
    

    Bir Flex Consumption planında çalışırken işlem halinde çalışan C# uygulamaları şu anda desteklenmemekte.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17 
    

    Java uygulamaları için Java 11 şu anda desteklenmektedir.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Python uygulamaları için Python 3.10 şu anda desteklenmektedir.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4 
    

    Bu örnekte, hem hem <STORAGE_NAME> de <RESOURCE_GROUP> öğesini kaynak grubuyla ve önceki adımda kullandığınız hesabın adıyla değiştirin. ayrıca değerini size uygun genel olarak benzersiz bir adla değiştirin <APP_NAME> . <APP_NAME> aynı zamanda işlev uygulaması için varsayılan etki alanı adı sunucusu (DNS) etki alanıdır. komutu, az functionapp create Azure'da işlev uygulamasını oluşturur.

    Bu komut, Flex Consumption planında çalışan bir işlev uygulaması oluşturur. Kullanılan belirli dil çalışma zamanı sürümü, şu anda önizlemede desteklenen bir sürümdür.

    Uygulamayı her zaman hazır örnekleri belirtmeden oluşturduğunuz için, uygulamanız yalnızca işlevleri etkin bir şekilde yürütürken maliyete neden olur. Komut aynı kaynak grubunda, işlev uygulamanızı izleyip günlükleri görüntüleyebileceğiniz ilişkili bir Azure Uygulaması lication Insights örneği de oluşturur. Daha fazla bilgi için bkz. İzleme Azure İşlevleri.

    
    

Kod projenizi dağıtma

Bunun yerine Maven kullanarak uygulamanızı oluşturmayı ve dağıtmayı seçerseniz bu bölümü atlayabilirsiniz.

Çeşitli araçları kullanarak proje kodunuzu mevcut bir işlev uygulamasına dağıtmayı seçebilirsiniz:

Önemli

Mevcut bir işlev uygulamasına dağıtılması her zaman Azure'da bu uygulamanın içeriğinin üzerine yazılır.

  1. Komut paletine girin ve Azure İşlevleri: İşlev Uygulamasına Dağıt'ı seçin.

  2. Yeni oluşturduğunuz işlev uygulamasını seçin. Önceki dağıtımların üzerine yazmanız istendiğinde, işlev kodunuzu yeni işlev uygulaması kaynağına dağıtmak için Dağıt'ı seçin.

  3. Dağıtım tamamlandığında, oluşturduğunuz Azure kaynakları da dahil olmak üzere oluşturma ve dağıtım sonuçlarını görüntülemek için Çıkışı Görüntüle'yi seçin. Bildirimi kaçırırsanız, yeniden görmek için sağ alt köşedeki zil simgesini seçin.

    Çıktıyı Görüntüle penceresinin ekran görüntüsü.

Maven kullanarak uygulamanızı oluşturma ve dağıtma

Pom.xml dosyasını değiştirerek Maven kullanarak bir Flex Consumption barındırılan işlev uygulaması ve dağıtım sırasında gerekli kaynakları oluşturabilirsiniz.

  1. Bu hızlı başlangıç makalelerinden birinin ilk bölümünü tamamlayarak bir Java kod projesi oluşturun:

  2. Java kod projenizde pom.xml dosyasını açın ve Flex Consumption planında işlev uygulamanızı oluşturmak için şu değişiklikleri yapın:

    • değerini <properties>.<azure.functions.maven.plugin.version> olarak 1.34.0değiştirin.

    • öğesinin <plugin>.<configuration> azure-functions-maven-pluginbölümünde, öğesini aşağıdaki gibi ekleyin veya açıklamayı <pricingTier> kaldırın:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (İsteğe bağlı) Maven dağıtımınızda Esnek Tüketim planını şu öğelere de dahil ederek özelleştirin <plugin>.<configuration> : .

    • <instanceSize>- işlev uygulaması için örnek bellek boyutunu ayarlar. Varsayılan değer şudur: 2048.
    • <maximumInstances> - işlev uygulamasının en yüksek örnek sayısı için en yüksek değeri ayarlar.
    • <alwaysReadyInstances>- HTTP tetikleyici grupları (), Dayanıklı İşlevler grupları (<durable><http>) ve diğer belirli tetikleyiciler<my_function> () için alt öğelerle her zaman hazır örnek sayısını ayarlar. Sıfırdan büyük bir örnek sayısı ayarladığınızda, işlevlerinizin yürütülmesine veya yürütülmesine bakılmaksızın bu örnekler için ücretlendirilirsiniz. Daha fazla bilgi için bkz . Faturalama.
  4. Dağıtabilmeniz için önce Azure CLI'yı kullanarak Azure aboneliğinizde oturum açın.

    az login
    

    Komutu sizi az login Azure hesabınızda oturum açar.

  5. Kod projenizi Flex Consumption'daki yeni bir işlev uygulamasına dağıtmak için aşağıdaki komutu kullanın.

    mvn azure-functions:deploy
    

    Maven, pom.xml şablonundaki ayarları kullanarak işlev uygulamanızı Azure'daki bir Flex Consumption planında ve gerekli diğer kaynaklarda oluşturur. Bu kaynaklar zaten mevcutsa, kod işlev uygulamanıza dağıtılır ve mevcut kodun üzerine yazılır.

Sanal ağ tümleştirmesini etkinleştirme

Flex Consumption planında uygulamanız için sanal ağ tümleştirmesini etkinleştirebilirsiniz. Bu bölümdeki örneklerde, hesabınızda alt ağ ile zaten bir sanal ağ oluşturduğunuz varsayılır. Uygulamanızı oluştururken veya daha sonra sanal ağ tümleştirmesini etkinleştirebilirsiniz.

Önemli

Flex Consumption planı şu anda alt çizgi (_) karakterleri içeren adlara sahip alt ağları desteklememektedir.

Uygulamanızı oluştururken sanal ağı etkinleştirmek için:

komutunu çalıştırarak az functionapp create ve parametrelerini dahil ederek sanal ağ tümleştirmesini --vnet --subnet etkinleştirebilirsiniz.

  1. Henüz yapmadıysanız sanal ağı ve alt ağı oluşturun.

  2. Uygulamanızın gerektirdiği kaynakları oluşturmak için Esnek Tüketim uygulaması oluşturma bölümünde 1-4 arası adımları tamamlayın.

  3. az functionapp create Ve parametreleri de dahil olmak üzere --vnet --subnet komutunu şu örnekte olduğu gibi çalıştırın:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    

    <VNET_RESOURCE_ID> Değer, sanal ağın kaynak kimliğidir ve şu biçimdedir: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCER_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. sanal ağ kimliklerinin <RESOURCE_GROUP>listesini almak için şu komutu kullanabilirsiniz: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Flex Tüketim'de sanal ağ tümleştirmesi ile uygulama oluşturmaya ilişkin uçtan uca örnekler için şu kaynaklara bakın:

Mevcut bir uygulamada sanal ağ tümleştirmesini değiştirmek veya silmek için:

Mevcut bir işlev uygulamasıyla az functionapp vnet-integration add sanal ağ tümleştirmesini etkinleştirmek için komutunu kullanın:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

az functionapp vnet-integration remove Uygulamanızda sanal ağ tümleştirmesini devre dışı bırakmak için komutunu kullanın:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Uygulamanızın az functionapp vnet-integration list geçerli sanal ağ tümleştirmelerini listelemek için komutunu kullanın:

az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Alt ağ seçerken dikkat edilmesi gerekenler şunlardır:

  • Seçtiğiniz alt ağ, özel uç noktalar veya hizmet uç noktaları gibi başka amaçlarla kullanılamaz ya da başka bir barındırma planına veya hizmete atanamaz.
  • Flex Tüketim planında çalışan birden fazla uygulamayla aynı alt ağı paylaşabilirsiniz. Ağ kaynakları tüm uygulamalar arasında paylaşıldığından, bir işlev uygulaması aynı alt ağdaki diğer kişilerin performansını etkileyebilir.
  • Esnek Tüketim planında, uygulama 40 örneğin üzerine ölçeklendirilse bile tek bir işlev uygulaması en fazla 40 IP adresi kullanabilir. İhtiyacınız olan alt ağ boyutunu tahmin ederken bu temel kural yararlı olsa da kesinlikle uygulanmaz.

Dağıtım ayarlarını yapılandırma

Flex Consumption planında, uygulamanızın kodunu içeren dağıtım paketi bir Azure Blob Depolama kapsayıcısında tutulur. Dağıtımlar varsayılan olarak uygulamanızı korumak için İşlevler çalışma zamanı tarafından kullanılan depolama hesabını (AzureWebJobsStorage) ve bağlantı dizesi değerini kullanır. bağlantı dizesi uygulama ayarında DEPLOYMENT_STORAGE_CONNECTION_STRING depolanır. Ancak, bunun yerine ayrı bir depolama hesabındaki blob kapsayıcısını kodunuzun dağıtım kaynağı olarak belirleyebilirsiniz. Kapsayıcıya erişmek için kullanılan kimlik doğrulama yöntemini de değiştirebilirsiniz.

Özelleştirilmiş bir dağıtım kaynağı şu ölçütleri karşılamalıdır:

  • Depolama hesabı zaten mevcut olmalıdır.
  • Dağıtımlar için kullanılacak kapsayıcının da mevcut olması gerekir.
  • Birden fazla uygulama aynı depolama hesabını kullandığında, her uygulamanın kendi dağıtım kapsayıcısı olmalıdır. Her uygulama için benzersiz bir kapsayıcı kullanılması, dağıtım paketlerinin üzerine yazılmasını önler ve bu durum uygulamalar aynı kapsayıcıyı paylaştığında gerçekleşir.

Dağıtım depolama kimlik doğrulamasını yapılandırırken şu noktaları göz önünde bulundurun:

  • Dağıtım depolama hesabına bağlanmak için bir bağlantı dizesi kullandığınızda, bağlantı dizesi içeren uygulama ayarı zaten mevcut olmalıdır.
  • Kullanıcı tarafından atanan bir yönetilen kimlik kullandığınızda, sağlanan kimlik işlev uygulamasına bağlanır. Storage Blob Data Contributor Dağıtım depolama hesabı kapsamındaki rol de kimliğe atanır.
  • Sistem tarafından atanan yönetilen kimlik kullandığınızda, uygulamanızda sistem tarafından atanan geçerli bir kimlik mevcut olmadığında bir kimlik oluşturulur. Sistem tarafından atanan bir kimlik mevcut olduğunda, Storage Blob Data Contributor dağıtım depolama hesabı kapsamındaki rol de kimliğe atanır.

Flex Consumption planında işlev uygulamanızı oluştururken dağıtım ayarlarını yapılandırmak için:

komutunu kullanın ve dağıtım depolama alanını az functionapp create özelleştiren şu ek seçenekleri sağlayın:

Parametre Açıklama
--deployment-storage-name Dağıtım depolama hesabının adı.
--deployment-storage-container-name Uygulamanızın dağıtım paketini içeren hesaptaki kapsayıcının adı.
--deployment-storage-auth-type Dağıtım depolama hesabına bağlanmak için kullanılacak kimlik doğrulama türü. Kabul edilen değerler , UserAssignedIdentityve SystemAssignedIdentitydeğerlerini içerirStorageAccountConnectionString.
--deployment-storage-auth-value kullanılırkenStorageAccountConnectionString, bu parametre dağıtım depolama hesabına bağlantı dizesi içeren uygulama ayarının adına ayarlanır. kullanılırken UserAssignedIdentitybu parametre, kullanmak istediğiniz kimliğin kaynak kimliğinin adına ayarlanır.

Bu örnek, Flex Consumption planında ayrı bir dağıtım depolama hesabı ve kullanıcı tarafından atanan kimlikle bir işlev uygulaması oluşturur:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>

Ayrıca, mevcut bir uygulamanın dağıtım depolama yapılandırmasını da değiştirebilirsiniz.

az functionapp deployment config set Dağıtım depolama yapılandırmasını değiştirmek için komutunu kullanın:

az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Örnek belleğini yapılandırma

Flex Consumption planınız tarafından kullanılan örnek bellek boyutu, uygulamanızı oluştururken açıkça ayarlanabilir. Desteklenen boyutlar hakkında daha fazla bilgi için bkz . Örnek belleği.

Uygulamanızı oluştururken varsayılandan farklı bir örnek bellek boyutu ayarlamak için:

Komutunuzda az functionapp create parametresini --instance-memory belirtin. Bu örnek, örnek boyutu 4096: olan bir C# uygulaması oluşturur:

az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0

Herhangi bir noktada, uygulamanız tarafından kullanılan örnek bellek boyutu ayarını değiştirebilirsiniz.

Bu örnekte, örnek bellek boyutu ayarını 4.096 MB olarak değiştirmek için komutu kullanılır az functionapp scale config set :

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096

Her zaman hazır örnek sayılarını ayarlama

İşlevlerinizin yüklü ve yürütülmeye hazır olmasını sağlamak üzere işlev başına ölçeklendirme grupları veya tek tek işlevler için her zaman hazır örnekler ayarlayabilirsiniz. İşlev başına ölçeklendirmede olduğu gibi üç özel grup vardır:

  • http - uygulamadaki HTTP ile tetiklenen tüm işlevler birlikte kendi örneklerine ölçeklendirilir.
  • durable - Uygulamadaki tüm Dayanıklı tetiklenen işlevler (Orchestration, Activity, Entity) birlikte kendi örneklerine ölçeklendirilir.
  • blob - uygulamadaki tüm blob (Event Grid) tarafından tetiklenen işlevler birlikte kendi örneklerine ölçeklendirilir.

Bu gruplar için her zaman hazır sayıları yapılandırmak için ad değer çifti ayarının adı olarak veya durable blob kullanınhttp. Uygulamadaki diğer tüm işlevler için biçimini function:<FUNCTION_NAME>=nkullanarak her işlev için her zaman hazır olarak yapılandırmanız gerekir.

--always-ready-instances Bir veya daha fazla her zaman hazır örnek gösterimi tanımlamak için komutunu kullanarak az functionapp create parametresini kullanın. Bu örnek, HTTP ile tetiklenen tüm işlevler için her zaman hazır örnek sayısını olarak 5ayarlar:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10

Bu örnek, tüm Dayanıklı tetikleyici işlevleri 3 için her zaman hazır örnek sayısını olarak ayarlar ve adlı function5service bus ile tetiklenen bir işlev için her zaman hazır örnek sayısını 2 olarak ayarlar:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2

Ayrıca, örnek atamaları ekleyerek veya kaldırarak veya mevcut örnek atama sayılarını değiştirerek mevcut bir uygulamada her zaman hazır örnekleri değiştirebilirsiniz.

Bu örnekte, HTTP tetikleyicileri grubunun 10her zaman hazır örnek sayısını olarak değiştirmek için komutu kullanılıraz functionapp scale config always-ready set:

az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10

Her zaman hazır örnekleri kaldırmak için, bu örnekte olduğu gibi hem HTTP tetikleyicileri grubundan hem de adlı hello_worldbir işlevden her zaman hazır örnekleri kaldıran komutunu kullanınaz functionapp scale config always-ready delete:

az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world

HTTP eşzamanlılık sınırlarını ayarlama

Belirli sınırlar ayarlamadığınız sürece, Esnek Tüketim planı uygulamaları için HTTP eşzamanlılık varsayılanları, örnek boyutu ayarınıza göre belirlenir. Daha fazla bilgi için bkz . HTTP tetikleyici eşzamanlılığı.

Mevcut bir uygulama için HTTP eşzamanlılık sınırlarını şu şekilde ayarlayabilirsiniz:

Örnek boyutundan bağımsız olarak uygulamanızın az functionapp scale config set belirli HTTP eşzamanlılık sınırlarını ayarlamak için komutunu kullanın.

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10

Bu örnek HTTP tetikleyici eşzamanlılık düzeyini olarak 10ayarlar. Özel olarak bir HTTP eşzamanlılık değeri ayarladıktan sonra, uygulamanızın örnek boyutu ayarında yapılan değişikliklere rağmen bu değer korunur.

Şu anda desteklenen bölgeleri görüntüleme

Önizleme sırasında yalnızca seçili bölgelerde Esnek Tüketim planında çalıştırabilirsiniz. Şu anda Flex Tüketim planlarını destekleyen bölgelerin listesini görüntülemek için:

  1. Henüz yapmadıysanız Azure'da oturum açın:

    az login
    

    Komutu sizi az login Azure hesabınızda oturum açar.

  2. az functionapp list-flexconsumption-locations Şu anda Flex Consumption'ı destekleyen bölgelerin listesini gözden geçirmek için komutunu kullanın.

    az functionapp list-flexconsumption-locations --output table
    

Azure portalında veya Visual Studio Code kullanarak bir uygulama oluşturduğunuzda, şu anda desteklenmeyen bölgeler bölge listesinden filtrelenir.