İş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_PACKAGE
1
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ı ekleyinSCM_DO_BUILD_DURING_DEPLOYMENT=true
. Linux için ayarı da ekleyinENABLE_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 Failed
bir 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.txt
bir dosya bulunduğundan emin olund:\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
- Windows'da bir işlev uygulamasını çalıştırırken uygulama ayarı
WEBSITE_RUN_FROM_PACKAGE = <URL>
daha kötü bir soğuk başlangıç performansı sağlar ve önerilmez. - 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ğıtmamalısınız. Bunun yerine, Paylaşılan Erişim İmzası (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ış 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'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.
Seçtiğiniz yardımcı programını kullanarak projeniz için bir .zip paketi oluşturun.
Azure portalında depolama hesabınızın adını arayın veya depolama hesaplarında 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ı'ya tıklayın.
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.
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. Kimlik kullanmıyorsanız SAS URL'si oluşturmanız gerekebilir
İşlev uygulamanızı arayın veya İşlev Uygulaması sayfasında bu uygulamayı bulun.
İşlev uygulamanızda Ayarlar altında Yapılandırmalar'ı seçin.
Uygulama Ayarlar sekmesinde Yeni uygulama ayarı'nı seçin
Ad değerini
WEBSITE_RUN_FROM_PACKAGE
girin ve Paketinizin URL'sini Blob Depolama Değer olarak yapıştırın.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:
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:
Blob'un özel erişim için yapılandırıldığından emin olun.
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.
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.