İşlevlerinizi Azure'daki bir paket dosyasından çalıştırma

Azure'da işlevlerinizi doğrudan işlev uygulamanızdaki bir dağıtım paketi dosyasından çalıştırabilirsiniz. Diğer seçenek, dosyalarınızı işlev uygulamanızın d:\home\site\wwwroot (Windows) veya /home/site/wwwroot (Linux) dizinine dağıtmaktır.

Bu makalede işlevlerinizi bir paketten çalıştırmanın avantajları açıklanmaktadır. Ayrıca işlev uygulamanızda bu işlevselliğin nasıl etkinleştirileceği de gösterilir.

Paket dosyasından çalıştırmanın avantajları

Paket dosyasından çalıştırmanın çeşitli avantajları vardır:

  • Dosya kopyalama kilitleme sorunlarının riskini azaltır.
  • Bir üretim uygulamasına dağıtılabilir (yeniden başlatma ile).
  • Uygulamanızda çalışan dosyalardan emin olabilirsiniz.
  • Azure Resource Manager dağıtımlarının performansını artırır.
  • Özellikle büyük npm paket ağaçları olan JavaScript işlevleri için soğuk başlangıç sürelerini azaltabilir.

Daha fazla bilgi için bu duyuruya bakın.

İşlevlerin bir paketten çalıştırılmasını etkinleştirme

İşlev uygulamanızın bir paketten çalıştırılmasını sağlamak için işlev uygulaması ayarlarınıza bir WEBSITE_RUN_FROM_PACKAGE ayar ekleyin. Ayar WEBSITE_RUN_FROM_PACKAGE aşağıdaki değerlerden birine sahip olabilir:

Değer Tanım
1 İşlev uygulamasının, işlev uygulamanızın (Windows) veya /home/data/SitePackages (Linux) klasörüne dağıtılan d:\home\data\SitePackages bir yerel paket dosyasından çalıştırıldığını gösterir.
<URL> Çalıştırmak istediğiniz paket dosyasının uzak konumu olan bir URL ayarlar. Tüketim planında Linux üzerinde çalışan işlevler uygulamaları için gereklidir.

Aşağıdaki tabloda, belirli bir işletim sistemine ve barındırma planına dağıtım için önerilen WEBSITE_RUN_FROM_PACKAGE seçenekler gösterilmektedir:

Barındırma planı Windows Linux
Tüketim 1 kesinlikle önerilir. Yalnızca <URL> desteklenir.
Premium 1 önerilir. 1 önerilir.
Adan -mış 1 önerilir. 1 önerilir.

Dikkat edilmesi gereken temel noktalar

  • Paket dosyası .zip biçiminde olmalıdır. Tar ve gzip biçimleri şu anda desteklenmiyor.
  • Zip dağıtımı önerilir.
  • İşlev uygulamanızı Windows'a dağıtırken olarak ayarlamanız WEBSITE_RUN_FROM_PACKAGE1 ve zip dağıtımıyla yayımlamanız gerekir.
  • Bir paketten çalıştırdığınızda wwwroot klasör salt okunur hale gelir ve bu dizine dosya yazarken hata alırsınız. Dosyalar Azure portalında da salt okunur durumdadır.
  • Dağıtım paketi dosyasının boyut üst sınırı şu anda 1 GB'tır.
  • Dağıtım paketinden çalışırken yerel önbelleği kullanamazsınız.
  • Projenizin uzak derleme kullanması gerekiyorsa uygulama ayarını kullanmayın WEBSITE_RUN_FROM_PACKAGE . Bunun yerine dağıtım özelleştirme uygulaması ayarını ekleyin SCM_DO_BUILD_DURING_DEPLOYMENT=true . Linux için ayarı da ekleyin ENABLE_ORYX_BUILD=true . Daha fazla bilgi edinmek için bkz . Uzak derleme.

Dekont

WEBSITE_RUN_FROM_PACKAGE burada açıklandığı gibi MSDeploy ile çalışmaz. Dağıtım sırasında gibi ARM-MSDeploy Deploy Failedbir hata alırsınız. /MSDeploy değerini /ZipDeploy olarak değiştirdiğinizde bu hata çözülür.

WEBSITE_RUN_FROM_PACKAGE ayarını ekleme

İşlev uygulaması ayarlarını eklemenin, güncelleştirmenin ve silmenin birkaç yolu vardır:

İşlev uygulaması ayarlarında yapılan değişiklikler, işlev uygulamanızın yeniden başlatılmasını gerektirir.

WEBSITE_RUN_FROM_PACKAGE = 1 kullanma

Bu bölümde, işlev uygulamanızı yerel paket dosyasından çalıştırma hakkında bilgi sağlanır.

Yerinde paketten dağıtma konusunda dikkat edilmesi gerekenler

  • Tüketim planında barındırılan Linux dışında, dağıtım paketinden çalıştırmak için önerilen seçenek, yerinde paket kullanmaktır.
  • Zip dağıtımı , sitenize bir dağıtım paketi yüklemenin önerilen yoludur.
  • Zip dağıtımı kullanmadığınızda (Windows) veya /home/data/SitePackages (Linux) klasöründe adlı packagename.txtbir dosya bulunduğundan emin olun d:\home\data\SitePackages . Bu dosya, şu anda çalışmakta olan bu klasördeki paket dosyasının yalnızca herhangi bir boşluk olmadan adını içerir.

Zip dağıtımı ile tümleştirme

Zip dağıtımı, işlev uygulaması projenizi dizine dağıtmanızı sağlayan Azure Uygulaması Hizmeti'nin wwwroot bir özelliğidir. Proje bir .zip dağıtım dosyası olarak paketlenmiş. Paketinizi (Windows) veya /home/data/SitePackages (Linux) klasörüne dağıtmak için d:\home\data\SitePackages aynı API'ler kullanılabilir.

WEBSITE_RUN_FROM_PACKAGE uygulama ayarı değeriyle1, zip dağıtım API'leri paketinizi d:\home\data\SitePackages (Windows) veya /home/data/SitePackages (Linux) klasörüne dosyaları ayıklamak yerine (Windows) veya /home/site/wwwroot (Linux) klasörüne d:\home\site\wwwroot kopyalar. Ayrıca dosyayı oluşturur packagename.txt . Yeniden başlatıldıktan sonra paket salt okunur bir dosya sistemi olarak bağlanır wwwroot . Zip dağıtımı hakkında daha fazla bilgi için bkz. Azure İşlevleri için zip dağıtımı.

Dekont

Bir dağıtım gerçekleştiğinde işlev uygulamasının yeniden başlatılması tetikler. Dağıtım sırasında çalışmakta olan işlev yürütmeleri sonlandırılır. Durum bilgisi olmayan ve savunma işlevleri yazmayı öğrenmek için lütfen Azure İşlevleri performansını ve güvenilirliğini geliştirme'yi gözden geçirin.

WEBSITE_RUN_FROM_PACKAGE = URL kullanma

Bu bölümde, işlev uygulamanızı URL uç noktasına dağıtılan bir paketten çalıştırma hakkında bilgi sağlanır. Bu seçenek, Tüketim planında barındırılan Linux'ta bir paketten çalıştırmak için desteklenen tek seçenektir.

URL'den dağıtmayla ilgili dikkat edilmesi gerekenler

Paketi Blob Depolama'a el ile yükleme

URL seçeneğini kullanırken sıkıştırılmış bir paket dağıtmak için bir .zip sıkıştırılmış dağıtım paketi oluşturup hedefe yüklemeniz gerekir. Bu örnek, Blob Depolama'daki bir kapsayıcıya dağıtılır.

  1. Seçtiğiniz yardımcı programını kullanarak projeniz için bir .zip paketi oluşturun.

  2. Azure portalında depolama hesabınızın adını arayın veya depolama hesaplarında bu adı bulun.

  3. Depolama hesabında Veri depolama altında Kapsayıcılar'ı seçin.

  4. Hesabınızda yeni bir Blob Depolama kapsayıcısı oluşturmak için + Kapsayıcı'ya tıklayın.

  5. Yeni kapsayıcı sayfasında bir Ad (örneğin, "dağıtımlar") sağlayın, Genel erişim düzeyinin Özel olduğundan emin olun ve Oluştur'u seçin.

  6. Oluşturduğunuz kapsayıcıyı seçin, Karşıya Yükle'yi seçin, projenizle oluşturduğunuz .zip dosyasının konumuna gidin ve Karşıya Yükle'yi seçin.

  7. Karşıya yükleme tamamlandıktan sonra karşıya yüklenen blob dosyanızı seçin ve URL'yi kopyalayın. Kimlik kullanmıyorsanız SAS URL'si oluşturmanız gerekebilir

  8. İşlev uygulamanızı arayın veya İşlev Uygulaması sayfasında bu uygulamayı bulun.

  9. İşlev uygulamanızda Ayarlar altında Yapılandırmalar'ı seçin.

  10. Uygulama Ayarlar sekmesinde Yeni uygulama ayarı'nı seçin

  11. Ad değerini WEBSITE_RUN_FROM_PACKAGEgirin ve Paketinizin URL'sini Blob Depolama Değer olarak yapıştırın.

  12. Tamam'ı seçin. Ardından Kaydet Devam'ı> seçerek ayarı kaydedin ve uygulamayı yeniden başlatın.

Artık dağıtım paketi .zip dosyasını kullanarak dağıtımın başarılı olduğunu doğrulamak için işlevinizi Azure'da çalıştırabilirsiniz.

Aşağıda, Azure Blob depolamada barındırılan bir .zip dosyasından çalışacak şekilde yapılandırılmış bir işlev uygulaması gösterilmektedir:

WEBSITE_RUN_FROM_ZIP app setting

Yönetilen kimlik kullanarak Azure Blob Depolama'dan paket getirme

Azure Blob Depolama, Microsoft Entra Id ile istekleri yetkilendirmek için yapılandırılabilir. Bu, süre sonuyla SAS anahtarı oluşturmak yerine uygulamanın yönetilen kimliğine güvenebileceğiniz anlamına gelir. Varsayılan olarak, uygulamanın sistem tarafından atanan kimliği kullanılır. Kullanıcı tarafından atanan bir kimlik belirtmek isterseniz, uygulama ayarını bu kimliğin kaynak kimliğine ayarlayabilirsiniz WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID . Bu ayar değer olarak "SystemAssigned" değerini de kabul edebilir, ancak bu ayar tamamen atlanmasıyla aynıdır.

Paketin kimliği kullanılarak getirilebilmesini sağlamak için:

  1. Blob'un özel erişim için yapılandırıldığından emin olun.

  2. Kimliğe, paket blobu üzerinde kapsamı olan Depolama Blob Veri Okuyucusu rolünü verin. Rol atamasını oluşturma hakkında ayrıntılı bilgi için bkz . Blob verilerine erişim için Azure rolü atama.

  3. WEBSITE_RUN_FROM_PACKAGE Uygulama ayarını paketin blob URL'sine ayarlayın. Bu büyük olasılıkla "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" veya benzeri bir biçimde olacaktır.

Sonraki adımlar