Azure İşlevleri’ni yerel olarak kodlama ve test etme

Azure portalında Azure İşlevleri geliştirip test edebilirsiniz ancak birçok geliştirici yerel geliştirme deneyimini tercih eder. İşlevler'i kullandığınızda, yerel bilgisayarınızda işlev oluşturmak ve test etmek için sık kullandığınız kod düzenleyicisini ve geliştirme araçlarını kullanmak daha kolay hale gelir. Yerel işlevleriniz canlı Azure hizmetlerine bağlanabilir ve tam İşlevler çalışma zamanını kullanarak yerel bilgisayarınızda bunların hatalarını ayıklayabilirsiniz.

Bu makale, tercih ettiğiniz dil için belirli geliştirme ortamlarına bağlantılar sağlar. Ayrıca, local.settings.json dosyasıyla çalışma gibi yerel geliştirme için bazı paylaşılan yönergeler sağlar.

Yerel geliştirme ortamları

Yerel bilgisayarınızda işlevleri geliştirme yönteminiz dilinize ve araç tercihlerinize bağlıdır. Aşağıdaki tablodaki ortamlar yerel geliştirmeyi destekler:

Ortam Diller Açıklama
Visual Studio Code C# (işlem içi)
C# (yalıtılmış çalışan işlemi)
JavaScript
PowerShell
Python
VS Code için Azure İşlevleri uzantısı VS Code'a İşlev desteği ekler. Çekirdek Araçları gerektirir. Core Tools'un 2.x sürümünü kullanırken Linux, macOS ve Windows üzerinde geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz . Visual Studio Code kullanarak ilk işlevinizi oluşturma.
Komut istemi veya terminal C# (işlem içi)
C# (yalıtılmış çalışan işlemi)
JavaScript
PowerShell
Python
Azure İşlevleri Core Tools, yerel geliştirmeyi etkinleştiren işlevler oluşturmaya yönelik temel çalışma zamanı ve şablonları sağlar. Sürüm 2.x, Linux, macOS ve Windows üzerinde geliştirmeyi destekler. Tüm ortamlar, yerel İşlevler çalışma zamanı için Temel Araçlar'a dayanır.
Visual Studio C# (işlem içi)
C# (yalıtılmış çalışan işlemi)
Azure İşlevleri araçları, Visual Studio 2019'dan başlayarak Visual Studio'nun Azure geliştirme iş yüküne dahildir. Bir sınıf kitaplığında işlevleri derlemenize ve .dll Azure'da yayımlamanıza olanak tanır. Yerel test için Temel Araçları içerir. Daha fazla bilgi edinmek için bkz. Visual Studio kullanarak Azure İşlevleri geliştirme.
Maven (çeşitli) Java Maven arketipi, Java işlevlerinin geliştirilmesini sağlamak için Core Tools'u destekler. Sürüm 2.x, Linux, macOS ve Windows üzerinde geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz . Java ve Maven ile ilk işlevinizi oluşturma. Ayrıca Eclipse ve IntelliJ IDEA kullanarak geliştirmeyi de destekler.

Not

Azure portalında işlev kodunu düzenlemeyle ilgili sınırlamalar nedeniyle işlevlerinizi yerel olarak geliştirmeniz ve kod projenizi Azure'daki bir işlev uygulamasında yayımlamanız gerekir. Daha fazla bilgi için bkz . Azure portalında geliştirme sınırlamaları

Bu yerel geliştirme ortamlarının her biri işlev uygulaması projeleri oluşturmanıza ve yeni işlevler oluşturmak için önceden tanımlanmış işlev şablonlarını kullanmanıza olanak tanır. Her biri Çekirdek Araçları'nı kullanarak işlevlerinizi diğer tüm uygulamalarda olduğu gibi kendi makinenizdeki gerçek İşlevler çalışma zamanına göre test edebilir ve hatalarını ayıklayabilirsiniz. İşlev uygulaması projenizi bu ortamların herhangi birinden Azure'da da yayımlayabilirsiniz.

Yerel proje dosyaları

İşlevler proje dizini, dilden bağımsız olarak proje kök klasöründe aşağıdaki dosyaları içerir:

Dosya adı Açıklama
host.json Daha fazla bilgi edinmek için host.json başvurusuna bakın.
local.settings.json Uygulama ayarları da dahil olmak üzere yerel olarak çalışırken Core Tools tarafından kullanılan ayarlar. Daha fazla bilgi için bkz . yerel ayarlar dosyası.
.gitignore local.settings.json dosyasının yanlışlıkla git deposunda yayımlanmasını engeller. Daha fazla bilgi için bkz . yerel ayarlar dosyası.
.vscode\extensions.json Visual Studio Code'da proje klasörü açılırken kullanılan ayarlar dosyası.

Projedeki diğer dosyalar dilinize ve belirli işlevlerinize bağlıdır. Daha fazla bilgi için dilinize yönelik geliştirici kılavuzuna bakın.

Yerel ayarlar dosyası

local.settings.json dosya, yerel geliştirme araçları tarafından kullanılan uygulama ayarlarını ve ayarlarını depolar. local.settings.json dosyasındaki ayarlar yalnızca projenizi yerel olarak çalıştırdığınızda kullanılır. Projenizi Azure'da yayımladığınızda, işlev uygulamasının uygulama ayarlarına gerekli ayarları da eklediğinizden emin olun.

Önemli

local.settings.json bağlantı dizesi gibi gizli diziler içerebileceğinden, bunu hiçbir zaman uzak bir depoda depolamamalısınız. İşlevleri destekleyen araçlar, local.settings.json dosyasındaki ayarları projenizin dağıtıldığı işlev uygulamasındaki uygulama ayarlarıyla eşitlemenin yollarını sağlar.

Yerel ayarlar dosyası şu yapıya sahiptir:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Projeleri yerel olarak çalıştırdığınızda bu ayarlar desteklenir:

Ayar Açıklama
IsEncrypted Bu ayar olarak trueayarlandığında, tüm değerler yerel makine anahtarıyla şifrelenir. Komutlarla kullanılır func settings . Varsayılan değer false olarak belirlenmiştir. Hizmet bağlantı dizesi gibi gizli diziler içerdiğinde yerel bilgisayarınızdaki local.settings.json dosyasını şifrelemek isteyebilirsiniz. Konak çalıştığında ayarların şifresini otomatik olarak çözer. func settings decrypt Yerel olarak şifrelenmiş ayarları okumaya çalışmadan önce komutunu kullanın.
Values Proje yerel olarak çalışırken kullanılan uygulama ayarlarının koleksiyonu. Bu anahtar-değer (dize-dize) çiftleri, Gibi AzureWebJobsStorageAzure'daki işlev uygulamanızdaki uygulama ayarlarına karşılık gelir. Birçok tetikleyici ve bağlama, Blob depolama tetikleyicisi gibi Connection bir bağlantı dizesi uygulama ayarına başvuran bir özelliğe sahiptir. Bu özellikler için dizide tanımlanmış bir uygulama ayarına Values ihtiyacınız vardır. Sık kullanılan ayarların listesi için sonraki tabloya bakın.
Değerler JSON nesneleri veya dizileri değil dizeler olmalıdır. Ayar adları çift alt çizgi (__) içeremez ve iki nokta üst üste (:) içermemelidir. Çift alt çizgi karakterleri çalışma zamanı tarafından ayrılmıştır ve iki nokta üst üste bağımlılık eklemeyi desteklemek için ayrılmıştır.
Host Bu bölümdeki ayarlar, projeleri yerel olarak çalıştırdığınızda İşlevler ana bilgisayar işlemini özelleştirin. Bu ayarlar, Azure'da projeleri çalıştırdığınızda da geçerli olan host.json ayarlarından ayrıdır.
LocalHttpPort Yerel İşlevler ana bilgisayarını (func host start ve func run) çalıştırırken kullanılan varsayılan bağlantı noktasını ayarlar. Komut --port satırı seçeneği bu ayardan önceliklidir. Örneğin, Visual Studio IDE'de çalışırken, "Proje Özellikleri -> Hata Ayıklama" penceresine gidip "Uygulama Bağımsız Değişkenleri" alanında sağlanabilir bir host start --port <your-port-number> komutta bağlantı noktası numarasını açıkça belirterek bağlantı noktası numarasını değiştirebilirsiniz.
CORS Çıkış noktaları arası kaynak paylaşımı (CORS) için izin verilen kaynakları tanımlar. Çıkış noktaları, boşluk içermeyen virgülle ayrılmış bir liste olarak sağlanır. Joker karakter değeri (*) desteklenir ve bu değer herhangi bir kaynaktan gelen isteklere izin verir.
CORSCredentials olarak ayarlandığında trueisteklere izin verir withCredentials .
ConnectionStrings Bir koleksiyon. İşlev bağlamalarınız tarafından kullanılan bağlantı dizesi için bu koleksiyonu kullanmayın. Bu koleksiyon yalnızca genellikle Entity Framework gibi bir yapılandırma dosyasının bölümünden ConnectionStrings bağlantı dizesi alan çerçeveler tarafından kullanılır. Bu nesnedeki bağlantı dizeleri, System.Data.SqlClient sağlayıcı türüyle ortama eklenir. Bu koleksiyondaki öğeler diğer uygulama ayarlarıyla Azure'da yayımlanmaz. Bu değerleri işlev uygulaması ayarlarınızın koleksiyonuna Connection strings açıkça eklemeniz gerekir. İşlev kodunuzda bir SqlConnection oluşturuyorsanız, bağlantı dizesi değerini portaldaki Uygulama Ayarları'nda diğer bağlantılarınızla birlikte depolamanız gerekir.

Aşağıdaki uygulama ayarları yerel olarak çalıştırılırken diziye Values eklenebilir:

Ayar Değerler Açıklama
AzureWebJobsStorage Depolama hesabı bağlantı dizesi veya
UseDevelopmentStorage=true
Azure depolama hesabının bağlantı dizesi içerir. HTTP dışındaki tetikleyiciler kullanılırken gereklidir. Daha fazla bilgi için başvuruya AzureWebJobsStorage bakın.
Azurite Öykünücüsü yerel olarak yüklendiğinde ve olarak ayarladığınızda AzureWebJobsStorage UseDevelopmentStorage=trueCore Tools öykünücüyü kullanır. Daha fazla bilgi için bkz . Yerel depolama öykünücüsü.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Bir işlevi yerel olarak çalıştırırken devre dışı bırakmak için, işlevin adı olan <FUNCTION_NAME> koleksiyona ekleyin"AzureWebJobs.<FUNCTION_NAME>.Disabled": "true". Daha fazla bilgi edinmek için bkz. Azure İşlevleri işlevleri devre dışı bırakma.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
İşlevler çalışma zamanının hedeflenen dilini gösterir. İşlevler çalışma zamanının 2.x ve üzeri sürümleri için gereklidir. Bu ayar, projeniz için Core Tools tarafından oluşturulur. Daha fazla bilgi edinmek için başvuruya FUNCTIONS_WORKER_RUNTIME bakın.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Yerel olarak çalışırken PowerShell 7'nin kullanılacağını gösterir. Ayarlanmadıysa PowerShell Core 6 kullanılır. Bu ayar yalnızca yerel olarak çalıştırılırken kullanılır. PowerShell çalışma zamanı sürümü, portalda ayarlanabilen powerShellVersion Azure'da çalıştırıldığında site yapılandırma ayarı tarafından belirlenir.

Eşitleme ayarları

İşlevlerinizi yerel olarak geliştirirken, uygulamanızın gerektirdiği tüm yerel ayarlar kodunuzun dağıtıldığı işlev uygulamasının uygulama ayarlarında da bulunmalıdır. Geçerli ayarları işlev uygulamasından yerel projenize de indirmeniz gerekebilir. Uygulama ayarlarını Azure portalında el ile yapılandırabilirsiniz ancak aşağıdaki araçlar uygulama ayarlarını projenizdeki yerel ayarlarla eşitlemenize de olanak sağlar:

Tetikleyiciler ve bağlamalar

İşlevlerinizi yerel olarak geliştirirken tetikleyici ve bağlama davranışlarını dikkate almanız gerekir. HTTP tetikleyicileri için, kullanarak http://localhost/yerel bilgisayarda HTTP uç noktasını çağırabilirsiniz. HTTP ile tetiklenmeyen işlevler için yerel olarak çalıştırılacak çeşitli seçenekler vardır:

  • Yerel geliştirme sırasında bağlamaları test etmenin en kolay yolu, canlı Azure hizmetlerini hedefleyen bağlantı dizesi kullanmaktır. local.settings.json dosyasındaki diziye uygun bağlantı dizesi ayarlarını Values ekleyerek canlı hizmetleri hedefleyebilirsiniz. Bunu yaptığınızda, test sırasındaki yerel yürütmeler canlı hizmet verilerini etkiler. Bu nedenle, geliştirme ve test sırasında kullanılacak ayrı hizmetler ayarlamayı ve ardından üretim sırasında farklı hizmetlere geçmeyi göz önünde bulundurun.
  • Depolama tabanlı tetikleyiciler için yerel bir depolama öykünücüsü kullanabilirsiniz.
  • Özel yönetici uç noktalarını kullanarak HTTP olmayan tetikleyici işlevlerini el ile çalıştırabilirsiniz. Daha fazla bilgi için bkz . HTTP ile tetiklenmeyen bir işlevi el ile çalıştırma.

Yerel test sırasında, Çekirdek Araçlar (func.exe) tarafından sağlanan konağı yerel olarak çalıştırıyor olmanız gerekir. Daha fazla bilgi için bkz. Azure İşlevleri Temel Araçlar.

HTTP test araçları

Geliştirme sırasında, HTTP GET yöntemini desteklediklerinde işlev uç noktalarınızdan herhangi birini web tarayıcısından çağırmak kolaydır. Ancak POST veya PUT gibi yükleri destekleyen diğer HTTP yöntemleri için, bu HTTP isteklerini oluşturmak ve işlev uç noktalarınıza göndermek için bir HTTP test aracı kullanmanız gerekir.

Dikkat

İsteklerinizin hassas veriler içermesi gereken senaryolar için verilerinizi koruyan ve tüm hassas verileri genel kullanıma açma riskini azaltan bir araç kullandığınızdan emin olun. Korumanız gereken hassas veriler şunlar olabilir: kimlik bilgileri, gizli diziler, erişim belirteçleri, API anahtarları, coğrafi konum verileri, hatta kişisel bilgiler (PII).

Çevrimdışı veya yerel olarak çalışan, verilerinizi bulutla eşitlemeyen ve çevrimiçi bir hesapta oturum açmanızı gerektirmeyen bir HTTP test aracı seçerek verilerinizin güvenliğini sağlayabilirsiniz. Bazı araçlar, belirli güvenlik özelliklerini uygulayarak verilerinizi yanlışlıkla açığa çıkarmaktan da koruyabilir.

HTTP istek geçmişinizi (hassas bilgiler dahil) merkezi olarak depolayan, en iyi güvenlik uygulamalarını izlemeyen veya veri gizliliği endişelerine uymayen araçları kullanmaktan kaçının.

http isteklerini işlev uç noktalarınıza güvenli bir şekilde göndermek için şu araçlardan birini kullanmayı göz önünde bulundurun:

Yerel depolama öykünücüsü

Yerel geliştirme sırasında, uzak depolama hizmetlerine bağlanmak zorunda kalmadan Azure Depolama bağlamalarıyla (Kuyruk Depolama, Blob Depolama ve Tablo Depolama) işlevleri test ederken yerel Azurite öykünücüsü kullanabilirsiniz. Azurite, Visual Studio Code ve Visual Studio ile tümleştirilir ve npm kullanarak komut isteminden de çalıştırabilirsiniz. Daha fazla bilgi için bkz . Yerel Azure Depolama geliştirmesi için Azurite öykünücüsü kullanma.

local.settings.json dosyasının Values koleksiyonundaki aşağıdaki ayar yerel İşlevler ana bilgisayarına varsayılan AzureWebJobsStorage bağlantı için Azurite kullanmasını söyler:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Bu ayar değeriyle, bağlantı olarak kullanan AzureWebJobsStorage tüm Azure Depolama tetikleyicileri veya bağlamaları yerel olarak çalıştırılırken Azurite'ye bağlanır. Yerel yürütme sırasında depolama öykünmesi kullanılırken şu noktaları göz önünde bulundurun:

  • Azurite yüklü ve çalışıyor olmalıdır.
  • Azure'da yayımlamadan önce Azure hizmetlerine gerçek bir depolama bağlantısıyla test etmelisiniz.
  • Projenizi yayımladığınızda, ayarını olarak UseDevelopmentStorage=trueyayımlamayınAzureWebJobsStorage. Azure'da bu ayar her AzureWebJobsStorage zaman işlev uygulamanız tarafından kullanılan depolama hesabının bağlantı dizesi olmalıdır. Daha fazla bilgi için bkz. AzureWebJobsStorage.

Sonraki adımlar

  • Visual Studio kullanarak derlenmiş C# işlevlerinin (hem işlem içi hem de yalıtılmış çalışan işlemi) yerel olarak geliştirilmesi hakkında daha fazla bilgi edinmek için bkz. Visual Studio kullanarak Azure İşlevleri geliştirme.
  • Mac, Linux veya Windows bilgisayarda VS Code kullanarak işlevlerin yerel olarak geliştirilmesi hakkında daha fazla bilgi edinmek için tercih ettiğiniz dil için Visual Studio Code kullanmaya başlama makalesine bakın:
  • Komut isteminden veya terminalden işlev geliştirme hakkında daha fazla bilgi edinmek için bkz. Azure İşlevleri Core Tools ile çalışma.