İş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ı ekleyinSCM_DO_BUILD_DURING_DEPLOYMENT=true
. Linux için ayarı da ekleyinENABLE_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 Failed
bir 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:
- .NET (yalıtılmış çalışan modeli)
- .NET (işlem içi model)
- Java
- JavaScript
- TypeScript
- PowerShell
- Python
Ö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.txt
bir dosya bulunduğundan emin olunc:\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:
Seçtiğiniz yardımcı programı kullanarak projeniz için bir .zip paketi oluşturun.
Azure portalında depolama hesabı adınızı arayın veya depolama hesapları listesinden bu adı bulun.
Depolama hesabında Veri depolama altında Kapsayıcılar'ı seçin.
Hesabınızda yeni bir Blob Depolama kapsayıcısı oluşturmak için + Kapsayıcı'yı seçin.
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.
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.
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.
İşlev uygulamanızı arayın veya İşlev Uygulaması sayfasında bu uygulamayı bulun.
İşlev uygulamanızda Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın.
Uygulama ayarları sekmesinde + Ekle'yi seçin.
Ad değerini
WEBSITE_RUN_FROM_PACKAGE
girin ve Değer için paketinizin URL'sini Blob Depolama'ya yapıştırın.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:
Blob'un özel erişim için yapılandırıldığından emin olun.
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.
WEBSITE_RUN_FROM_PACKAGE
Uygulama ayarını paketin blob URL'sine ayarlayın. Bu URL genellikle formda veya benzer bir urldirhttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
.