Share via


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.

  1. Data Factory'de Düzenle sekmesine veya Azure Synapse'te Tümleştir sekmesine geçin.

  2. Menüden Tetikleyici'yi ve ardından Yeni/Düzenle'yi seçin.

  3. Tetikleyici Ekle sayfasında Tetikleyici seç...'i ve ardından +Yeni'yi seçin.

  4. Olay Depolama tetikleyici türünü seçme

  5. 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ü.

  6. 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.csvdeğ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.
  7. 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.

    Screenshot of storage event trigger creation page.

  8. Tetikleyicinizin sıfır bayt içeren blobları yoksayıp yoksaymayacağını seçin.

  9. 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.

    Screenshot of storage event trigger preview page.

  10. 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.

  11. İş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().fileNamedosya 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 Verileri

    Screenshot of storage event trigger mapping properties to pipeline parameters.

    Yukarı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().folderPathsample-data/event-testing ve @triggerBody().fileName değeri moviesDB.csvolur. Bu değerler, örnekte işlem hattı parametreleri sourceFolder ve ile eşlenir ve sourceFilebu parametreler işlem hattı boyunca sırasıyla ve @pipeline().parameters.sourceFile olarak @pipeline().parameters.sourceFolder kullanılabilir.

  12. İş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.txtfoldername 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ı containernamealtı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.

Workflow of storage event trigger creation.

İş 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.

Workflow of storage event triggering pipeline runs.

İş 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