Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 işlemlerindeki kilitlenme 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
Flex Consumption barındırma planındaki işlev uygulamaları varsayılan olarak bir paketten çalıştırılır. Özel yapılandırma yapılması gerekmez.
İşlev uygulamanızın Tüketim, Elastik Premium ve Ayrılmış (App Service) barındırma planlarında bir paketten çalışması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:
Değer | Açıklama |
---|---|
1 |
İşlev uygulamasının, işlev uygulamanızın (Windows) veya c:\home\data\SitePackages (Linux) klasörüne dağıtılan /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 işletim sistemi |
---|---|---|
Tüketim |
1 kesinlikle önerilir. |
Yalnızca <URL> desteklenir. |
Premium |
1 önerilir. |
1 önerilir. |
Adanmış |
1 önerilir. |
1 önerilir. |
Dikkat edilmesi gereken temel noktalar
- Flex Consumption planındaki
WEBSITE_RUN_FROM_PACKAGE
uygulamalara uygulama ayarını eklemeyin. - Paket dosyası .zip biçimlendirilmelidir. Tar ve gzip biçimleri desteklenmez.
- Zip dağıtımı önerilir.
- İşlev uygulamanızı Windows'a dağıtırken
WEBSITE_RUN_FROM_PACKAGE
öğesini1
olarak ayarlamalı ve zip dağıtımıyla yayımlamalısınız. - 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.
- Proje dosyalarınızı açarken dağıtım geçici depolama alanı kullanır. Bu, işlev uygulamanızın paketinizin içeriğini barındırmak için yeterli kullanılabilir geçici depolama alanına sahip olması gerektiği anlamına gelir. Tüketim planı için geçici depolama sınırının plan başına 500 MB olduğunu unutmayın. Geçici depolamayla ilgili sorunları giderme hakkında bilgi edinmek için bkz. Azure Uygulaması Hizmetinde geçici depolama sorunlarını giderme.
- 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 Uzak derleme konusuna bakın.
Not
WEBSITE_RUN_FROM_PACKAGE
Uygulama ayarı MSDeploy VS'de açıklandığı gibi MSDeploy ile çalışmaz. ZipDeploy. Dağıtım sırasında ARM-MSDeploy Deploy Failed
gibi bir hata alırsınız. Bu hatayı çözmek için /MSDeploy
'yi /ZipDeploy
ile değiştirin.
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 Microsoft dışı araçları 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ı başka 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" ifadesini kullanın.
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,
c:\home\data\SitePackages
(Windows) veya/home/data/SitePackages
(Linux) klasöründepackagename.txt
adında bir dosya bulunduğundan emin olun. 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 dosyası 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 c:\home\data\SitePackages
(Linux) klasörüne dağıtmak için /home/data/SitePackages
aynı API'ler kullanılabilir.
Uygulama ayar değeri WEBSITE_RUN_FROM_PACKAGE
olarak ayarlandığında, zip dağıtım API'leri paketinizi 1
(Windows) veya c:\home\data\SitePackages
(Linux) klasörüne kopyalar, böylece dosyalar üzerinde ayıklama işlemi /home/data/SitePackages
(Windows) veya c:\home\site\wwwroot
(Linux) klasörüne yerine yapılmaz. Ayrıca packagename.txt
dosyasını oluşturur. İşlev uygulamanız otomatik olarak yeniden başlatıldıktan sonra, paket wwwroot
konumuna salt okunur bir dosya sistemi olarak bağlanır. 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, fonksiyon uygulaması yeniden başlatılır. 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, kullanın
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. Bu seçenek Esnek Tüketim planında desteklenmez.
URL'den dağıtmayla ilgili dikkat edilmesi gerekenler
- Uygulamalarda
WEBSITE_RUN_FROM_PACKAGE = <URL>
Flex Consumption planı kullanmayın. Bu seçenek desteklenmez. - Windows üzerinde çalışan işlev uygulamaları, uygulama paketi aracılığıyla bir URL uç noktasına dağıtıldığında soğuk başlangıç zamanında
WEBSITE_RUN_FROM_PACKAGE = <URL>
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.
- Azure Blob Depolama'ya paketlerinizi genel blob olarak 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. Blob Depolama'daki bir kapsayıcıya dağıtım yapmak için aşağıdaki işlemleri uygulayın:
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.
Yükleme tamamlandıktan sonra yüklediğiniz blob dosyasını 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
WEBSITE_RUN_FROM_PACKAGE
için değeri girin ve Değer için paketinizin URL'sini Blob Depolama'ya yapıştırın.Uygula'yı seçin, ardından ayarı kaydetmek ve işlev uygulamasını yeniden başlatmak için Uygula ve Onayla'yı seçin.
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'yı Microsoft Entra ID ile istekleri yetkilendirmek için 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 yok sayılmasıyla eşdeğer bir değer olarak SystemAssigned
değerini de kabul 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 Blob verilerine erişim için Azure rolü atamayı inceleyin.
WEBSITE_RUN_FROM_PACKAGE
Uygulama ayarını paketin blob URL'sine ayarlayın. Bu URL genelliklehttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
şeklindedir veya benzeridir.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, değer olarak "SystemAssigned" değerini de kabul edebilir, ancak bu ayarı tamamen atlamakla aynı anlama gelir." Kaynak kimliği, Azure'daki bir kaynağın standart gösterimidir. Kullanıcı tarafından atanan yönetilen kimlik için bu olacaktır/subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name
. Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliği, Ayarlar ->Özellikler ->kullanıcı tarafından atanan yönetilen kimliğin Kimlik bölümünden alınabilir.