Azure Functions Core Tools ile çalışma

Azure Functions Core Tools, yerel bilgisayarınızda komut isteminden veya terminalden işlevlerinizi geliştirip test etmenize olanak tanır. Yerel işlevleriniz canlı Azure hizmetleriyle bağlantı kurarak işlevlerinizin hata ayıklaması için yerel bilgisayarınızda tam İşlevler çalışma zamanını kullanabilirsiniz. Azure aboneliğinize bir işlev uygulaması bile dağıtabilirsiniz.

Önemli

Aynı işlev uygulamasında Portal geliştirmeyle yerel geliştirme karışmayın. Yerel bir projeden işlevler oluşturup yayımladığınızda, portalda proje kodunu sürdürme veya değiştirme denemeniz gerekir.

Core Tools kullanarak yerel bilgisayarınızda işlev geliştirme ve bunları Azure'da yayımlama aşağıdaki temel adımları izler:

Önkoşullar

Azure Functions Core Tools azure hesabınızla kimlik doğrulama için Azure CLI'Azure PowerShell bağlı olabilir. Başka bir ifadeyle, azure'da yayımlamak için bu araçlardan birini yüklemeniz Azure Functions Core Tools.

Core Tools sürümleri

Uygulamanın dört sürümü Azure Functions Core Tools. Kullandığınız sürüm yerel geliştirme ortamınıza, dil seçiminize ve gerekendestek düzeyine bağlıdır.

Belirli bir sürüm hakkında bilgi edinmek ve ayrıntılı yükleme yönergeleri için aşağıdaki sürüm sekmesini seçin:

İşlevler çalışma zamanının 4.x sürümünü destekler. Bu sürüm, Windows, macOS ve Linux'ı destekler ve yükleme için platforma özgü paket yöneticileri veya npm kullanır. Bu, İşlevler çalışma zamanının ve Çekirdek Araçlar'ın önerilen sürümüdür.

Core Tools'un yalnızca bir sürümünü bir bilgisayara yükleyebilirsiniz. Aksi belirtilmedikçe, bu makaledeki örnekler sürüm 3.x'e aittir.

Azure Functions Core Tools’u Yükleme

Azure Functions Core Tools, yerel geliştirme bilgisayarınızda çalıştırabilirsiniz Azure İşlevleri çalışma zamanının bir sürümünü içerir. Ayrıca işlev oluşturmak, Azure'a bağlanmak ve işlev projelerini dağıtmak için komutlar sağlar.

Sürüm 2.x'den başlayarak Core Tools Windows, macOSve Linux üzerinde çalışır.

Aşağıdaki adımlarda Core Tools v4.x'Windows yüklemek için bir yazılım yükleyicisi (MSI) gerekir. Diğer paket tabanlı yükleyiciler hakkında daha fazla bilgi için bkz. Core Tools readme.

Core Tools yükleyicisini, aşağıdaki sürüme göre indirip Windows:

Core Tools sürümlerini değiştirme

Core Tools'un farklı bir sürümüne değiştirirken, farklı bir paket sürümüne taşımak için özgün yüklemeyle aynı paket yöneticisini kullanabilirsiniz. Örneğin, Core Tools sürüm 2.x'i npm kullanarak yüklemiş olursanız, sürüm 3.x'e yükseltmek için aşağıdaki komutu kullanabilirsiniz:

npm install -g azure-functions-core-tools@3 --unsafe-perm true

Windows'a Core Tools yüklemek için Windows yükleyicisi (MSI) kullandıysanız, farklı bir sürüm yüklemeden önce eski sürümü Program Ekle'den kaldırmanız gerekir.

Yerel İşlevler projesi oluşturma

İşlevler proje dizini, dilden bağımsız olarak aşağıdaki dosyaları ve klasörleri içerir:

Dosya adı Description
host.json Daha fazla bilgi edinmek için host.json başvurusuna bakın.
local.settings.json Ayarlar ayarları dahil olmak üzere yerel olarak çalıştırılabilirken Core Tools tarafından kullanılır. Daha fazla bilgi edinmek için bkz. yerel ayarlar.
.gitignore local.settings.json dosyasının yanlışlıkla Git deposunda yayımlanır. Daha fazla bilgi için bkz. yerel ayarlar
. vscode\extensions.JSON proje klasörü Visual Studio Code açılırken kullanılan Ayarlar dosyası.

Işlevler proje klasörü hakkında daha fazla bilgi edinmek için bkz. Azure işlevleri Geliştirici Kılavuzu.

Terminal penceresinde veya bir komut isteminden, projeyi ve yerel Git deposunu oluşturmak için aşağıdaki komutu çalıştırın:

func init MyFunctionProj

Bu örnek, yeni bir klasörde bir Işlevler projesi oluşturur MyFunctionProj . Projeniz için varsayılan bir dil seçmeniz istenir.

Projenin başlatılması için aşağıdaki noktalar geçerlidir:

  • --worker-runtimeKomutta seçeneğini sağlamazsanız, dilinizi seçmeniz istenir. Daha fazla bilgi için Func init Referencebölümüne bakın.

  • Proje adı sağlamadığınızda, geçerli klasör başlatılır.

  • Projenizi özel bir Linux kapsayıcısında yayımlamayı planlıyorsanız, --dockerfile projeniz için bir Dockerfile oluşturulduğundan emin olmak için seçeneğini kullanın. Daha fazla bilgi için bkz. özel bir görüntü kullanarak Linux 'ta Işlev oluşturma.

Bazı dillerde ek hususlar olabilir:

  • Varsayılan olarak, temel araçların sürüm 2. x ve sonraki sürümleri, .NET çalışma zamanına yönelik işlev uygulama projelerini C# sınıf projeleri (. csproj) olarak oluşturur. Sürüm 3. x Ayrıca yalıtılmış bir işlemde .net 5,0 üzerinde çalışanişlevlerin oluşturulmasını destekler. Visual Studio veya Visual Studio Code ile kullanılabilen bu C# projeleri hata ayıklama sırasında ve Azure 'a yayımlarken derlenir.

  • --csxC# betiği (. CSX) dosyalarıyla yerel olarak çalışmak istiyorsanız parametresini kullanın. Bunlar, Azure portal işlevleri oluştururken ve çekirdek araçların 1. x sürümünü kullanırken aldığınız dosyalarla aynıdır. Daha fazla bilgi edinmek için Func init Referencebölümüne bakın.

Uzantıları Kaydet

çalışma zamanı sürüm 2. x ile başlayarak, işlev tetikleyicileri ve bağlamaları .net uzantısı (NuGet) paketleri olarak uygulanır. derlenmiş C# projeleri için, yalnızca kullandığınız belirli tetikleyiciler ve bağlamalara yönelik NuGet uzantısı paketlerine başvurmaktır. HTTP bağlamaları ve Zamanlayıcı Tetikleyicileri uzantı gerektirmez.

C olmayan projelere yönelik geliştirme deneyimini geliştirmek için, Işlevler Host. JSON proje dosyanızdaki sürümlü bir uzantı paketine başvurmanıza olanak sağlar. Uzantı paketleri tüm uzantıları uygulamanız için kullanılabilir hale getirir ve uzantılar arasında paket uyumluluk sorunları olma olasılığını ortadan kaldırır. Uzantı paketleri ayrıca .NET Core 3,1 SDK 'sını yükleme gereksinimini ortadan kaldırır ve Extensions. csproj dosyası ile uğraşmak zorunda kalmaları gerekir.

Uzantı demeti, C# karmaşıklu projeler dışındaki işlevler projeleri için önerilen yaklaşımdır. Bu projeler için Uzantı paketi ayarı başlatma sırasında Host. JSON dosyasında oluşturulur. Bu sizin için çalışırsa, tüm bölümü atlayabilirsiniz.

Uzantı paketleri kullan

Bağlama uzantılarını yüklemenin en kolay yolu, uzantıpaketlerinin etkinleştirilme yöntemidir. Paketleri etkinleştirdiğinizde, önceden tanımlanmış bir uzantı paketleri kümesi otomatik olarak yüklenir.

Uzantı paketlerini etkinleştirmek için dosyadaki host.jsaçın ve içeriğini aşağıdaki kodla eşleşecek şekilde güncelleştirin:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

Diliniz, sizin tarafınızdan desteklendikten sonra uzantı paketlerinizin zaten etkinleştirilmiş olması gerekir func init . Function. JSON dosyasına bağlama eklemeden önce, Host. JSON öğesine uzantı paketleri eklemeniz gerekir. Daha fazla bilgi için bkz. Azure işlevleri bağlama uzantılarını kaydetme.

Uzantıları açıkça yükler

Uzantı paketlerinizi kullanabilmeniz için bir non-.NET projesinde durumlar olabilir (örneğin, paketteki bir uzantının belirli bir sürümünü hedeflemenize gerek duyduğunuzda). Nadir durumlarda, projenizin gerektirdiği belirli uzantı paketlerini yerel olarak yüklemek için çekirdek araçları kullanabilirsiniz. Daha fazla bilgi için bkz. uzantıları açıkça yüklemek.

Yerel ayarlar

Azure'da bir işlev uygulamasında çalıştırsanız, işlevleriniz için gereken ayarlar uygulama ayarlarında güvenli bir şekilde depolanır. Yerel geliştirme sırasında, bu ayarlar bunun yerine Values dosyanın local.settings.jseklenir. Dosya local.settings.jsyerel geliştirme araçları tarafından kullanılan ayarları da depolar.

üzerinde local.settings.js, bağlantı dizeleri gibi gizli diziler içerenenden, bunu asla uzak bir depoda depolamanız gerekir. Yerel ayarlar hakkında daha fazla bilgi edinmek için yerel ayarlar dosyasına bakın.

Varsayılan olarak, bu ayarlar proje Azure 'da yayımlandığında otomatik olarak geçirilmez. Bu ayarların Azure 'daki işlev uygulamasına eklendiğinden emin olmak için yayımladığınızda --publish-local-settings seçeneğini kullanın. ConnectionStringsBölümdeki değerler hiçbir şekilde yayımlanmaz.

İşlev uygulaması ayarları değerleri, kodunuzda ortam değişkenleri olarak da okunabilir. Daha fazla bilgi için, bu dile özgü başvuru konularının ortam değişkenleri bölümüne bakın:

İçin geçerli bir depolama bağlantı dizesi ayarlanmamışsa [AzureWebJobsStorage] ve öykünücü kullanılmıyorsa, aşağıdaki hata iletisi gösterilir:

Yerel. Settings. JSON içinde AzureWebJobsStorage için eksik değer. HTTP dışındaki tüm tetikleyiciler için bu gereklidir. ' Func Azure functionapp Fetch-App-Settings ' öğesini çalıştırabilir <functionAppName> veya yerel. Settings. JSON içinde bir bağlantı dizesi belirtebilirsiniz.

Depolama bağlantı dizelerinizi alın

geliştirme için Microsoft Azure Depolama Emulator kullanılırken bile gerçek bir depolama bağlantısıyla yerel olarak çalıştırmak isteyebilirsiniz. Zaten bir depolama hesabı oluşturmuşolduğunuz varsayılarak, çeşitli yollarla geçerli bir depolama bağlantı dizesi alabilirsiniz:

  1. [Azure portal], Depolama hesaplarını arayıp seçin.

    Azure portal Depolama hesaplarını seçin

  2. depolama hesabınızı seçin, Ayarlar erişim tuşları ' nı seçin, sonra bağlantı dizesi değerlerinden birini kopyalayın.

    Bağlantı dizesini Azure portal Kopyala

İşlev oluşturma

Var olan bir projede bir işlev oluşturmak için aşağıdaki komutu çalıştırın:

func new

Sürüm 3. x/2. x ' de çalıştırdığınızda, func new işlev uygulamanızın varsayılan dilinde bir şablon seçmeniz istenir. Ardından, işleviniz için bir ad seçmeniz istenir. 1. x sürümünde de dili seçmeniz gerekir.

Ayrıca, komutta işlev adını ve şablonu da belirtebilirsiniz func new . Aşağıdaki örnek, --template adlı BIR http tetikleyicisi oluşturmak için seçeneğini kullanır MyHttpTrigger :

func new --template "Http Trigger" --name MyHttpTrigger

bu örnek, adlı bir sıra Depolama tetikleyicisi oluşturur MyQueueTrigger :

func new --template "Queue Trigger" --name MyQueueTrigger

Daha fazla bilgi edinmek için func new komutunabakın.

İşlevleri yerel olarak çalıştır

Bir Işlevler projesi çalıştırmak için, Işlevler ana bilgisayarını projenizin kök dizininden çalıştırırsınız. Konak, projedeki tüm işlevler için Tetikleyicileri mümkün. start Komut , Proje dilinize bağlı olarak değişir.

func start

Not

bunun yerine İşlevler çalışma zamanının 1.x sürümü func host start gerektirir. Daha fazla bilgi edinmek için bkz. Azure Functions Core Tools bakın.

İşlevler ana bilgisayarı başlatıldığında, aşağıdaki örnekte olduğu gibi HTTP ile tetiklenen işlevlerin URL'sini çıkış olarak sunar:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Önemli

Yerel olarak çalıştırıldıkları zaman HTTP uç noktaları için yetkilendirme uygulanmaz. Bu, tüm yerel HTTP isteklerinin olarak iş anlamına authLevel = "anonymous" gelir. Daha fazla bilgi için HTTP bağlama makalesine bakın.

Test verilerini işleve geçirme

İşlevlerinizi yerel olarak test etmek için, HTTP isteklerini kullanarak İşlevler ana bilgisayarını ve çağrı uç noktalarını yerel sunucuda başlatabilirsiniz. Çağıran uç nokta işlev türüne bağlıdır.

Not

Bu konudaki örnekler, terminalden veya komut isteminden HTTP istekleri göndermek için cURL aracını kullanır. Http isteklerini yerel sunucuya göndermek için tercih edinilen bir aracı kullanabilirsiniz. cURL aracı, Linux tabanlı sistemlerde varsayılan olarak kullanılabilir ve 17063 Windows 10 sonraki bir sürümü kullanır. Daha eski Windows önce cURLaracını indirip yüklemeniz gerekir.

İşlevleri test etme hakkında daha fazla genel bilgi için bkz.Azure İşlevleri.

HTTP ve web kancası ile tetiklenen işlevler

HTTP ve web kancası ile tetiklenen işlevleri yerel olarak çalıştırmak için aşağıdaki uç noktayı çağırabilirsiniz:

http://localhost:{port}/api/{function_name}

İşlevler ana bilgisayarının dinlediğinin sunucu adını ve bağlantı noktasının aynısını kullanın. bunu İşlev ana bilgisayarı başlatarak oluşturulan çıkışta görüyorsunuz. Tetikleyici tarafından desteklenen herhangi bir HTTP yöntemini kullanarak bu URL'yi çağırabilirsiniz.

Aşağıdaki cURL komutu, sorgu dizesinde geçirilen name parametresiyle bir GET isteğinden MyHttpTrigger hızlı başlangıç işlevini tetikler.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

Aşağıdaki örnek, istek gövdesinde bir POST isteği geçirme adından çağrılan işlevdir:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'

Sorgu dizesinde veri geçirmeyi tarayıcıdan GET isteklerinde bulundurabilirsiniz. Diğer tüm HTTP yöntemleri için cURL, Fiddler, Postman veya POST isteklerini destekleyen benzer bir HTTP test aracı kullan gerekir.

HTTP ile tetiklenen olmayan işlevler

HTTP ve özel tetikleyiciler Event Grid tüm işlevler için, yönetim uç noktası olarak adlandırılan özel bir uç noktayı çağırarak REST kullanarak işlevlerinizi yerel olarak test edin. Bu uç noktayı yerel sunucuda http POST isteğiyle çağırma işlevi tetikler.

Tetiklenen Event Grid yerel olarak test etmek için bkz. Görüntüleyici web uygulamasıyla yerel test.

İsteğe bağlı olarak test verilerini POST isteğinin gövdesinde yürütmeye geçebilirsiniz. Bu işlev, uygulamanın test sekmesindeki Azure portal.

HTTP olmayan işlevleri tetiklemek için aşağıdaki yönetici uç noktasını çağırabilirsiniz:

http://localhost:{port}/admin/functions/{function_name}

Test verilerini bir işlevin yönetici uç noktasına başarılı olmak için post istek iletisi gövdesine veri göndermeniz gerekir. İleti gövdesinin aşağıdaki JSON biçimine sahip olması gerekir:

{
    "input": "<trigger_input>"
}

değeri, <trigger_input> işlev tarafından beklenen bir biçimde veri içerir. Aşağıdaki cURL örneği bir işleve POST QueueTriggerJS örneğidir. Bu durumda giriş, kuyrukta olması beklenen iletiye eşdeğer bir dizedir.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTrigger

Azure'da işlev uygulamanıza bir yönetici uç noktası çağırarak erişim anahtarı sağlayabilirsiniz. Daha fazla bilgi için bkz. İşlev erişim anahtarları.

Azure'da yayımlama

Bu Azure Functions Core Tools üç dağıtım türü destekler:

Dağıtım türü Komut Açıklama
Project dosyaları func azure functionapp publish zip dağıtımını kullanarak işlev proje dosyalarını doğrudan işlev uygulamanıza dağıtır.
Özel kapsayıcı func deploy Projenizi özel bir Docker kapsayıcısı olarak Linux işlev uygulamasına dağıtır.
Kubernetes kümesi func kubernetes deploy Linux işlev uygulamanızı bir Kubernetes kümesine özel docker kapsayıcısı olarak dağıtır.

Yayımlamadan önce

Önemli

Core Tools'tan Azure'a Azure PowerShell için Azure CLI veya Azure PowerShell yerel olarak yüklü olması gerekir.

Proje klasörü, yayım olmaması gereken dile özgü dosyalar ve dizinler içerebilir. Dışlanan öğeler kök proje klasöründeki bir .funcignore dosyasında listelenir.

Azure aboneliğinde kodunuzu dağıtacak bir işlevuygulaması zaten oluşturulmuş olması gerekir. Derleme gerektiren projeler, ikililerin dağıtılabilir olması için derlenmesi gerekir.

Azure CLI veya Azure PowerShell kullanarak komut isteminden veya terminal penceresinden işlev uygulaması oluşturma hakkında bilgi edinmek için bkz. Sunucusuz yürütme için İşlev Uygulaması oluşturma.

Önemli

İşlev uygulamasında bir işlev uygulaması Azure portal, varsayılan olarak İşlev çalışma zamanının 3.x sürümünü kullanır. İşlev uygulamasının çalışma zamanının 1.x sürümünü kullanması için Sürüm 1.x'te çalıştır yönergelerini izleyin. Mevcut işlevlere sahip bir işlev uygulamasının çalışma zamanı sürümünü değiştiremezsiniz.

Proje dosyalarını dağıtma

Yerel kodunuzu Azure'daki bir işlev uygulamasında yayımlamak için komutunu publish kullanın:

func azure functionapp publish <FunctionAppName>

Bu tür bir dağıtım için aşağıdaki önemli noktalar geçerlidir:

  • Yayımlama işlevi uygulamasındaki mevcut dosyaların üzerine yazma.

  • local.settings.json dosyasındaki değerlere göre işlev uygulamanıza otomatik olarak uygulama ayarları oluşturmak için seçeneğini kullanın. --publish-local-settings

  • Derlenmiş projelerde uzak derleme gerçekleştirilir. Bu, seçeneği kullanılarak --no-build denetlenebilirsiniz.

  • Projeniz dağıtım paketinden çalıştırılacak şekilde dağıtıldı. Bu önerilen dağıtım modunu devre dışı bırakmak için seçeneğini --nozip kullanın.

  • Java, Yerel projenizi Azure'da yayımlamak için Maven kullanır. Bunun yerine, Azure'da yayımlamak için aşağıdaki komutu kullanın: mvn azure-functions:deploy . Azure kaynakları ilk dağıtım sırasında oluşturulur.

  • Aboneliğiniz içinde mevcut olmayan bir üzerinde <FunctionAppName> yayımlamayı denersanız hata alırsınız.

Kubernetes kümesi

İşlevler, bir Docker kapsayıcısı içinde çalıştıracak İşlevler projenizi tanımlamanıza da olanak sağlar. Kendi --docker dilinize func init yönelik bir Dockerfile oluşturmak için seçeneğini kullanın. Bu dosya daha sonra dağıtacak bir kapsayıcı oluşturulurken kullanılır.

Core Tools, projenizi bir Kubernetes kümesine özel bir kapsayıcı görüntüsü olarak dağıtmak için kullanılabilir. Kullandığınız komut, kümede kullanılan ölçekleyicinin türüne bağlıdır.

Aşağıdaki komut, kapsayıcı oluşturmak ve kubernetes kümesine dağıtmak için Dockerfile kullanır.

func kubernetes deploy --name <DEPLOYMENT_NAME> --registry <REGISTRY_USERNAME> 

Daha fazla bilgi için bkz. Kubernetes'e işlev uygulaması dağıtma.

Kubernetes olmadan Azure'da özel bir kapsayıcı yayımlamayı öğrenmek için bkz. Özel kapsayıcı kullanarak Linux'ta işlev oluşturma.

İzleme işlevleri

İşlevlerinizi yürütmenizi izlemenin önerilen yolu, Azure Application Analizler. Yürütme günlüklerinin akışını yerel bilgisayarınıza da sebilirsiniz. Daha fazla bilgi için bkz. Azure Işlevlerini izleme.

Application Insights tümleştirme

Azure 'da işlev uygulamanızı oluştururken Application Insights tümleştirme etkinleştirilmelidir. bazı nedenlerle işlev uygulamanız bir Application Insights örneğine bağlı değilse, bu tümleştirmeyi Azure portal yapmak kolaydır. daha fazla bilgi için bkz. Application Insights tümleştirmesini etkinleştirme.

Akış günlüklerini etkinleştir

İşlevleriniz tarafından oluşturulan günlük dosyalarının akışını, yerel bilgisayarınızdaki bir komut satırı oturumunda görüntüleyebilirsiniz.

Yerleşik günlük akışı

Aşağıdaki örnekte olduğu gibi, Azure 'da çalışan belirli bir işlev uygulamasının akış günlüklerini almaya başlamak için func azure functionapp logstream komutunu kullanın:

func azure functionapp logstream <FunctionAppName>

Not

Bir tüketim planında Linux üzerinde çalışan işlev uygulamalarına yönelik temel araçlarda yerleşik günlük akışı henüz etkin değildir. Bu barındırma planları için, bunun yerine, günlükleri neredeyse gerçek zamanlı olarak görüntülemek için Canlı Ölçüm Akışı kullanmanız gerekir.

Canlı Ölçüm Akışı

--browser Aşağıdaki örnekte olduğu gibi seçeneğini ekleyerek işlev uygulamanızın canlı ölçüm akışı yeni bir tarayıcı penceresinde görüntüleyebilirsiniz:

func azure functionapp logstream <FunctionAppName> --browser

bu tür akış günlükleri, işlev uygulamanız için Application Insights tümleştirmenin etkinleştirilmesini gerektirir.

Sonraki adımlar

Azure Functions Core Tools Microsoft 'un Azure Functions Core Tools açık kaynak olduğunu ve GitHub barındırıldığınıkullanarak Azure işlevleri geliştirmeyi, test yapmayı ve yayımlamayı öğrenin.
bir hata veya özellik isteğini dosyaaçmak için GitHub bir sorun açın.