Aracılığıyla paylaş


İş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 c:\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ı

İşlevleri 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 dosyaları doğrular.
  • Azure Resource Manager dağıtımlarının performansını artırır.
  • Özellikle büyük npm paket ağaçlarına sahip JavaScript işlevleri için soğuk başlangıç sürelerini azaltır.

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 uygulamanıza bir WEBSITE_RUN_FROM_PACKAGE uygulama ayarı ekleyin. WEBSITE_RUN_FROM_PACKAGE Uygulama ayarı aşağıdaki değerlerden birine sahip olabilir:

Value Açıklama
1 İşlev uygulamasının, işlev uygulamanızın (Windows) veya /home/data/SitePackages (Linux) klasörüne dağıtılan c:\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 tablo, belirli bir işletim sistemine ve barındırma planına dağıtım için önerilen WEBSITE_RUN_FROM_PACKAGE değerleri gösterir:

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çimlendirilmelidir. Tar ve gzip biçimleri desteklenmez.
  • Zip dağıtımı önerilir.
  • İşlev uygulamanızı Windows'a dağıtırken olarak ayarlamanız WEBSITE_RUN_FROM_PACKAGE 1 ve zip dağıtımıyla yayımlamanız gerekir.
  • Bir paketten çalıştırdığınızda wwwroot , klasör salt okunur olur ve bu dizine dosya yazarsanız bir hata alırsınız. Dosyalar Azure portalında da salt okunur durumdadır.
  • Dağıtım paketi dosyasının boyutu üst sınırı 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 için bkz . Uzak derleme.

Not

WEBSITE_RUN_FROM_PACKAGE Uygulama ayarı MSDeploy VS'de açıklandığı gibi MSDeploy ile çalışmaz. ZipDeploy. Dağıtım sırasında gibi ARM-MSDeploy Deploy Failedbir hata alırsınız. Bu hatayı düzeltmek için yanıt vermemeye devam edin /MSDeploy /ZipDeploy.

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.

Zip arşivi oluşturma

Dağıttığınız zip arşivi, işlev uygulamanızı çalıştırmak için gereken tüm dosyaları içermelidir. Yerleşik .zip sıkıştırma işlevini veya üçüncü taraf araçlarını kullanarak İşlevler proje klasörünün içeriğinden el ile zip arşivi oluşturabilirsiniz.

Arşiv, ayıklanan klasörün kökünde host.json dosyasını içermelidir. İşlev uygulaması için seçilen dil yığını ek gereksinimler oluşturur:

Önemli

Dağıtım için derlenmiş çıkış oluşturan diller için, proje klasörünün tamamını değil yayımlamayı planladığınız çıkış klasörünün içeriğini sıkıştırdığınızdan emin olun. İşlevler zip arşivinin içeriğini ayıkladığında, host.json dosyanın paketin kökünde bulunması gerekir.

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 üzerinde çalıştırma 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 c:\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 wwwroot dizine dağıtmanızı sağlayan bir Azure Uygulaması Hizmeti özelliğidir. Proje, .zip dağıtım dosyası olarak paketlenmiş. Paketinizi (Windows) veya /home/data/SitePackages (Linux) klasörüne dağıtmak için c:\home\data\SitePackages aynı API'ler kullanılabilir.

Uygulama ayarı değerini olarak ayarladığınızdaWEBSITE_RUN_FROM_PACKAGE, zip dağıtım API'leri dosyaları (Windows) veya /home/data/SitePackages (Linux) olarak ayıklamak yerine paketinizi c:\home\data\SitePackages (Windows) veya /home/site/wwwroot (Linux) klasörüne c:\home\site\wwwroot kopyalar.1 Ayrıca dosyayı oluşturur packagename.txt . İşlev uygulamanız otomatik olarak 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ı.

Not

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 yazma hakkında bilgi için yazma işlevlerini durum bilgisi olmayan olarak ayarlayın.

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ına sahip Linux tarafından barındırılan bir paketten çalıştırmak için desteklenen tek seçenektir.

URL'den dağıtmayla ilgili dikkat edilmesi gerekenler

  • Windows üzerinde çalışan işlev uygulamaları, uygulama paketi aracılığıyla WEBSITE_RUN_FROM_PACKAGE = <URL>bir URL uç noktasına dağıtıldığında soğuk başlangıç zamanında küçük bir artış yaşar.
  • Bir URL belirttiğinizde, güncelleştirilmiş bir paketi yayımladıktan sonra tetikleyicileri el ile eşitlemeniz de gerekir.
  • İşlevler çalışma zamanının paket URL'sine erişme izinleri olmalıdır.
  • Paketinizi genel blob olarak Azure Blob Depolama dağıtmayın. Bunun yerine, paylaşılan erişim imzası (SAS) içeren özel bir kapsayıcı kullanın veya İşlevler çalışma zamanının pakete erişmesini sağlamak için yönetilen kimlik kullanın.
  • Dağıtım için kullanılan TÜM SAS URL'lerini korumanız gerekir. SAS'nin süresi dolduğunda paket artık dağıtılamaz. Bu durumda, yeni bir SAS oluşturmanız ve işlev uygulamanızda ayarı güncelleştirmeniz gerekir. Yönetilen kimlik kullanarak bu yönetim yükünü ortadan kaldırabilirsiniz.
  • Premium planda çalışırken soğuk başlangıçları ortadan kaldırdığınızdan emin olun.
  • Ayrılmış bir planda çalışırken AlwaysOn'ı etkinleştirdiğinizden emin olun.
  • depolama hesabınızdaki blob kapsayıcılarına paket dosyalarını yüklemek için Azure Depolama Gezgini kullanabilirsiniz.

Paketi Blob Depolama'ya el ile yükleme

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

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

  2. Azure portalında depolama hesabı adınızı arayın veya depolama hesapları listesinden 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ı'yı seçin.

  5. Yeni kapsayıcı sayfasında bir Ad (örneğin, dağıtımlar) sağlayın, Anonim 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. Yönetilen kimlik kullanmıyorsanız BIR 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'ı genişletin ve ortam değişkenleri'ne tıklayın.

  10. Uygulama ayarları sekmesinde + Ekle'yi seçin.

  11. Ad değerini WEBSITE_RUN_FROM_PACKAGE girin ve Değer için paketinizin URL'sini Blob Depolama'ya yapıştırın.

  12. Uygula'yı ve ardından Uygula ve Onayla'yı seçerek ayarı kaydedin ve işlev uygulamasını yeniden başlatın.

Artık azureda işlevinizi çalıştırarak dağıtım paketi .zip dosyasının dağıtımının başarılı olduğunu doğrulayabilirsiniz.

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

Azure Blob Depolama Microsoft Entra Id ile istekleri yetkilendirilecek şekilde yapılandırabilirsiniz. Bu yapılandırma, süresi dolan bir 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 . Ayar, ayarın atlanmasıyla eşdeğer olan bir değer olarak da kabul SystemAssigned edebilir.

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 Blobu 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 URL genellikle formda veya benzer bir urldir https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} .