IoT Edge'de Azure Blob Depolama ile verileri kenarda depolama

Şunlar için geçerlidir:IoT Edge 1.1 onay işareti IoT Edge 1.1 IoT Edge 1.2 onay işareti IoT Edge 1.2 IoT Edge 1.3 onay işareti IoT Edge 1.3

IoT Edge üzerinde Azure Blob Depolama, kenarda bir blok blobu ve ekleme blobu depolama çözümü sağlar. IoT Edge cihazınızdaki bir blob depolama modülü, blobların IoT Edge cihazınızda yerel olarak depolanması dışında bir Azure blob hizmeti gibi davranır. Bloblarınıza erişmek için zaten alışkın olduğunuz Azure depolama SDK'sı yöntemlerini veya blob API çağrılarını kullanabilirsiniz. Bu makalede, IoT Edge cihazınızda blob hizmeti çalıştıran IoT Edge kapsayıcıdaki Azure Blob Depolama ile ilgili kavramlar açıklanmaktadır.

Bu modül senaryolarda kullanışlıdır:

  • verilerin işlenebilene veya buluta aktarılana kadar yerel olarak depolanması gerektiğinde. Bu veriler videolar, görüntüler, finans verileri, hastane verileri veya diğer yapılandırılmamış veriler olabilir.
  • cihazlar sınırlı bağlantıya sahip bir yerde bulunduğunda.
  • verilere düşük gecikme süreli erişim elde etmek için verileri yerel olarak verimli bir şekilde işlemek istediğinizde, acil durumlara mümkün olan en kısa sürede yanıt vererek.
  • bant genişliği maliyetlerini azaltmak ve terabaytlarca veriyi buluta aktarmaktan kaçınmak istediğinizde. Verileri yerel olarak işleyebilir ve yalnızca işlenen verileri buluta gönderebilirsiniz.

Hızlı giriş için videoyu izleyin

Bu modül deviceToCloudUpload ve deviceAutoDelete özellikleriyle birlikte gelir.

deviceToCloudUpload yapılandırılabilir bir işlevselliktir. Bu işlev, aralıklı İnternet bağlantısı desteğiyle yerel blob depolamanızdaki verileri otomatik olarak Azure'a yükler. Şunları yapmanızı sağlar:

  • deviceToCloudUpload özelliğini AÇIN/KAPALI duruma getirin.
  • Verilerin Azure'a kopyalandığı sırayı (NewestFirst veya OldestFirst gibi) seçin.
  • Verilerinizin karşıya yüklenmesini istediğiniz Azure Depolama hesabını belirtin.
  • Azure'a yüklemek istediğiniz kapsayıcıları belirtin. Bu modül hem kaynak hem de hedef kapsayıcı adlarını belirtmenize olanak tanır.
  • Bulut depolamaya yükleme tamamlandıktan hemen sonra blobları silme özelliğini seçin
  • Tam blob karşıya yükleme (işlem kullanarakPut Blob) ve blok düzeyinde karşıya yüklemeyi (ve Append Block işlemlerini kullanarakPut BlockPut Block List) yapın.

Bu modülde blobunuz bloklardan oluştuğunda blok düzeyinde karşıya yükleme kullanılır. Yaygın senaryolardan bazıları şunlardır:

  • Uygulamanız daha önce karşıya yüklenen blok blobunun bazı bloklarını güncelleştirir veya ekleme blobunun sonuna yeni bloklar ekler. Bu modülde blobun tamamı değil yalnızca güncelleştirilmiş bloklar karşıya yüklenir.
  • Modül blobu karşıya yüklüyor ve İnternet bağlantısı kesilir; bağlantı yeniden geri döndüğünde blob'un tamamını değil yalnızca kalan blokları karşıya yükler.

Blob karşıya yükleme sırasında beklenmeyen bir işlem sonlandırması (güç kesintisi gibi) oluşursa, modül yeniden çevrimiçi olduğunda karşıya yükleme süresi dolan tüm bloklar yeniden karşıya yüklenir.

deviceAutoDelete yapılandırılabilir bir işlevselliktir. Belirtilen süre (dakika cinsinden ölçülür) sona erdiğinde bu işlev bloblarınızı yerel depolamadan otomatik olarak siler. Şunları yapmanızı sağlar:

  • DeviceAutoDelete özelliğini AÇ/KAPALI duruma getirin.
  • Blobların otomatik olarak silineceği süreyi dakika cinsinden (deleteAfterMinutes) belirtin.
  • deleteAfterMinutes değerinin süresi dolarsa blob karşıya yüklenirken blobu koruma özelliğini seçin.

Önkoşullar

Bir Azure IoT Edge cihazı:

Bulut kaynakları:

Azure'da standart katman IoT Hub'ı.

deviceToCloudUpload ve deviceAutoDelete özellikleri

deviceToCloudUploadProperties ve deviceAutoDeleteProperties ayarlamak için modülün istenen özelliklerini kullanın. İstenen özellikler dağıtım sırasında ayarlanabilir veya daha sonra modül ikizini yeniden dağıtmaya gerek kalmadan düzenlenerek değiştirilebilir. ve değerlerinin doğru yayıldığından emin olmak için ve configurationValidation için reported configuration "Modül İkizi"ni denetlemenizi öneririz.

deviceToCloudUploadProperties

Bu ayarın adı şeklindedir deviceToCloudUploadProperties. IoT Edge simülatörünü kullanıyorsanız, açıklamaları bölümünde bulabileceğiniz bu özellikler için değerleri ilgili ortam değişkenlerine ayarlayın.

Özellik Olası Değerler Açıklama
uploadOn true, false Varsayılan olarak olarak false olarak ayarlanır. Özelliği açmak istiyorsanız, bu alanı olarak trueayarlayın.

Ortam değişkeni: deviceToCloudUploadProperties__uploadOn={false,true}
uploadOrder NewestFirst, OldestFirst Verilerin Azure'a kopyalandığı sırayı seçmenize olanak tanır. Varsayılan olarak olarak OldestFirst olarak ayarlanır. Sıra, Blob'un son değiştirme zamanına göre belirlenir.

Ortam değişkeni: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloudStorageConnectionString "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>" , verilerinizin karşıya yüklenmesini istediğiniz depolama hesabını belirtmenize olanak tanıyan bir bağlantı dizesidir. Azure Storage Account Name, , Azure Storage Account KeybelirtinEnd point suffix. Verilerin karşıya yükleneceği Azure'ın uygun EndpointSuffix'ini ekleyin; genel Azure, Kamu Azure ve Microsoft Azure Stack için farklılık gösterir.

Burada Azure Depolama SAS bağlantı dizesini belirtmeyi seçebilirsiniz. Ancak süresi dolduğunda bu özelliği güncelleştirmeniz gerekir. SAS izinleri kapsayıcılar için erişim oluşturma ve bloblar için oluşturma, yazma ve ekleme erişimini içerebilir.

Ortam değişkeni: deviceToCloudUploadProperties__cloudStorageConnectionString=<connection string>
storageContainersForUpload "<source container name1>": {"target": "<target container name>"},

"<source container name1>": {"target": "%h-%d-%m-%c"},

"<source container name1>": {"target": "%d-%c"}
Azure'a yüklemek istediğiniz kapsayıcı adlarını belirtmenize olanak tanır. Bu modül hem kaynak hem de hedef kapsayıcı adlarını belirtmenize olanak tanır. Hedef kapsayıcı adını belirtmezseniz, kapsayıcı adı otomatik olarak olarak <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>atanır. Hedef kapsayıcı adı için şablon dizeleri oluşturabilir ve olası değerler sütununu gözden geçirebilirsiniz.
* %h -> IoT Hub Adı (3-50 karakter).
* %d -> IoT Edge Cihaz Kimliği (1 - 129 karakter).
* %m -> Modül Adı (1 - 64 karakter).
* %c -> Kaynak Kapsayıcı Adı (3 - 63 karakter).

Kapsayıcı adının en büyük boyutu 63 karakterdir ve kapsayıcının boyutu 63 karakteri aşarsa hedef kapsayıcı adı otomatik olarak atanır ve her bölümü (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) 15 karaktere keser.

Ortam değişkeni: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload true, false Varsayılan olarak olarak false olarak ayarlanır. olarak ayarlandığında true, bulut depolamaya yükleme tamamlandığında verileri otomatik olarak siler.

DİkKAT: Ekleme blobları kullanıyorsanız, bu ayar başarılı bir karşıya yüklemeden sonra ekleme bloblarını yerel depolamadan siler ve gelecekte bu bloblara yapılan ekleme bloğu işlemleri başarısız olur. Bu ayarı dikkatli kullanın, uygulamanız seyrek ekleme işlemleri gerçekleştiriyorsa veya sürekli ekleme işlemlerini desteklemiyorsa bunu etkinleştirmeyin

Ortam değişkeni: deviceToCloudUploadProperties__deleteAfterUpload={false,true}.

deviceAutoDeleteProperties

Bu ayarın adı şeklindedir deviceAutoDeleteProperties. IoT Edge simülatörünü kullanıyorsanız, açıklamaları bölümünde bulabileceğiniz bu özellikler için değerleri ilgili ortam değişkenlerine ayarlayın.

Özellik Olası Değerler Açıklama
deleteOn true, false Varsayılan olarak olarak false olarak ayarlanır. Özelliği açmak istiyorsanız, bu alanı olarak trueayarlayın.

Ortam değişkeni: deviceAutoDeleteProperties__deleteOn={false,true}
deleteAfterMinutes <minutes> Saati dakika cinsinden belirtin. Bu değerin süresi dolduğunda modül bloblarınızı yerel depolamadan otomatik olarak siler. İzin verilen en fazla dakika sayısı 35791'dir.

Ortam değişkeni: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes>
retainWhileUploading true, false Varsayılan olarak olarak olarak ayarlanır trueve deleteAfterMinutes süresinin dolması durumunda blob bulut depolamaya yüklenirken korunur. bunu false olarak ayarlayabilirsiniz ve deleteAfterMinutes süresi dolduğunda verileri siler. Not: Bu özelliğin çalışması için uploadOn değeri true olarak ayarlanmalıdır.

DİkKAT: Ekleme blobları kullanıyorsanız, değerin süresi dolduğunda bu ayar ekleme bloblarını yerel depolamadan siler ve gelecekte bu bloblara yönelik ekleme bloğu işlemleri başarısız olur. Süre sonu değerinin uygulamanız tarafından gerçekleştirilen ekleme işlemlerinin beklenen sıklığı için yeterince büyük olduğundan emin olmak isteyebilirsiniz.

Ortam değişkeni: deviceAutoDeleteProperties__retainWhileUploading={false,true}

SMB paylaşımını yerel depolama alanınız olarak kullanma

Bu modülün Windows kapsayıcısını Windows konağına dağıtırken yerel depolama yolunuz olarak SMB paylaşımı sağlayabilirsiniz.

SMB paylaşımının ve IoT cihazının karşılıklı olarak güvenilen etki alanlarında olduğundan emin olun.

Windows çalıştıran IoT cihazında SMB paylaşımını yerel olarak eşlemek için PowerShell komutunu çalıştırabilirsiniz New-SmbGlobalMapping .

Yapılandırma adımları aşağıdadır:

$creds = Get-Credential
New-SmbGlobalMapping -RemotePath <remote SMB path> -Credential $creds -LocalPath <Any available drive letter>

Örnek:

$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:

Bu komut, uzak SMB sunucusuyla kimlik doğrulaması yapmak için kimlik bilgilerini kullanır. Ardından, uzak paylaşım yolunu G: sürücü harfi (başka bir kullanılabilir sürücü harfi olabilir) ile eşleyin. IoT cihazı artık G: sürücüsündeki bir yola eşlenmiş veri birimine sahiptir.

IoT cihazındaki kullanıcının uzak SMB paylaşımını okuyabildiğinden/yazaadığından emin olun.

Dağıtımınız için değeri <storage mount>G:/ContainerData:C:/BlobRoot olabilir.

Linux'ta kapsayıcı kullanıcısına dizin erişimi verme

Linux kapsayıcıları için oluşturma seçeneklerinizde depolama için birim bağlamayı kullandıysanız ek adımlar yapmanız gerekmez, ancak bağlamayı kullandıysanız hizmeti doğru çalıştırmak için bu adımlar gereklidir.

Kullanıcıların işlerini yapmak için ihtiyaç duydukları en düşük izinleri kullanacakları erişim haklarını sınırlamak için en az ayrıcalık ilkesinden sonra, bu modül bir kullanıcı (ad: absie, ID: 11000) ve bir kullanıcı grubu (ad: absie, ID: 11000) içerir. Kapsayıcı kök olarak başlatılırsa (varsayılan kullanıcı kök ise), hizmetimiz düşük ayrıcalıklı absie kullanıcısı olarak başlatılır.

Bu davranış, konak yolundaki izinlerin yapılandırılmasının hizmetin düzgün çalışması için kritik öneme sahip olmasını sağlar, aksi takdirde hizmet erişim reddedildi hatalarıyla kilitlenir. Dizin bağlamada kullanılan yola kapsayıcı kullanıcısı tarafından erişilebilir olması gerekir (örnek: absie 11000). Konakta aşağıdaki komutları yürüterek kapsayıcı kullanıcısına dizin erişimi verebilirsiniz:

sudo chown -R 11000:11000 <blob-dir>
sudo chmod -R 700 <blob-dir>

Örnek:

sudo chown -R 11000:11000 /srv/containerdata
sudo chmod -R 700 /srv/containerdata

Hizmeti absie dışında bir kullanıcı olarak çalıştırmanız gerekiyorsa, dağıtım bildiriminizdeki "Kullanıcı" özelliği altında createOptions'da özel kullanıcı kimliğinizi belirtebilirsiniz. Böyle bir durumda varsayılan veya kök grup kimliğini 0kullanmanız gerekir.

"createOptions": {
  "User": "<custom user ID>:0"
}

Şimdi kapsayıcı kullanıcısına dizine erişim izni verin

sudo chown -R <user ID>:<group ID> <blob-dir>
sudo chmod -R 700 <blob-dir>

Günlük dosyalarını yapılandırma

Modülünüz için günlük dosyalarını yapılandırma hakkında bilgi için bu en iyi üretim yöntemlerine bakın.

Blob depolama modülünüze bağlanma

modülünüz için yapılandırdığınız hesap adını ve hesap anahtarını kullanarak IoT Edge cihazınızdaki blob depolama alanına erişebilirsiniz.

IoT Edge cihazınızı, ona yaptığınız tüm depolama istekleri için blob uç noktası olarak belirtin. IoT Edge cihaz bilgilerini ve yapılandırdığınız hesap adını kullanarak açık bir depolama uç noktası için bağlantı dizesi oluşturabilirsiniz.

  • IoT Edge modülündeki Azure Blob Depolama çalıştığı cihazla aynı cihaza dağıtılan modüller için blob uç noktası: http://<module name>:11002/<account name>.
  • Farklı bir cihazda çalışan modüller veya uygulamalar için ağınız için doğru uç noktayı seçmeniz gerekir. Ağ kurulumunuza bağlı olarak, dış modülünüzden veya uygulamanızdan gelen veri trafiğinin IoT Edge modülde Azure Blob Depolama çalıştıran cihaza ulaşabilmesi için bir uç nokta biçimi seçin. Bu senaryonun blob uç noktası aşağıdakilerden biridir:
    • http://<device IP >:11002/<account name>
    • http://<IoT Edge device hostname>:11002/<account name>
    • http://<fully qualified domain name>:11002/<account name>

Önemli

Azure IoT Edge, modüllere çağrı yaptığınızda büyük/küçük harfe duyarlıdır ve Depolama SDK'sı varsayılan olarak küçük harf kullanır. Azure Market modülün adı AzureBlobStorageonIoTEdge olsa da, adı küçük harfle değiştirmek IoT Edge modüldeki Azure Blob Depolama bağlantılarınızın kesilmemesini sağlamaya yardımcı olur.

hızlı başlangıç örneklerini Azure Blob Depolama

Azure Blob Depolama belgeleri çeşitli dillerde hızlı başlangıç örnek kodu içerir. Blob uç noktasını yerel blob depolama modülünüze bağlanacak şekilde değiştirerek IoT Edge üzerinde Azure Blob Depolama test etmek için bu örnekleri çalıştırabilirsiniz.

Aşağıdaki hızlı başlangıç örneklerinde IoT Edge tarafından da desteklenen diller kullanılır, böylece blob depolama modülüyle birlikte IoT Edge modüller olarak dağıtabilirsiniz:

  • .NET
    • Iot Edge modülü v1.4.0 ve önceki sürümlerdeki Azure Blob Depolama WindowsAzure.Storage 9.3.3 SDK ile uyumludur ve v1.4.1, Azure.Storage.Blobs 12.8.0 SDK'yı da destekler.
  • Python
    • Python SDK'sının V2.1 sürümünden önceki sürümlerde modülün blob oluşturma zamanı döndürmemesiyle ilgili bilinen bir sorun vardır. Bu sorun nedeniyle, liste blobları gibi bazı yöntemler çalışmaz. Geçici bir çözüm olarak, blob istemcisinde API sürümünü açıkça '2017-04-17' olarak ayarlayın. Örnek: block_blob_service._X_MS_VERSION = '2017-04-17'
    • Ekleme Blobu Örneği
  • Node.js
  • JS/HTML
  • Ruby
  • Git
  • PHP

Azure Depolama Gezgini ile yerel depolamanıza bağlanma

Yerel depolama hesabınıza bağlanmak için Azure Depolama Gezgini kullanabilirsiniz.

  1. Azure Depolama Gezgini’ni indirme ve yükleme

  2. Bağlantı dizesi kullanarak Azure Depolama'ya bağlanma

  3. Bağlantı dizesi sağlayın: DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;

  4. Bağlanma adımlarını izleyin.

  5. Yerel depolama hesabınızın içinde kapsayıcı oluşturma

  6. Dosyaları Blok blobları veya Ekleme Blobları olarak karşıya yüklemeye başlayın.

    Not

    Bu modül Sayfa bloblarını desteklemez.

  7. Azure depolama hesaplarınızı Depolama Gezgini'da da bağlayabilirsiniz. Bu yapılandırma hem yerel depolama hesabınız hem de Azure depolama hesabınız için tek bir görünüm sağlar

Desteklenen depolama işlemleri

IoT Edge üzerindeki Blob depolama modülleri Azure Depolama SDK'larını kullanır ve blok blobu uç noktaları için Azure Depolama API'sinin 2017-04-17 sürümüyle tutarlıdır.

tüm Azure Blob Depolama işlemleri IoT Edge Azure Blob Depolama tarafından desteklenmediğinden, bu bölümde her birinin durumu listelenir.

Hesap

Desteklenen:

  • Kapsayıcıları listeleme

Desteklenme -yen:

  • Blob hizmeti özelliklerini alma ve ayarlama
  • Denetim öncesi blob isteği
  • Blob hizmeti istatistiklerini alma
  • Hesap bilgilerini alma

Kapsayıcılar

Desteklenen:

  • Kapsayıcı oluşturma ve silme
  • Kapsayıcı özelliklerini ve meta verilerini alma
  • Blobları listeleme
  • Kapsayıcı ACL'lerini alma ve ayarlama
  • Kapsayıcı meta verilerini ayarlama

Desteklenme -yen:

  • Kira kapsayıcısı

Bloblar

Desteklenen:

  • Blobu yerleştirme, alma ve silme
  • Blob özelliklerini alma ve ayarlama
  • Blob meta verilerini alma ve ayarlama

Desteklenme -yen:

  • Kira blobu
  • Anlık görüntü blobu
  • Kopyalama ve durdurma kopyalama blobu
  • Blobu geri alma
  • Blob katmanını ayarlama

Blok blobları

Desteklenen:

  • Blok koy
  • Blok listesi ekleme ve alma

Desteklenme -yen:

  • URL'den engelleme koyma

Ekleme blobları

Desteklenen:

  • Ekleme bloğu

Desteklenme -yen:

  • URL'den blok ekleme

IoT Edge Tümleştirmesinde Event Grid

Dikkat

IoT Edge üzerinde Event Grid ile tümleştirme önizleme aşamasındadır

IoT Edge modülündeki bu Azure Blob Depolama artık IoT Edge'da Event Grid ile tümleştirme sağlar. Bu tümleştirme hakkında ayrıntılı bilgi için modülleri dağıtma, olayları yayımlama ve olay teslimini doğrulama öğreticisine bakın.

Sürüm Notları

Bu modülün docker hub'ında bulunan sürüm notları aşağıdadır. Belirli bir sürümün sürüm notlarında hata düzeltmeleri ve düzeltmeleri ile ilgili daha fazla bilgi bulabilirsiniz.

Sonraki adımlar

IoT Edge'da Azure Blob Depolama dağıtmayı öğrenin

IoT Edge blogundaki Azure Blob Depolama son güncelleştirmeleri ve duyuruları takip edin