Depolama olayına yanıt olarak işlem hattı çalıştıran bir tetikleyici oluşturma
UYGULANANLAR: Azure Data Factory Azure Synapse Analytics
Bahşiş
Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!
Bu makalede, Data Factory veya Synapse işlem hatlarınızda oluşturabileceğiniz Depolama Olay Tetikleyicileri açıklanmaktadır.
Olay odaklı mimari (EDA), üretim, algılama, tüketim ve olaylara tepkiyi içeren yaygın bir veri tümleştirme düzenidir. Veri tümleştirme senaryoları genellikle müşterilerin Azure Blob Depolama hesabındaki bir dosyanın gelmesi veya silinmesi gibi depolama hesabında gerçekleşen olaylara göre işlem hatlarını tetiklemesi gerekir. Data Factory ve Synapse işlem hatları Azure Event Grid ile yerel olarak tümleşir ve bu sayede bu tür olaylarda işlem hatlarını tetikleyebilirsiniz.
Dekont
Bu makalede açıklanan tümleştirme, Azure Event Grid'e bağlıdır. Aboneliğinizin Event Grid kaynak sağlayıcısına kayıtlı olduğundan emin olun. Daha fazla bilgi için bkz . Kaynak sağlayıcıları ve türleri. Microsoft.EventGrid/eventSubscriptions/* eylemini yapabilmeniz gerekir. Bu eylem, EventGrid EventSubscription Katkıda Bulunanı yerleşik rolünün bir parçasıdır.
Önemli
Bu özelliği Azure Synapse Analytics'te kullanıyorsanız lütfen aboneliğinizin Data Factory kaynak sağlayıcısına da kayıtlı olduğundan emin olun, aksi takdirde "Olay Aboneliği" oluşturma işleminin başarısız olduğunu belirten bir hata alırsınız.
Dekont
Blob depolama hesabı özel bir uç noktanın arkasında bulunuyorsa ve genel ağ erişimini engelliyorsa, blob depolamadan Azure Event Grid'e iletişimlere izin vermek için ağ kurallarını yapılandırmanız gerekir. Event Grid belgelerine Depolama belgeleri izleyerek Event Grid gibi güvenilen Azure hizmetlerine depolama erişimi verebilir veya Event Grid için sanal ağ adres alanına eşlenen özel uç noktaları yapılandırabilirsiniz.
Kullanıcı arabirimiyle tetikleyici oluşturma
Bu bölümde, Azure Data Factory ve Synapse işlem hattı Kullanıcı Arabirimi içinde depolama olayı tetikleyicisinin nasıl oluşturulacağı gösterilmektedir.
Data Factory'de Düzenle sekmesine veya Azure Synapse'te Tümleştir sekmesine geçin.
Menüden Tetikleyici'yi ve ardından Yeni/Düzenle'yi seçin.
Tetikleyici Ekle sayfasında Tetikleyici seç...'i ve ardından +Yeni'yi seçin.
Olay Depolama tetikleyici türünü seçme
Depolama hesabınızı Azure aboneliği açılan listesinden veya Depolama hesabı kaynak kimliğini kullanarak el ile seçin. Olayların hangi kapsayıcıda gerçekleşmesini istediğinizi seçin. Kapsayıcı seçimi gereklidir, ancak tüm kapsayıcıların seçilmesinin çok sayıda olaya yol açabileceğine dikkat edin.
Dekont
Depolama Olay Tetikleyicisi şu anda yalnızca Azure Data Lake Storage 2. Nesil ve Genel amaçlı sürüm 2 depolama hesaplarını destekler. SFTP Depolama Olayları ile çalışıyorsanız filtreleme bölümü altında SFTP Veri API'sini de belirtmeniz gerekir. Azure Event Grid sınırlaması nedeniyle Azure Data Factory, depolama hesabı başına en fazla 500 depolama olayı tetikleyicisini destekler. Sınıra ulaştıysanız, lütfen öneriler için desteğe başvurun ve Event Grid ekibi tarafından değerlendirildikten sonra sınırı yükseltin.
Dekont
Yeni bir Depolama Olay Tetikleyicisi oluşturmak veya mevcut bir olay tetikleyicisini değiştirmek için, hizmette oturum açmak ve depolama olayı tetikleyicisini yayımlamak için kullanılan Azure hesabının depolama hesabında uygun rol tabanlı erişim denetimi (Azure RBAC) izni olmalıdır. Ek izin gerekmez: Azure Data Factory ve Azure Synapse için Hizmet Sorumlusunun Depolama hesabı veya Event Grid için özel izne ihtiyacı yoktur. Erişim denetimi hakkında daha fazla bilgi için bkz . Rol tabanlı erişim denetimi bölümü.
Blob yolu ile başlar ve Blob yolu özelliklerle biter, olayları almak istediğiniz kapsayıcıları, klasörleri ve blob adlarını belirtmenize olanak tanır. Depolama olayı tetikleyiciniz bu özelliklerden en az birinin tanımlanmasını gerektirir. Bu makalenin devamında yer alan örneklerde gösterildiği gibi hem Blob yolu ile başlar hem de Blob yolu özelliklerle biter için çeşitli desenler kullanabilirsiniz.
- Blob yolu ile başlar: Blob yolu bir klasör yolu ile başlamalıdır. Geçerli değerler ve değerlerini içerir
2018/
2018/april/shoes.csv
. Kapsayıcı seçilmediyse bu alan seçilemiyor. - Blob yolu şununla biter: Blob yolu bir dosya adı veya uzantısıyla bitmelidir. Geçerli değerler ve değerlerini içerir
shoes.csv
.csv
. Kapsayıcı ve klasör adları belirtildiğinde bir/blobs/
kesimle ayrılmalıdır. Örneğin, 'orders' adlı kapsayıcının/orders/blobs/2018/april/shoes.csv
değeri olabilir. Herhangi bir kapsayıcıda klasör belirtmek için baştaki '/' karakterini atla. Örneğin,april/shoes.csv
herhangi bir kapsayıcıdaki 'april' adlı klasörde adlıshoes.csv
herhangi bir dosyada bir olay tetikler. - Blob yolunun ile başladığını ve ile bittiğini, Depolama Olay Tetikleyicisi'nde izin verilen tek desen eşleştirme olduğunu unutmayın. Tetikleyici türü için diğer joker karakter eşleştirme türleri desteklenmez.
- Blob yolu ile başlar: Blob yolu bir klasör yolu ile başlamalıdır. Geçerli değerler ve değerlerini içerir
Tetikleyicinizin Blob tarafından oluşturulan bir olaya mı, Blob silinen olayına mı yoksa her ikisine de yanıt verip vermeyeceğini seçin. Belirtilen depolama konumunuzda her olay, tetikleyiciyle ilişkili Data Factory ve Synapse işlem hatlarını tetikler.
Tetikleyicinizin sıfır bayt içeren blobları yoksayıp yoksaymayacağını seçin.
Tetikleyicinizi yapılandırdıktan sonra İleri: Veri önizleme'ye tıklayın. Bu ekranda depolama olayı tetikleyici yapılandırmanızla eşleşen mevcut bloblar gösterilir. Belirli filtreleriniz olduğundan emin olun. Çok geniş filtrelerin yapılandırılması, oluşturulan/silinen çok sayıda dosyayla eşleşebilir ve maliyetinizi önemli ölçüde etkileyebilir. Filtre koşullarınız doğrulandıktan sonra Son'a tıklayın.
Bu tetikleyiciye bir işlem hattı eklemek için işlem hattı tuvaline gidin ve Tetikleyici'ye tıklayın ve Yeni/Düzenle'yi seçin. Yan gezinti göründüğünde Tetikleyici seç... açılan menüsüne tıklayın ve oluşturduğunuz tetikleyiciyi seçin. Yapılandırmanın doğru olduğunu onaylamak için İleri: Veri önizleme'ye ve ardından Veri önizlemesinin doğru olduğunu doğrulamak için İleri'ye tıklayın.
İşlem hattınızda parametreler varsa, bunları tetikleyici çalıştırmaları parametre tarafı gezintisinde belirtebilirsiniz. Depolama olayı tetikleyicisi, ve özelliklerinde
@triggerBody().folderPath
blobun klasör yolunu ve@triggerBody().fileName
dosya adını yakalar. Bu özelliklerin değerlerini bir işlem hattında kullanmak için özellikleri işlem hattı parametreleriyle eşlemeniz gerekir. Özellikleri parametrelere eşledikten sonra, işlem hattı boyunca ifade aracılığıyla@pipeline().parameters.parameterName
tetikleyici tarafından yakalanan değerlere erişebilirsiniz. Ayrıntılı açıklama için bkz. İşlem Hatlarında Başvuru Tetikleyicisi Meta VerileriYukarıdaki örnekte tetikleyici, kapsayıcı örnek-verilerindeki olay testi klasöründe .csv ile biten bir blob yolu oluşturulduğunda tetiklenmesi için yapılandırılır. folderPath ve fileName özellikleri yeni blobun konumunu yakalar. Örneğin, MoviesDB.csv sample-data/event-testing yoluna eklendiğinde değeri
@triggerBody().folderPath
sample-data/event-testing
ve@triggerBody().fileName
değerimoviesDB.csv
olur. Bu değerler, örnekte işlem hattı parametrelerisourceFolder
ve ile eşlenir vesourceFile
bu parametreler işlem hattı boyunca sırasıyla ve@pipeline().parameters.sourceFile
olarak@pipeline().parameters.sourceFolder
kullanılabilir.İşiniz bittiğinde Son'a tıklayın.
JSON şeması
Aşağıdaki tabloda, depolama olayı tetikleyicileriyle ilgili şema öğelerine genel bir bakış sağlanmaktadır:
JSON Öğesi | Açıklama | Türü | İzin Verilen Değerler | Gerekli |
---|---|---|---|---|
Kapsam | Depolama Hesabının Azure Resource Manager kaynak kimliği. | String | Azure Resource Manager Kimliği | Evet |
Olay | Bu tetikleyicinin tetiklemesine neden olan olayların türü. | Dizi | Microsoft. Depolama. BlobCreated, Microsoft. Depolama. BlobDeleted | Evet, bu değerlerin herhangi bir bileşimi. |
blobPathBeginsWith | Blob yolu tetikleyicinin tetikleyebilmesi için sağlanan desenle başlamalıdır. Örneğin, /records/blobs/december/ yalnızca kapsayıcının altındaki klasördeki december bloblar için tetikleyiciyi records tetikler. |
String | Şu özelliklerden en az biri için bir değer sağlayın: blobPathBeginsWith veya blobPathEndsWith . |
|
blobPathEndsWith | Blob yolunun tetikleyicinin tetiklemesi için sağlanan desenle bitmesi gerekir. Örneğin, december/boxes.csv yalnızca bir december klasörde adlı boxes bloblar için tetikleyiciyi tetikler. |
String | Şu özelliklerden en az biri için bir değer sağlayın: blobPathBeginsWith veya blobPathEndsWith . |
|
ignoreEmptyBlobs | Sıfır bayt bloblarının bir işlem hattı çalıştırması tetikleyip tetiklemeyeceği. Varsayılan olarak, bu true olarak ayarlanır. | Boolean | true veya false | No |
Depolama olayı tetikleyicileri örnekleri
Bu bölümde depolama olayı tetikleyici ayarlarına örnekler sağlanmaktadır.
Önemli
Aşağıdaki örneklerde gösterildiği gibi, kapsayıcı ve klasör, kapsayıcı ve dosya ya da kapsayıcı, klasör ve dosya belirttiğinizde yolun kesimini eklemeniz /blobs/
gerekir. blobPathBeginsWith için kullanıcı arabirimi, JSON tetikleyicisindeki klasör ve kapsayıcı adı arasına otomatik olarak eklenir/blobs/
.
Dekont
Dosya varış tetikleyicileri, veri akışı havuzlarından tetikleme mekanizması olarak önerilmez. Veri akışları, hedef klasörde, verilerinizin tamamen işlenmesinden önce yanlışlıkla bir dosya varış olayını tetikleyebilen bir dizi dosya yeniden adlandırma ve bölüm dosyası karıştırma görevi gerçekleştirir.
Özellik | Örnek | Açıklama |
---|---|---|
Blob yolu ile başlar | /containername/ |
Kapsayıcıdaki herhangi bir blob için olayları alır. |
Blob yolu ile başlar | /containername/blobs/foldername/ |
Kapsayıcı ve foldername klasördeki containername tüm bloblar için olayları alır. |
Blob yolu ile başlar | /containername/blobs/foldername/subfoldername/ |
Bir alt klasöre de başvurabilirsiniz. |
Blob yolu ile başlar | /containername/blobs/foldername/file.txt |
Kapsayıcının altındaki containername klasörde adlı file.txt foldername bir blob için olayları alır. |
Blob yolu ile biter | file.txt |
Herhangi bir yolda adlı file.txt blob için olayları alır. |
Blob yolu ile biter | /containername/blobs/file.txt |
kapsayıcısı containername altında adlı file.txt bir blob için olayları alır. |
Blob yolu ile biter | foldername/file.txt |
Herhangi bir kapsayıcının altındaki klasörde foldername adlı file.txt blob için olayları alır. |
Rol tabanlı erişim denetimi
Azure Data Factory ve Synapse işlem hatları, blob olaylarına bağlı işlem hatlarını dinlemek, güncelleştirmelere abone olmak ve tetikleme amacıyla yetkisiz erişimin kesinlikle yasaklandığından emin olmak için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanır.
- Yeni bir olay tetikleyicisini başarıyla oluşturmak veya mevcut Depolama Olay Tetikleyicisini güncelleştirmek için, hizmette oturum açan Azure hesabının ilgili depolama hesabına uygun erişime sahip olması gerekir. Aksi takdirde, erişim reddedildi hatasıyla işlem başarısız olur.
- Azure Data Factory ve Azure Synapse'in Event Grid'iniz için özel bir izne ihtiyacı yoktur ve işlem için Data Factory veya Azure Synapse hizmet sorumlusuna özel RBAC izni atamanız gerekmez .
Aşağıdaki RBAC ayarlarından herhangi biri depolama olayı tetikleyicisi için çalışır:
- Depolama hesabında sahip rolü
- Depolama hesabına katkıda bulunan rolü
- Microsoft.EventGrid/EventSubscriptions/Depolama hesabına yazma izni /subscriptions/####/resourceGroups/#####/providers/Microsoft.Depolama/storageAccounts/storageAccountName
Daha ayrıntılı belirtmek gerekirse:
- Veri fabrikasında yazarken (örneğin geliştirme ortamında), oturum açan Azure hesabının yukarıdaki izne sahip olması gerekir
- CI/CD aracılığıyla yayımlarken, ARM şablonunu test veya üretim fabrikasında yayımlamak için kullanılan hesabın yukarıdaki izne sahip olması gerekir.
Hizmetin bu iki sözü nasıl yerine getireci olduğunu anlamak için bir adım geri alalım ve arka planda bir göz atalım. Azure Data Factory/Azure Synapse, Depolama ve Event Grid arasında tümleştirmeye yönelik üst düzey iş akışları aşağıdadır.
Yeni bir Depolama Olay Tetikleyicisi oluşturma
Bu üst düzey iş akışı, Azure Data Factory'nin Depolama Olay Tetikleyicisi oluşturmak için Event Grid ile nasıl etkileşim kuracağını açıklar. Azure Synapse için veri akışı aynıdır ve synapse işlem hatları aşağıdaki diyagramda Data Factory rolünü üstlenmiştir.
İş akışlarından iki fark edilebilir çağrı:
Azure Data Factory ve Azure Synapse, Depolama hesabıyla doğrudan iletişim kurmaz. Bunun yerine abonelik oluşturma isteği Event Grid tarafından iletilir ve işlenir. Bu nedenle, hizmetin bu adım için Depolama hesabı için hiçbir izne ihtiyacı yoktur.
Erişim denetimi ve izin denetimi hizmet içinde gerçekleşir. Hizmet depolama olayına abone olma isteği göndermeden önce kullanıcının iznini denetler. Daha açık belirtmek gerekirse, oturum açan ve Depolama Olay tetikleyicisini oluşturmaya çalışan Azure hesabının ilgili depolama hesabına uygun erişime sahip olup olmadığını denetler. İzin denetimi başarısız olursa tetikleyici oluşturma da başarısız olur.
olay tetikleyici işlem hattı çalıştırma Depolama
Bu üst düzey iş akışları, Depolama olayının Event Grid üzerinden işlem hattını nasıl çalıştırtığını açıklar. Azure Synapse için veri akışı aynıdır ve synapse işlem hatları aşağıdaki diyagramda Data Factory rolünü üstlenmiştir.
İş akışında hizmet içinde işlem hatlarını tetikleyen olayla ilgili üç fark edilebilir çağrı vardır:
Event Grid, depolama alanı iletiyi sisteme bıraktığında iletiyi en kısa sürede aktaran bir Gönderme modeli kullanır. Bu, Çekme sisteminin kullanıldığı Kafka gibi mesajlaşma sisteminden farklıdır.
Olay Tetikleyicisi, gelen ileti için etkin bir dinleyici görevi görür ve ilişkili işlem hattını düzgün bir şekilde tetikler.
Depolama Olay Tetikleyicisi, Depolama hesabıyla doğrudan iletişim kurmaz
- Bununla birlikte, Depolama hesabındaki verileri işlemek için işlem hattında Kopyalama veya başka bir etkinliğiniz varsa, hizmet Bağlı Hizmet'te depolanan kimlik bilgilerini kullanarak Depolama ile doğrudan iletişim kurar. Bağlı Hizmetin uygun şekilde ayarlandığından emin olun
- Ancak işlem hattındaki Depolama hesabına başvuru yapmazsanız hizmete Depolama hesaba erişim izni vermeniz gerekmez
İlgili içerik
- Tetikleyiciler hakkında ayrıntılı bilgi için bkz . İşlem hattı yürütme ve tetikleyiciler.
- İşlem hattında tetikleyici meta verilerine başvurmayı öğrenin, bkz. İşlem Hattı Çalıştırmalarında Tetikleyici Meta Verilerine Başvurma