Belirtilen bir OSS dizinine yüklenen ZIP paketlerini otomatik olarak çıkarmak için açma kuralları yapılandırın. Function Compute paketleri açar ve çıkarılan nesneleri hedef dizine kaydeder.
Önkoşul
Function Compute etkinleştirilmiş olmalıdır. Etkinleştirmek için Function Compute sayfasına gidin.
Senaryolar
Toplu yükleme: Çok sayıda küçük nesneyi tek bir ZIP paketinde sıkıştırarak yükleme süresini azaltın.
Kaynak bütünlüğü: İlgili dosyaları tek bir ZIP paketinde birleştirerek tüm bileşenlerin birlikte yüklendiğinden emin olun.
Dizin yapısının korunması: Yerel bir dizin ağacını ZIP dosyası olarak paketleyip OSS'e yükleyin. Açma kuralı, orijinal klasör yapısını paket içinde yeniden oluşturur.
İçerik dağıtımı: Nesneleri ZIP paketi halinde sıkıştırıp OSS'e yükleyin. Paket belirtilen dizinlere açılarak iletim süresi ve bant genişliği kullanımı azaltılır.
Çalışma mekanizması
OSS, yüklenen ZIP paketlerini açmak için Function Compute hizmetini kullanır. Aşağıdaki şekil bu süreci göstermektedir.
Bir ZIP paketi, açma kuralındaki Prefix parametresiyle belirtilen dizine yüklenir.
-
Function Compute tetikleyicisi çağrılır.
Açma kuralı yapılandırırken, OSS'in Function Compute hizmetine erişmek için AliyunOSSEventNotificationRole rolünü kullanabilmesi adına tetikleyiciyi yetkilendirin.
-
Function Compute ZIP paketini açar ve çıkarılan nesneleri belirtilen OSS dizinine kaydeder.
Açma kuralı yapılandırırken, Function Compute hizmetinin OSS paketinden okuma ve yazma yapmasına izin verin.
Faturalama
ZIP paketi açma işlemi hem OSS hem de Function Compute tarafında ücrete tabidir. OSS ile Function Compute arasında dahili uç noktalar üzerinden gerçekleşen veri aktarımları ücretsizdir.
OSS tarafında API çağrıları ve nesne depolama için ücretlendirilirsiniz. Daha fazla bilgi için bkz. Faturalamaya genel bakış.
-
Function Compute tarafında, çalıştırma süresine bağlı olarak vCPU kullanımı, bellek kullanımı ve disk kullanımı için ücretlendirilirsiniz. Daha fazla bilgi için bkz. Faturalamaya genel bakış.
Örneğin, bir ZIP paketi açma görevi 3 GB belleğe ve 2 çekirdekli vCPU'ya sahip bir Function Compute örneği kullanıyorsa ve açma işleminin tamamlanması 5 dakika sürüyorsa, geçici olarak oluşturulan depolama dosyaları için ayrılan varsayılan disk boyutu 10 GB ise, Function Compute tarafından tahsil edilen ücretler aşağıdaki formüle göre hesaplanır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Disk kullanımı = Disk kapasitesi (GB) × Çalıştırma süresi (saniye) Not: 512 MB'a kadar olan disk kullanımı ücretsizdir. |
|
Sınırlamalar
Depolama sınıfları: Cold Archive nesnesi, açılabilmesi için önce geri yüklenmelidir. Arşiv nesnelerinin gerçek zamanlı erişiminin etkinleştirilmediği bir paketteki Arşiv nesnesi de açılmadan önce geri yüklenmelidir.
Nesne ve dizin adlandırma: Nesne ve dizin adlarını UTF-8 veya GB 2312 kodlamasıyla kodlayın. Diğer kodlamalar açma hatalarına veya bozuk isimlere neden olabilir.
Nesne boyutu ve açma süresi: ZIP paketindeki her nesne 1 GB'ı aşamaz. Gerektiğinde açma süresini artırabilirsiniz. Daha fazla bilgi için bkz. Zaman aşımı nedeniyle bir ZIP paketi açılamazsa ne yapmalıyım?
ZIP paketi açma kuralı yapılandırma
OSS konsolunda oturum açın.
Sol gezinme bölmesinde Buckets seçeneğini tıklayın. Görüntülenen sayfada hedef paketin adını tıklayın.
Sol gezinme ağacında yolunu izleyin.
-
Decompress ZIP Package düğmesini tıklayın. Decompress ZIP Package panelinde aşağıdaki tabloda açıklanan parametreleri yapılandırın.
Parametreler
Parametre
Gerekli
Açıklama
Service Authorization
Evet
Function Compute hizmetinin OSS'ten okuma ve yazma yapmasına ve işlevleri çalıştırmasına izin verin.
Authorize düğmesini tıklayın. Görüntülenen sayfada yetkilendirmeyi tamamlayın.
Authorize Trigger
Evet
OSS'in Function Compute hizmetine erişmesine izin verin.
Authorize düğmesini tıklayın. Görüntülenen sayfada yetkilendirmeyi tamamlayın. OSS, Function Compute hizmetine erişim için yetkilendirildiyse, Authorize Trigger parametresi yerine Trigger Role parametresi görüntülenir.
Prefix
Hayır
Açmayı tetiklemek için ZIP paketi adlarının eşleşmesi gereken ön ek. Bu ön eki içeren ada sahip bir ZIP paketi yüklerseniz veya ön ekle belirtilen dizine yüklerseniz, Function Compute paketi açar. Belirtilmezse, pakete yüklenen tüm ZIP paketleri açılır.
ÖnemliBu parametreyi belirtmezseniz açma görevleri tekrar tekrar yürütülebilir. Bu nedenle, her açma kuralı için bir ön ek belirtmenizi öneririz. Daha fazla bilgi için bkz. Tetikleyici döngülerinden nasıl kaçınabilirim?
Destination Directory
Hayır
Çıkarılan nesnelerin depolandığı dizin. Belirtilmezse nesneler paketin kök dizinine açılır.
Çıkarılan nesneleri ZIP paketinin adıyla aynı alt dizinde depolamak için Add the compressed object name to the destination directory seçeneğini belirleyin.
Çıkarılan nesneleri doğrudan hedef dizinde, alt dizin oluşturmadan depolamak için Decompress to the destination directory seçeneğini belirleyin. Aşağıdaki tabloda yapılandırma örnekleri gösterilmektedir.
UyarıDestination Directory parametresini
.dlsdata/olarak ayarlamayın." data-tag="p" id="0a10af0057dwi" is-conref="true">OSS-HDFS etkinleştirilmiş bir pakette ZIP paketi açma kuralları yapılandırırken hizmet kesintisini, veri kirlenmesini veya veri kaybını önlemek için Destination Directory parametresini.dlsdata/olarak ayarlamayın.Açma yapılandırma örnekleri
Senaryo
Yapılandırma yöntemi
Açma sonrası depolama yapısı
zipfolder dizinine yüklenen tüm ZIP paketlerini, ZIP paketleriyle aynı ada sahip alt dizinler oluşturmadan destfolder dizinine açın.
Prefix parametresini zipfolder/ olarak ayarlayın.
Destination Directory parametresini destfolder olarak ayarlayın.
Decompress to the destination directory seçeneğini belirleyin.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...zipfolder dizinine yüklenen tüm ZIP paketlerini, paketin kök dizinindeki paketlerle aynı ada sahip alt dizinlere açın.
Aşağıdaki parametreleri yapılandırın:
Prefix parametresini zipfolder/ olarak ayarlayın.
Destination Directory parametresini boş bırakın.
Add the compressed object name to the destination directory seçeneğini belirleyin.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...zipfolder dizinine yüklenen tüm ZIP paketlerini, destfolder dizinindeki paketlerle aynı ada sahip alt dizinlere açın.
Aşağıdaki parametreleri yapılandırın:
Prefix parametresini zipfolder/ olarak ayarlayın.
Destination Directory parametresini destfolder olarak ayarlayın.
Add the compressed object name to the destination directory seçeneğini belirleyin.
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ... I have read the terms of service and agreed to activate Function Compute and process compressed files by using Function Compute. Only file or folder names encoded in UTF-8 or GB 2312 can be processed. seçeneğini belirleyin ve OK düğmesini tıklayın.
ZIP paketi açma kuralını değiştirme
Tetikleyici ön ekini veya işlev yapılandırmalarını güncellemek için bir açma kuralını değiştirin.
Prefix parametresini değiştirme
OSS konsolundaki Decompress ZIP Package sayfasında değiştirmek istediğiniz tetikleyiciyi bulun ve İşlemler sütunundaki Edit düğmesini tıklayın.
İşlev ayrıntıları sayfasının Triggers sekmesinde tetikleyiciyi bulun ve İşlemler sütunundaki Modify düğmesini tıklayın.
Modify Trigger panelinde Object Prefix parametresini değiştirin ve diğer parametreler için varsayılan ayarları koruyun.
OK düğmesini tıklayın.
İşlev yapılandırmalarını değiştirme
İşlev ayrıntıları sayfasının Configurations sekmesinde, Basic Settings bölümünde veya Environment Information bölümündeki Modify düğmesini tıklayın.
-
Memory ve Execution Timeout Period gibi işlev yapılandırmalarını değiştirin.
Daha fazla bilgi için bkz. İşlevleri yönetme.
Tetikleyici silme
Silinen tetikleyiciler geri yüklenemez. Bir tetikleyiciyi silmek devam eden açma görevlerini kesintiye uğratmaz.
İşlev ayrıntıları sayfasının Triggers sekmesinde silmek istediğiniz tetikleyiciyi bulun ve İşlemler sütunundaki Delete düğmesini tıklayın.
Görüntülenen mesajda Delete düğmesini tıklayın.
Açma sonuçlarını alma
Açma işlevi çalışmayı tamamladıktan sonra OSS açma sonucunu proaktif olarak döndürmez. Açma sonucunu almak ve arka uç hizmetinize iletmek için aşağıdaki yöntemleri kullanabilirsiniz.
Yöntem 1: Görev modunda açma durumunu sorgulama
Görev modunu etkinleştirdikten sonra, açma işlevinin her çalıştırılması eşzamansız bir görev kaydı oluşturur. Görev durumunu görev listesinde görüntüleyebilir veya bir API işlemi çağırarak sorgulayabilirsiniz.
Function Compute konsolunda açma işlevinin işlev ayrıntıları sayfasına gidin ve Task sekmesini tıklayın.
Görev modu yapılandırma alanında Edit düğmesini tıklayın ve Task Mode özelliğini açın. Görev Modu varsayılan olarak kapalıdır. Aynı alanda Maximum Retry Attempts (varsayılan: 3), Message Time to Live (varsayılan: 1 gün) ve Invocation Destination (varsayılan: yapılandırılmamış) değerlerini de yapılandırabilirsiniz.
Görev Modu açıldıktan sonra, açma işlevinin her çalıştırılması eşzamansız bir görev kaydı oluşturur. Görev listesi görev kimliğini, görev durumunu, başlangıç ve bitiş zamanını, yürütme süresini, yeniden deneme sayısını, istek kimliğini ve örnek kimliğini gösterir.
Görev durumunu sorgulamak için Function Compute hizmetinin
GetAsyncTaskişlemini de çağırabilirsiniz. Dönen görev durumu Succeeded ise açma görevi başarıyla tamamlanmış demektir.
Yöntem 2: Otomatik bildirimler için eşzamansız çağrı hedefi yapılandırma
Görev modu yapılandırma alanında, açma görevi sona erdiğinde belirtilen hedef hizmeti otomatik olarak bilgilendirmek için Invoke Another Service on Success veya Invoke Another Service on Failure özelliklerini açın. Aşağıdaki hedef hizmet türleri desteklenir:
Function Compute (FC)
ApsaraMQ for RocketMQ
Simple Message Queue (eskiden MNS)
EventBridge
Yöntem 3: Özel HTTP geri araması aracılığıyla arka uç hizmetinize bildirim gönderme
Yerleşik eşzamansız çağrı hedefleri özel bir HTTP geri aramasını desteklemez. ACK kümesinde dağıtılan bir hizmet gibi kendi yönettiğiniz bir arka uç hizmetini açma sonucu hakkında bilgilendirmeniz gerekiyorsa aşağıdaki yaklaşımı kullanın:
Arka uç hizmetinizin uç noktasına bir HTTP bildirim isteği gönderen bir Function Compute işlevi oluşturun.
Yöntem 2'deki adımları izleyerek bu işlevi açma işlevinin eşzamansız çağrı hedefi olarak yapılandırın.
Açma görevi sona erdiğinde Function Compute bu işlevi çağırır ve işlev ardından HTTP bildirimini arka uç hizmetinize gönderir.
