Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, HTTP isteklerine yanıt veren bir işlev oluşturmak için yerel komut satırı araçlarını kullanırsınız. Kodunuzu yerel olarak doğruladıktan sonra Azure İşlevleri'nde sunucusuz flex consumption barındırma planına dağıtırsınız.
Bu hızlı başlangıcı tamamladığınızda Azure hesabınıza birkaç sentlik (ABD doları cinsinden) veya daha düşük bir ücret yansıtılır.
Makalenin üst kısmında tercih ettiğiniz geliştirme dilini seçtiğinizden emin olun.
Important
Azure İşlevleri için git desteği şu anda genel önizleme aşamasındadır. Önizleme sırasında Go işlev uygulamaları yalnızca Flex Consumption planında desteklenir.
Prerequisites
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz hesap oluşturun.
-
Java 17 Geliştirici Seti
- Java'nın desteklenen başka bir sürümünü kullanıyorsanız projenin pom.xml dosyasını güncelleştirmeniz gerekir.
- Ortam değişkeni,
JAVA_HOMEJava Development Kit'in (JDK) doğru sürümünün yükleme konumuna ayarlanmalıdır.
- Apache Maven 3.8.x
Azure İşlevleri Core Tools sürüm
4.12veya üzeri. Yüklü sürümünüzü doğrulamak için komutunu çalıştırınfunc --version.Azure CLI sürüm
2.87.0veya üzeri. Yüklü sürümünüzü doğrulamak için komutunu çalıştırınaz version.
-
rustup kullanan Rust araç zinciri.
rustc --versionkomutunu kullanarak sürümünüzü kontrol edin.
- JSON çıktısını ayrıştırmak için kullanılan ve Azure Cloud Shell'de de kullanılabilen komut satırı JSON işlemcisi.
jq
Azure İşlevleri Core Tools’u Yükleme
Çekirdek Araçları'nı yüklemenin önerilen yolu, yerel geliştirme bilgisayarınızın işletim sistemine bağlıdır.
Aşağıdaki adımlarda Core Tools v4.x'i yüklemek için bir Windows yükleyicisi (MSI) kullanılır. Diğer paket tabanlı yükleyiciler hakkında daha fazla bilgi için Core Tools README belgesine bakın.
Windows sürümünüz temelinde Core Tools yükleyicisini indirin ve çalıştırın:
- v4.x - Windows 64 bit (Önerilir. Visual Studio Code hata ayıklaması 64 bit gerektirir.)
- v4.x - Windows 32 bit
Daha önce Windows'a Core Tools yüklemek için Windows installer (MSI) kullandıysanız, en son sürümü yüklemeden önce Program Ekle Kaldır'dan eski sürümü kaldırmanız gerekir.
Tavsiye
Linux için Windows Alt Sistemi'ne (WSL) Çekirdek Araçları yüklemek için Linux sekmesindeki yönergeleri izleyin.
Sanal ortam oluşturma ve etkinleştirme
Uygun bir klasörde aşağıdaki komutları çalıştırarak adlı .venvbir sanal ortam oluşturun ve etkinleştirin. Azure İşlevleri tarafından desteklenen Python sürümlerinden birini kullandığınızdan emin olun.
python -m venv .venv
source .venv/bin/activate
Python venv paketini Linux dağıtımınıza yüklemediyse aşağıdaki komutu çalıştırın:
sudo apt-get install python3-venv
Bu etkinleştirilmiş sanal ortamda sonraki tüm komutları çalıştırırsınız.
Yerel kod projesi ve işlevi oluşturma
Azure İşlevleri'nde kod projeniz, her biri belirli bir tetikleyiciye yanıt veren bir veya daha fazla işlev içeren bir uygulamadır. Projedeki tüm işlevler aynı yapılandırmaları paylaşır ve Azure'a birim olarak dağıtılır. Bu bölümde, tek bir işlev içeren bir kod projesi oluşturacaksınız.
func initGo işlevleri projesi oluşturmak için komutunu çalıştırın:func init MyGoFunctionApp --worker-runtime goBu komut, aşağıdaki dosyaları içeren adlı
MyGoFunctionAppbir proje klasörü oluşturur:Dosya Description host.jsonİşlev uygulaması için konak yapılandırması. local.settings.jsonYerel olarak çalıştırılırken kullanılan ayarlar. main.goHTTP ile tetiklenen örnek bir işleve sahip giriş noktası. go.modBağımlılık yönetimi için modül dosyasına gidin. go.sumGo modülü sağlama toplamı dosyası. Proje klasörüne gidin:
cd MyGoFunctionAppOluşturulan kodu gözden geçirmek için açın
main.go. Http ile tetiklenen örnek bir işlev içerir:package main import ( "log" "net/http" "github.com/azure/azure-functions-golang-worker/sdk" "github.com/azure/azure-functions-golang-worker/worker" ) // HTTPTriggerHandler handles standard HTTP requests func HTTPTriggerHandler(w http.ResponseWriter, r *http.Request) { log.Printf("Processing HTTP Trigger for %s", r.URL.Path) w.WriteHeader(http.StatusOK) w.Write([]byte("Hello from Go Worker!")) } func main() { app := sdk.FunctionApp() app.HTTP("hello", HTTPTriggerHandler, sdk.WithMethods("GET", "POST"), sdk.WithAuth("anonymous"), ) worker.Start(app) }Go işlevleri HTTP tetikleyicileri için standart
net/httptürleri (http.ResponseWriterve*http.Request) kullanır. İşlevler Go çalışan SDK'sımain()ve işlevsel seçenekleri kullanılarak kaydedilir ve hiçbirfunction.jsondosya gerekmez.
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime dotnet-isolated
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime node --language javascript
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime powershell
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime python
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime node --language typescript
Terminalde veya komut isteminde şu
func initkomutu çalıştırarak geçerli klasörde bir işlev uygulaması projesi oluşturun:func init --worker-runtime custom
Boş bir klasörde şu
mvnkomutu çalıştırarak bir Azure İşlevleri Maven arketipinden kod projesi oluşturun:mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17Important
- İşlevlerinizin Java 11 üzerinde çalışmasını istiyorsanız
-DjavaVersion=11ifadesini kullanın. Daha fazla bilgi edinmek için bkz . Java sürümleri. -
JAVA_HOMEBu makaleyi tamamlamak için ortam değişkenini doğru JDK sürümünün yükleme konumuna ayarlayın.
- İşlevlerinizin Java 11 üzerinde çalışmasını istiyorsanız
Maven, projeyi dağıtımda oluşturma işlemini tamamlamak için gereken değerleri ister.
İstendiğinde aşağıdaki değerleri sağlayın:Prompt Value Description groupId com.fabrikamJava için paket adlandırma kurallarını izleyerek projenizi tüm projelerde benzersiz olarak tanımlayan bir değer. artifactId fabrikam-functionsSürüm numarası içermeyen jar'ın adı olarak bir değer. version 1.0-SNAPSHOTVarsayılan değeri seçin. package com.fabrikamOluşturulan işlev kodu için Java paketi olan bir değer. Varsayılan değeri kullanın. Yazın
Yveya onaylamak için Enter tuşuna basın.Maven, proje dosyalarını artifactId adlı yeni bir klasörde oluşturur. Bu örnekte şöyledir
fabrikam-functions: .Proje klasörüne gidin:
cd fabrikam-functions\src\main\java\com\fabrikam proje dizinindeki Function.java yeni HTTP tetikleyici işleviniz için şablon tarafından oluşturulan kodu gözden geçirebilirsiniz.
Projenize işlev eklemek için şu
func newkomutu kullanın:func new --name HttpExample --template "HTTP trigger" --authlevel "function"Projenize yeni bir kod dosyası eklenir. Bu durumda bağımsız değişken işlevinizin
--namebenzersiz adıdır (HttpExample) ve--templatebağımsız değişken bir HTTP tetikleyicisi belirtir.
Proje kök klasörü, local.settings.jsonvehost.json adlı yapılandırma dosyaları da dahil olmak üzere proje için çeşitli dosyalar içerir. local.settings.json Azure'dan indirilen gizli dizileri içerebileceğinden, dosya .gitignore dosyasında varsayılan olarak kaynak denetimin dışında tutulur.
İşlevinizi oluşturun ve derleyin
HttpExample klasöründeki function.json dosyası bir HTTP tetikleyici işlevi bildirir. bir işleyici ekleyerek ve bir yürütülebilir dosyaya derleyerek işlevi tamamlarsınız.
VS Code'da yeni bir tümleşik terminal açmak için Ctrl + Shift + ' tuşlarına basın veya Terminal menüsünden Yeni Terminal'i seçin.
İşlev uygulaması kökünde (host.json ile aynı klasör), adlı
handlerbir Rust projesi başlatın.cargo init --name handlerCargo.toml dosyasına bu hızlı başlangıcı tamamlamak için gereken aşağıdaki bağımlılıkları ekleyin. Örnekte warp web sunucusu çerçevesi kullanılır.
[dependencies] warp = "0.3" tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] }src/main.rs dosyasına aşağıdaki kodu ekleyin ve dosyayı kaydedin. Bu sizin Rust özel işleyiciniz.
use std::collections::HashMap; use std::env; use std::net::Ipv4Addr; use warp::{http::Response, Filter}; #[tokio::main] async fn main() { let example1 = warp::get() .and(warp::path("api")) .and(warp::path("HttpExample")) .and(warp::query::<HashMap<String, String>>()) .map(|p: HashMap<String, String>| match p.get("name") { Some(name) => Response::builder().body(format!("Hello, {}. This HTTP triggered function executed successfully.", name)), None => Response::builder().body(String::from("This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.")), }); let port_key = "FUNCTIONS_CUSTOMHANDLER_PORT"; let port: u16 = match env::var(port_key) { Ok(val) => val.parse().expect("Custom Handler port is not a number!"), Err(_) => 3000, }; warp::serve(example1).run((Ipv4Addr::LOCALHOST, port)).await }Özel işleyiciniz için bir ikili dosya derleyin.
handleradlı yürütülebilir dosya (handler.exeWindows'ta) işlev uygulamasının kök klasöründe oluşturulur.cargo build --release cp target/release/handler .
İşlev uygulamanızı yapılandırma
İşlev ana bilgisayarı, başlatıldığında özel işleyici ikili dosyanızı çalıştıracak şekilde yapılandırılmalıdır.
host.json'i açın.
customHandler.descriptionbölümünde,defaultExecutablePathdeğerinihandlerolarak ayarlayın (Windows'tahandler.exeolarak ayarlayın).customHandlerbölümünde,enableForwardingHttpRequestadlı bir özellik ekleyin ve değerinitrueolarak ayarlayın. Yalnızca BIR HTTP tetikleyicisi içeren işlevler için bu ayar, özel işleyici isteği yükü yerine tipik bir HTTP isteğiyle çalışmanıza olanak tanıyarak programlamayı basitleştirir.customHandlerbölümünün bu örnekteki gibi göründüğünü onaylayın. Dosyayı kaydedin."customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
İşlev uygulaması, özel işleyici yürütülebilir dosyanızı başlatacak şekilde yapılandırılmıştır.
İşlevi yerel olarak çalıştırma
Projeyi yerel olarak çalıştırıp işlev uç noktasını çağırarak yeni işlevinizi doğrulayın.
Proje klasörünün kökünde yerel Azure İşlevleri çalışma zamanı ortamını başlatmak için şu komutu kullanın:
func startnpm install npm startmvn clean package mvn azure-functions:runÇıkışın sonuna doğru aşağıdaki satırlar görüntülenir:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...Çıkışın sonuna doğru işlevinizin HTTP uç noktası görüntülenir:
Functions: hello: [GET,POST] http://localhost:7071/api/helloİşlev uç noktasını çağırarak çalıştığını doğrulayın:
Bu çıkıştan işlevinizin
HttpExampleURL'sini bir tarayıcıya kopyalayın ve işlev URL'sine göz atın. Başarılı bir yanıt olarak "merhaba dünya" iletisini almanız gerekir.Note
Yerel olarak çalıştırılırken erişim anahtarı yetkilendirmesi zorunlu tutulmadığından, döndürülen işlev URL'si erişim anahtarı değerini içermez ve işlevinizi çağırmak için buna ihtiyacınız yoktur.
İşlev yerel olarak çalışırken bir tarayıcı açın ve aşağıdaki URL'ye gidin:
http://localhost:7071/api/helloAşağıdaki yanıtı görmeniz gerekir:
Hello from Go Worker!İşiniz bittiğinde Ctrl+C tuşlarını kullanın ve işlevler konağını durdurmak için seçim yapın.
y
İşleviniz için destekleyici Azure kaynakları oluşturma
İşlev kodunuzu Azure'a dağıtmadan önce şu kaynakları oluşturmanız gerekir:
- İlgili kaynaklar için mantıksal bir kapsayıcı olan kaynak grubu.
- İşlevler ana bilgisayarı tarafından işlevlerinizle ilgili durumu ve diğer bilgileri korumak için kullanılan varsayılan depolama hesabı.
- İşlevler ana bilgisayarının varsayılan depolama hesabına bağlanmak için kullandığı kullanıcı tarafından atanan yönetilen kimlik.
- İşlev kodunuzu yürütmek için ortam sağlayan bir işlev uygulaması. İşlev uygulaması yerel işlev projenize eşler ve kaynakların daha kolay yönetilmesi, dağıtılması ve paylaşılması için işlevleri mantıksal birim olarak gruplandırmanıza olanak tanır.
Gerekli kaynakları oluşturmak için bu adımlardaki Azure CLI komutlarını kullanın.
Henüz yapmadıysanız Azure'da oturum açın:
az loginaz loginkomutu, Azure hesabınızda oturum açmanızı sağlar. Azure Cloud Shell'de çalışırken bu adımı atlayın.Henüz yapmadıysanız, Application Insights uzantısını yüklemek için şu
az extension addkomutu kullanın:az extension add --name application-insightsSeçtiğiniz bölgede adlı bir kaynak grubu oluşturmak için şu
AzureFunctionsQuickstart-rgkomutunu kullanın:az group create --name "AzureFunctionsQuickstart-rg" --location "<REGION>"Bu örnekte, Flex Consumption planını destekleyen, yakınınızdaki bir bölgeyle
<REGION>değerini değiştirin. Şu anda desteklenen bölgelerin listesini görüntülemek için az functionapp list-flexconsumption-locations komutunu kullanın.Kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturmak için bu az storage account create komutunu kullanın:
az storage account create --name <STORAGE_NAME> --location "<REGION>" --resource-group "AzureFunctionsQuickstart-rg" \ --sku "Standard_LRS" --allow-blob-public-access false --allow-shared-key-access falseBu örnekte,
<STORAGE_NAME>değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin. 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. Bu yeni hesaba yalnızca belirli kaynaklar için izin verilmiş Microsoft Entra-authenticated kimlikleri kullanılarak erişilebilir.Kullanıcı tarafından atanan bir yönetilen kimlik oluşturmak, nesne arasından döndürülen JSON özelliklerini
jqile ayrıştırmak ve varsayılan depolama hesabındaStorage Blob Data Ownerizinlerini vermek için bu betiği kullanın.output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \ --query "{userId:id, principalId: principalId, clientId: clientId}" -o json) userId=$(echo $output | jq -r '.userId') principalId=$(echo $output | jq -r '.principalId') clientId=$(echo $output | jq -r '.clientId') storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv) az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \ --role "Storage Blob Data Owner" --scope $storageIdEğer
jqyardımcı programı yerel Bash kabuğunuzda yoksa, Azure Cloud Shell'de kullanılabilir. Bu örnekte,<STORAGE_NAME>değerini varsayılan depolama hesap adınızla ve<REGION>değerini bölgenizle değiştirin.az identity create komutu adlı
func-host-storage-userbir kimlik oluşturur. DöndürülenprincipalId, komutunu kullanarakaz role assignment createvarsayılan depolama hesabında bu yeni kimliğe izin atamak için kullanılır.az storage account showkomutu, depolama hesabı kimliğini almak için kullanılır.Azure'da işlev uygulamasını oluşturmak için şu az functionapp create komutunu kullanın:
az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime other --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"Bu örnekte, bu yer tutucuları uygun değerlerle değiştirin:
-
<APP_NAME>: size uygun genel olarak benzersiz bir ad.<APP_NAME>aynı zamanda işlev uygulamasının varsayılan DNS etki alanıdır. -
<STORAGE_NAME>: Önceki adımda kullandığınız hesabın adı. -
<REGION>: geçerli bölgeniz. -
<LANGUAGE_VERSION>: Uygun olduğunda yerel olarak doğruladığınız desteklenen dil yığını sürümünü kullanın.
Bu komut , Flex Tüketim Planı'nda Linux'ta belirtilen dil çalışma zamanınızda çalışan bir işlev uygulaması oluşturur ve bu uygulama burada tahakkuk ettiğiniz kullanım miktarı için ücretsizdir. Komut aynı kaynak grubunda, işlev uygulaması yürütmelerinizi izlemek ve günlükleri görüntülemek için kullanabileceğiniz ilişkili bir Azure Uygulaması Insights örneği de oluşturur. Daha fazla bilgi için bkz. Azure İşlevlerini İzleme. Örneği etkinleştirene kadar herhangi bir ücret ödemezsiniz.
-
Kullanıcı tarafından atanan yönetilen kimliğinizi Application Insights örneğinizdeki İzleme Ölçümleri Yayımcısı rolüne eklemek için bu betiği kullanın:
appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \ --app <APP_NAME> --query "id" --output tsv) principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \ --query principalId -o tsv) az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsightsBu örnekte
<APP_NAME>ifadesini işlev uygulamanızın adıyla değiştirin. az role assignment create komutu, kullanıcınızı role ekler. Application Insights örneğinizin kaynak kimliği ve kullanıcınızın asıl kimliği sırasıyla az monitor app-insights component show veaz identity showkomutları kullanılarak elde edilir.
Uygulama ayarlarını güncelleştirme
İşlevler ana bilgisayarının paylaşılan sırları kullanarak varsayılan depolama hesabına bağlanmasını sağlamak için AzureWebJobsStorage bağlantı dizesi ayarını ön ekli birkaç ayar ile değiştirin AzureWebJobsStorage__. Bu ayarlar, uygulamanızın depolamaya ve Application Insights'a kullanıcı tarafından atanan yönetilen bir kimlikle bağlanmak için kullandığı karmaşık bir ayarı tanımlar.
Kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini almak için bu betiği kullanın ve hem depolamaya hem de Application Insights'a yönetilen kimlik bağlantıları tanımlamak için bu betiği kullanın:
clientId=$(az identity show --name func-host-storage-user \ --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv) az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \ --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \ AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \ APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"Bu betikte,
<APP_NAME>ve<STORAGE_NAME>öğelerini sırasıyla işlev uygulamanızın ve depolama hesabınızın adlarıyla değiştirin.Paylaşılan gizli dizi anahtarı içeren mevcut bağlantı dizesi ayarını kaldırmak için
AzureWebJobsStoragekomutunu çalıştırın:az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorageBu örnekte
<APP_NAME>değerini uygulama işlevinizin adıyla değiştirin.
Bu noktada Functions ana bilgisayarı, paylaşılan sırlar yerine yönetilen kimlikleri kullanarak depolama hesabına güvenli bir şekilde bağlanabilir. Artık proje kodunuzu Azure kaynaklarına dağıtabilirsiniz.
İşleviniz için destekleyici Azure kaynakları oluşturma
İşlev kodunuzu Azure dağıtabilmeniz için önce bir kaynak grubu, depolama hesabı ve işlev uygulaması oluşturmanız gerekir. Gerekli kaynakları oluşturmak için bu adımlardaki Azure CLI komutlarını kullanın.
Henüz yapmadıysanız Azure'da oturum açın:
az loginaz loginkomutu, Azure hesabınızda oturum açmanızı sağlar. Azure Cloud Shell'de çalışırken bu adımı atlayın.az group createSeçtiğiniz bölgede adlıAzureFunctionsQuickstart-rgbir kaynak grubu oluşturmak için komutunu kullanın:az group create --name AzureFunctionsQuickstart-rg --location <REGION>Bu örnekte, Flex Consumption planını destekleyen, yakınınızdaki bir bölgeyle
<REGION>değerini değiştirin.az functionapp list-flexconsumption-locationsŞu anda desteklenen bölgelerin listesini görüntülemek için komutunu kullanın.az storage account createKomutunu kullanarak kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturun:az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRSBu örnekte,
<STORAGE_NAME>öğesini küresel olarak benzersiz bir adla değiştirin. Adlar üç ile 24 karakter arasında olmalı ve yalnızca küçük harf ve sayı içermelidir.Azure'da işlev uygulamasını oluşturun:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime go --runtime-version 1.0 --functions-version 4<APP_NAME>değerini küresel olarak benzersiz bir adla ve<STORAGE_NAME>değerini önceki adımda kullandığınız hesap adıyla değiştirin. Bu komut aynı kaynak grubunda, işlev uygulamanızı izleyip günlükleri görüntüleyebileceğiniz ilişkili bir Azure Uygulaması Insights örneği de oluşturur. Daha fazla bilgi için bkz. Azure İşlevlerini İzleme.Go genel önizlemesi sırasında gerekli olan işlev uygulamasında HTTP/2'yi devre dışı bırakın:
az resource update --resource-group AzureFunctionsQuickstart-rg --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false
İşlev projesini Azure'a dağıtma
İşlev uygulamanızı Azure'da başarıyla oluşturduktan sonra, komutunu kullanarak yerel işlevler projenizi dağıtmaya func azure functionapp publish hazır olursunuz.
Kök proje klasörünüzde şu
func azure functionapp publishkomutu çalıştırın:func azure functionapp publish <APP_NAME>Bu örnekte
<APP_NAME>yerine uygulamanızın adını yazın. Başarılı bir dağıtım, aşağıdaki çıkışa benzer sonuçlar gösterir (basitlik için kesilmiş):... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexampleYerel terminalinizde veya komut isteminizde, erişim anahtarı da dahil olmak üzere URL uç noktası değerini almak için şu komutu çalıştırın:
func azure functionapp list-functions <APP_NAME> --show-keysBu örnekte
<APP_NAME>ifadesini uygulamanızın adıyla tekrar değiştirin.İşlev uç noktasını çağırmak için kullandığınız döndürülen uç nokta URL'sini ve anahtarını kopyalayın.
pom.xml dosyasını güncelleştirme
İşlev uygulamanızı Azure'da başarıyla oluşturduktan sonra maven'in yeni uygulamanıza dağıtabilmesi için pom.xml dosyasını güncelleştirin. Aksi takdirde Maven dağıtım sırasında yeni bir Azure kaynakları kümesi oluşturur.
Azure Cloud Shell'de, dağıtım kapsayıcısı URL'sini ve kullanıcı tarafından atanan yeni yönetilen kimliği almak için şu
az functionapp showkomutu kullanın:az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg \ --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \ containerUrl: properties.functionAppConfig.deployment.storage.value}"Bu örnekte
<APP_NAME>değerini uygulama işlevinizin adıyla değiştirin.Proje kök dizininde, pom.xml dosyasını bir metin düzenleyicisinde açın, öğesini bulun
propertiesve şu özel özellik değerlerini güncelleştirin:Özellik adı Value java.versionYerel olarak doğruladığınız desteklenen dil yığını sürümünü kullanın, örneğin 17.azure.functions.maven.plugin.version1.37.1azure.functions.java.library.version3.1.0functionAppNameAzure'daki işlev uygulamanızın adı. öğesinin
configurationazure-functions-maven-pluginbölümünü bulun ve şu XML parçasıyla değiştirin:<configuration> <appName>${functionAppName}</appName> <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup> <pricingTier>Flex Consumption</pricingTier> <region>....</region> <runtime> <os>linux</os> <javaVersion>${java.version}</javaVersion> </runtime> <deploymentStorageAccount>...</deploymentStorageAccount> <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup> <deploymentStorageContainer>...</deploymentStorageContainer> <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod> <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId> <appSettings> <property> <name>FUNCTIONS_EXTENSION_VERSION</name> <value>~4</value> </property> </appSettings> </configuration>Yeni
configurationöğede, üç nokta (...) değerlerinin belirli değişikliklerini yapın:Configuration Value regionMevcut işlev uygulamanızın bölge kodu, örneğin eastus.deploymentStorageAccountDepolama hesabınızın adı. deploymentStorageContainerAldığınız değer sonrası \gelencontainerUrldağıtım paylaşımının adı.userAssignedIdentityResourceIdAldığınız yönetilen kimliğinizin tam nitelikli kaynak kimliği. Değişikliklerinizi pom.xml dosyasına kaydedin.
Artık kod projenizi mevcut uygulamanıza dağıtmak için Maven'ı kullanabilirsiniz.
İşlev projesini Azure'a dağıtma
Komut isteminden şu komutu çalıştırın:
mvn clean package azure-functions:deployDağıtımınız başarılı olduktan sonra, erişim anahtarı da dahil olmak üzere URL uç noktası değerini almak için bu Core Tools komutunu çalıştırın:
func azure functionapp list-functions <APP_NAME> --show-keysBu örnekte
<APP_NAME>ifadesini uygulamanızın adıyla tekrar değiştirin.İşlev uç noktasını çağırmak için kullandığınız döndürülen uç nokta URL'sini ve anahtarını kopyalayın.
İşlev projesini Azure'a dağıtma
İşlev uygulamanızı Azure başarıyla oluşturduktan sonra yerel işlevler projenizi dağıtmaya hazırsınız demektir. Projenizi Azure dağıtmak için func azure functionapp publish komutunu kullanın:
func azure functionapp publish <APP_NAME>
<APP_NAME> değerini işlev uygulamanızın adıyla değiştirin.
İşlevi Azure'da çağırma
İşleviniz bir HTTP tetikleyicisi kullandığından ve GET isteklerini desteklediğinden, işlev düzeyi erişim anahtarını kullanarak URL'sine http isteğinde bulunarak bu tetikleyiciyi çağırırsınız. Tarayıcıda GET isteği yürütmek en kolayıdır.
Kopyaladığınız URL'yi ve erişim anahtarını bir tarayıcı adres çubuğuna yapıştırın.
Uç nokta URL'si şu örneğe benzer olmalıdır:
https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...
Bu durumda, uç nokta URL'sine GET isteğinde bulunurken sorgu dizesinde bir erişim anahtarı da sağlamanız gerekir. Rastgele istemcilerden erişimi sınırlamak için erişim anahtarı kullanılması önerilir. HTTP istemcisi kullanarak POST isteğinde bulunurken, bunun yerine üst bilgide x-functions-key erişim anahtarını sağlamanız gerekir.
Bu URL'ye gittiğinizde, tarayıcı işlevi yerel olarak çalıştırdığınızda olduğu gibi benzer bir çıkış görüntülemelidir.
İşlevi Azure'da çağırma
Dağıtım tamamlandıktan sonra, işlevin Azure çalıştığını doğrulamak için tarayıcıda aşağıdaki URL'yi açın:
https://<APP_NAME>.azurewebsites.net/api/hello
İşlevi yerel olarak çalıştırdığınızda gördüğünüz yanıtın aynısını Hello from Go Worker! görmeniz gerekir.
Kaynakları temizle
Bir sonraki adıma devam edip bir Azure Depolama kuyruğu çıkış bağlayıcısı eklediğinizde, daha önce yaptıklarınızın üzerine inşa edeceğiniz için tüm kaynaklarınızı yerinde koruyun.
Aksi takdirde, daha fazla maliyet oluşmasını önlemek için kaynak grubunu ve içerdiği tüm kaynakları silmek için aşağıdaki komutu kullanın.
az group delete --name AzureFunctionsQuickstart-rg
Kaynakları temizle
Sonraki adıma geçerseniz, daha önce oluşturduklarınızın üzerine inşa ederken tüm kaynakları olduğu gibi bırakın.
Aksi takdirde, daha fazla maliyet oluşmasını önlemek için kaynak grubunu ve içerdiği tüm kaynakları silmek için aşağıdaki komutu kullanın.
az group delete --name AzureFunctionsQuickstart-rg
Sonraki Adımlar
Sonraki Adımlar
Go işlevlerini geliştirme hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: