Aracılığıyla paylaş


Azure İşlevlerini yerel olarak kodlayın ve test edin

Mümkün olduğunda yerel geliştirme ortamında Azure İşlevleri kod projenizi oluşturup doğrulamanız gerekir. Azure İşlevleri Temel Araçları tümleşik geliştirme, hata ayıklama ve dağıtımlar için popüler geliştirme araçlarıyla tümleştirilen Azure İşlevleri'nin yerel çalışma zamanı sürümünü sağlar. Yerel işlevleriniz canlı Azure hizmetlerine bile bağlanabilir.

Bu makalede, yerel geliştirme için local.settings.json dosyasıyla çalışma gibi bazı paylaşılan yönergeler sağlanır. Ayrıca geliştirme ortamına özgü yönergelere de bağlantı sağlar.

Tavsiye

İşlevleri yerel olarak geliştirme hakkında ayrıntılı bilgileri bağlantılı IDE'ye özgü kılavuz makalelerinde bulabilirsiniz.

Yerel geliştirme ortamları

Yerel bilgisayarınızda işlevleri geliştirme yönteminiz dilinize ve araç tercihlerinize bağlıdır. Makalenin üst kısmında tercih ettiğiniz dili seçtiğinizden emin olun.

Tavsiye

Yerel geliştirme işlemlerinin tamamı, yerel ortamda hata ayıklama sürecinde İşlevler çalışma zamanını sağlamak amacıyla Azure Functions Core Tools'a dayanır.

İşlevleri tercih ettiğiniz dilde yerel olarak kodlarken bu geliştirme ortamlarını kullanabilirsiniz:

Environment Description
Visual Studio Azure İşlevleri araçları Visual Studio'nunAzure geliştirme iş yüküne dahildir. C# işlev kodunuzu derlemenize ve Azure'a .NET sınıf kitaplığı olarak dağıtmanıza olanak tanır. Yerel test için Temel Araçları içerir. Daha fazla bilgi edinmek için bkz. Visual Studio kullanarak Azure'da ilk C# işlevinizi oluşturma
Visual Studio Code Visual Studio Code için Azure İşlevleri uzantısı, Visual Studio Code'a İşlevler desteği ekler. Çekirdek Araçları gerektirir. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Visual Studio Code kullanarak ilk işlevinizi oluşturma.
Komut istemi veya terminal Azure İşlevleri Temel Araçları , yerel geliştirmeyi etkinleştiren işlevler oluşturmaya yönelik temel çalışma zamanı ve şablonları sağlar. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için komut satırından Bkz. Azure'da C# işlevi oluşturma.
Environment Description
Maven Maven arketipi, Java işlevlerinin geliştirilmesini sağlamak için Temel Araçlar'ı kullanır. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Java ve Maven ile ilk işlevinizi oluşturma.
Visual Studio Code Visual Studio Code için Azure İşlevleri uzantısı, Visual Studio Code'a İşlevler desteği ekler. Çekirdek Araçları gerektirir. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Visual Studio Code kullanarak ilk işlevinizi oluşturma.
IntelliJ IDEA Maven arketipi ve Çekirdek Araçları, IntelliJ kullanarak işlevlerinizi geliştirmenizi sağlar. Daha fazla bilgi için bkz. IntelliJ kullanarak Azure'da ilk Java işlevinizi oluşturma.
Eclipse Maven arketipi ve Temel Araçlar, Eclipse kullanarak işlevlerinizi geliştirmenizi sağlar. Daha fazla bilgi edinmek için bkz. Ecplise kullanarak Azure'da ilk Java işlevinizi oluşturma.
Environment Description
Visual Studio Code Visual Studio Code için Azure İşlevleri uzantısı, Visual Studio Code'a İşlevler desteği ekler. Çekirdek Araçları gerektirir. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Visual Studio Code kullanarak ilk işlevinizi oluşturma.
Komut istemi veya terminal Azure İşlevleri Temel Araçları , yerel geliştirmeyi etkinleştiren işlevler oluşturmaya yönelik temel çalışma zamanı ve şablonları sağlar. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için komut satırından Bkz. Azure'da Node.js işlevi oluşturma.
Environment Description
Visual Studio Code Visual Studio Code için Azure İşlevleri uzantısı, Visual Studio Code'a İşlevler desteği ekler. Çekirdek Araçları gerektirir. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Visual Studio Code kullanarak ilk işlevinizi oluşturma.
Komut istemi veya terminal Azure İşlevleri Temel Araçları , yerel geliştirmeyi etkinleştiren işlevler oluşturmaya yönelik temel çalışma zamanı ve şablonları sağlar. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için komut satırından Bkz. Azure'da PowerShell işlevi oluşturma.
Environment Description
Visual Studio Code Visual Studio Code için Azure İşlevleri uzantısı, Visual Studio Code'a İşlevler desteği ekler. Çekirdek Araçları gerektirir. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için bkz. Visual Studio Code kullanarak ilk işlevinizi oluşturma.
Komut istemi veya terminal Azure İşlevleri Temel Araçları , yerel geliştirmeyi etkinleştiren işlevler oluşturmaya yönelik temel çalışma zamanı ve şablonları sağlar. Linux, macOS ve Windows'da geliştirmeyi destekler. Daha fazla bilgi edinmek için komut satırından Bkz. Azure'da Python işlevi oluşturma.

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ı Description
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ı

Dosya, local.settings.json uygulama ayarları ve yerel geliştirme araçları tarafından kullanılan diğer ayarları depolar. Dosyadaki local.settings.json 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.

Important

Dosya bağlantı local.settings.json dizeleri gibi gizli diziler içerebileceğinden, kaynak denetimine işleme konusunda dikkatli olmanız gerekir. İşlevleri destekleyen araçlar, dosyadaki local.settings.json ayarları projenizin dağıtıldığı işlev uygulamasındaki uygulama ayarlarıyla eşitlemenin yollarını sağlar.

Dosya local.settings.json ş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:

Setting Description
IsEncrypted Bu ayar olarak trueayarlandığında, tüm değerler yerel makine anahtarıyla şifrelenir. func settings komutlarıyla kullanılır. Varsayılan değer false olarak belirlenmiştir. Hizmet bağlantı dizeleri gibi gizli diziler içerdiğinde yerel bilgisayarınızdaki local.settings.json dosyasını şifrelemek isteyebilirsiniz. Sunucu ç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, Azure'daki işlev uygulamanızda AzureWebJobsStorage gibi uygulama ayarlarına karşılık gelir. Birçok tetikleyici ve bağlama, Connection için gibi bir bağlantı dizesi uygulama ayarını referans alan 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 karakteri bağımlılık enjeksiyonunu desteklemek için ayrılmıştır.
Host Bu bölümdeki ayarlar, projeleri yerel olarak çalıştırdığınızda İşlevler ana bilgisayar sürecini özelleştirmek içindir. 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 Kaynaklar arası paylaşıma (CORS) izin verilen kaynakları tanımlar. Kökenler, 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 true olarak ayarlandığında, withCredentials isteklerine izin verir.
ConnectionStrings Bir koleksiyon. İşlev bağlamalarınız tarafından kullanılan bağlantı dizeleri için bu koleksiyonu kullanmayın. Bu koleksiyon yalnızca genellikle ConnectionStrings gibi bir yapılandırma dosyasının bölümünden bağlantı dizeleri 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:

Setting Values Description
AzureWebJobsStorage Depolama hesabı bağlantı dizesi veya
UseDevelopmentStorage=true
Azure depolama hesabının bağlantı dizesini 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 AzureWebJobsStorageUseDevelopmentStorage=true olarak ayarlandığında, Core 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 "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" koleksiyona ekleyin<FUNCTION_NAME>. Daha fazla bilgi edinmek için bkz. Azure İşlevleri'nde 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 FUNCTIONS_WORKER_RUNTIME referansına 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ü, powerShellVersion Azure'da çalıştırıldığında site yapılandırma ayarı tarafından belirlenir.

dizisindeki values değerleri işlev kodunuzda ortam değişkenleri olarak kullanmayı öğrenmek için geliştirici kılavuzundaki Ortam değişkenleri bölümüne bakın.

dizisindeki values değerleri işlev kodunuzda ortam değişkenleri olarak kullanmayı öğrenmek için geliştirici kılavuzundaki Ortam değişkenleri bölümüne bakın.

dizisindeki values değerleri işlev kodunuzda ortam değişkenleri olarak kullanmayı öğrenmek için geliştirici kılavuzundaki Ortam değişkenleri bölümüne bakın.

dizisindeki values değerleri işlev kodunuzda ortam değişkenleri olarak kullanmayı öğrenmek için geliştirici kılavuzundaki Ortam değişkenleri bölümüne bakın.

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

Fonksiyonlarınızı yerel olarak geliştirirken, tetikleyici ve bağlama davranışlarını dikkate almanız gerekir. HTTP tetikleyicileri için, http://localhost/ kullanarak yerel bilgisayardaki HTTP uç noktasını arayabilirsiniz. HTTP olmayan tetikleyicili fonksiyonlar için yerel olarak çalıştırmak amacıyla birden fazla seçenek vardır.

  • Yerel geliştirme sırasında bağlamaları test etmenin en kolay yolu, canlı Azure hizmetlerini hedefleyen bağlantı dizgelerini kullanmaktır. Yerel.settings.json dosyasındaki Values dizisinde uygun bağlantı dizesi ayarlarını ekleyerek canlı hizmetleri hedefleyebilirsiniz. Bunu yaptığınızda, test sırasındaki yerel yürütmeler üretim hizmetlerinizi etkileyebilir. Bunun yerine, 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.
  • HTTP olmayan tetikleyici fonksiyonları, özel yönetici uç noktalarını kullanarak manuel olarak ç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.

Caution

İ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 veriler.

Ç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 emülatörü

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 koleksiyonundaki Values 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, AzureWebJobsStorage ayarını UseDevelopmentStorage=true olarak yayımlamayın. Azure'da AzureWebJobsStorage bu ayar her 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.