IoT Edge'de Azure Blob Depolama ile verileri kenarda depolama

Şunlar için geçerlidir:IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

IoT Edge'deki Azure Blob Depolama, uçta 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ısında 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ı gereken durumlar. 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 hızlı şekilde yanıt vekleyebilirsiniz.
  • 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.

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

deviceToCloudUpload özelliği 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:

  • Cihazı Aç/KAPALIToCloudUpload özelliğini açın.
  • Verilerin NewestFirst veya OldestFirst gibi Azure'a kopyalandığı sırayı 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 sonra blobları hemen silme özelliğini seçin
  • Tam blob karşıya yükleme (işlem kullanarakPut Blob) ve blok düzeyinde karşıya yüklemeyi (ve Put Block ListAppend Block işlemlerini kullanarakPut Block) 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üklenmiş bir blok blobunun bazı bloklarını güncelleştirir veya ekleme blobunun sonuna yeni bloklar ekler; bu modül blobun tamamını değil yalnızca güncelleştirilmiş blokları karşıya yükler.
  • Modül blobu karşıya yüklüyor ve İnternet bağlantısı kesilir; bağlantı yeniden geri geldiğinde 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) gerçekleşirse, modül yeniden çevrimiçi olduğunda karşıya yükleme için gereken tüm bloklar yeniden karşıya yüklenir.

deviceAutoDelete yapılandırılabilir bir işlevselliktir. Bu işlev, belirtilen süre (dakika cinsinden ölçülür) sona erdiğinde 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 karşıya yüklenirken blobu koruma özelliğini seçin.

Önkoşullar

Bir Azure IoT Edge cihazı:

  • Linux veya Windows cihazları için hızlı başlangıçtaki adımları izleyerek geliştirme makinenizi veya bir sanal makineyi IoT Edge cihazı olarak kullanabilirsiniz.

  • Desteklenen işletim sistemlerinin ve mimarilerin listesi için Azure IoT Edge tarafından desteklenen sistemlere bakın. IoT Edge'deki Azure Blob Depolama modülü aşağıdaki mimarileri destekler:

    • Windows AMD64
    • Linux AMD64
    • Linux ARM32
    • Linux ARM64

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 reported configurationconfigurationValidation "Modül İkizi"ni denetlemenizi öneririz.

deviceToCloudUploadProperties

Bu ayarın adıdır deviceToCloudUploadProperties. IoT Edge simülatörünü kullanıyorsanız, bu özelliklerin değerlerini açıklama bölümünde bulabileceğiniz ilgili ortam değişkenlerine ayarlayın.

Özellik Olası Değerler Açıklama
uploadOn true, false Varsayılan olarak olarak false ayarlayın. Ö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 ayarlayın. Sıra, Blob'un son değiştirme zamanına göre belirlenir.

Ortam değişkeni: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloud Depolama Bağlan ionString "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ı dizesi. Azure Storage Account Name, , Azure Storage Account KeybelirtinEnd point suffix. Verilerin karşıya yüklendiği Azure'ın uygun EndpointSuffix'ini ekleyin; genel Azure, Kamu Azure ve Microsoft Azure Stack için farklılık gösterir.

Azure Depolama SAS bağlantı dizesi burada belirtebilirsiniz. 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, otomatik olarak gibi <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>bir kapsayıcı adı atanır. Hedef kapsayıcı adı için şablon dizeleri oluşturabilir, 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. Kapsayıcının boyutu 63 karakteri aşarsa ada otomatik olarak hedef kapsayıcı adı atanır. Bu durumda, ad her bölümde (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) 15 karaktere kırpılır.

Ortam değişkeni: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload true, false Varsayılan olarak olarak false ayarlayın. olarak trueayarlandığında, bulut depolamaya yükleme tamamlandığında veriler otomatik olarak silinir.

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 ekleme bloğu işlemleri başarısız olur. Bu ayarı dikkatli kullanın. Uygulamanız seyrek ekleme işlemleri yapıyorsa veya sürekli ekleme işlemlerini desteklemiyorsa bu ayarı etkinleştirmeyin

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

deviceAutoDeleteProperties

Bu ayarın adıdır deviceAutoDeleteProperties. IoT Edge simülatörünü kullanıyorsanız, bu özelliklerin değerlerini açıklama bölümünde bulabileceğiniz ilgili ortam değişkenlerine ayarlayın.

Özellik Olası Değerler Açıklama
deleteOn true, false Varsayılan olarak olarak false ayarlayın. Ö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 süresi dolarsa bulut depolamaya deleteAfterMinutes yüklenirken blobu korur. Bunu false olarak ayarlayabilirsiniz ve süresi dolduğunda verileri deleteAfterMinutes siler. Not: Bu özelliğin çalışması için uploadOn değeri true olarak ayarlanmalıdır.

DİkKAT: Ekleme blobları kullanırsanız, değer sona erdiğinde bu ayar ekleme bloblarını yerel depolamadan siler ve gelecekte bu bloblara 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 olun.

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ı:

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

Örneğin:

$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ü harfiyle eşleyin (başka herhangi bir kullanılabilir sürücü harfi olabilir). 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/yazadığı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ğlama kullanıyorsanız ek adımlar yapmanız gerekmez, ancak bağlamayı kullanıyorsanız, hizmeti doğru çalıştırmak için bu adımlar gerekir.

Kullanıcıların işlerini gerçekleştirmeleri için gereken en düşük izinleri kullanacakları erişim haklarını sınırlamak için en az ayrıcalık ilkesinden sonra bu modülde bir kullanıcı (ad: absie, ID: 11000) ve bir kullanıcı grubu (ad: absie, ID: 11000) bulunur. 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 şu komutları yürüterek kapsayıcı kullanıcısına dizine erişim vererek:

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

Örneğin:

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 0kullanın.

"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

Varsayılan çıkış günlüğü düzeyi 'Bilgi'dir. Çıkış günlüğü düzeyini değiştirmek için dağıtım bildiriminde bu modülün LogLevel ortam değişkenini ayarlayın. LogLevel aşağıdaki değerleri kabul eder:

  • Kritik
  • Hata
  • Uyarı
  • Bilgi
  • Hata Ayıklama

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ğlan

IoT Edge cihazınızda blob depolamaya erişmek için modülünüz için yapılandırdığınız hesap adını ve hesap anahtarını kullanabilirsiniz.

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'deki Azure Blob Depolama modülünün çalıştığı cihazla aynı cihazda 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ülünde Azure Blob Depolama çalıştıran cihaza ulaşabilmesi için bir uç nokta biçimi seçin. Bu senaryo için 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ı da varsayılan olarak küçük harf olarak ayarlanır. Azure Market modülün adı AzureBlob Depolama onIoTEdge olsa da, adı küçük harfle değiştirmek IoT Edge modülündeki 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'de 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 bunları blob depolama modülüyle birlikte IoT Edge modülleri olarak dağıtabilirsiniz:

  • .NET
    • IoT Edge modülü v1.4.0 ve önceki sürümlerde Azure Blob Depolama WindowsAzure.Depolama 9.3.3 SDK ile uyumludur ve v1.4.1, Azure.Depolama'yi de destekler. Bloblar 12.8.0 SDK'sı.
  • Python
    • Python SDK'sının V2.1 sürümünden önceki sürümlerde modülün blob oluşturma süresini döndürmediği 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 Blob Örneği
  • Node.js
  • JS/HTML
  • Ruby
  • Git
  • PHP

Azure Depolama Gezgini ile yerel depolama alanınıza Bağlan

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

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

  2. Azure Depolama Gezgini'nin en son sürümü blob depolama modülü tarafından desteklenmeyen daha yeni bir depolama API'si sürümü kullanır. Azure Depolama Gezgini'ni başlatın. Düzenle menüsünü seçin. Hedef Azure Stack Hub API'lerinin seçili olduğunu doğrulayın. Değilse Hedef Azure Stack Hub'ı seçin. Değişikliğin geçerli olması için Azure Depolama Gezgini yeniden başlatın. Bu yapılandırma, IoT Edge ortamınızla uyumluluk için gereklidir.

  3. bağlantı dizesi kullanarak Azure Depolama'a Bağlan

  4. 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>;

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

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

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

    Not

    Bu modül Sayfa bloblarını desteklemez.

  8. Azure depolama hesaplarınızı Depolama Gezgini'nde de 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'deki 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'de Azure Blob Depolama tarafından desteklenmediğinden, bu bölümde her birinin durumu listelenir.

Firma

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 blobu kopyalama ve durdurma
  • Blobu silme
  • Blob katmanını ayarlama

Blok blobları

Desteklenen:

  • Blok koy
  • Blok listesini ekleme ve alma

Desteklenme -yen:

  • URL'den blok koy

Ekleme blobları

Desteklenen:

  • Ekleme bloğu

Desteklenme -yen:

  • URL'den ekleme bloğu

IoT Edge Tümleştirmesinde Event Grid

Dikkat

IoT Edge'de Event Grid ile tümleştirme önizleme aşamasında

IoT Edge'de bu Azure Blob Depolama modülü artık IoT Edge'de 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.

Release Notes (Sürüm Notları)

Bu modülün docker hub'ında 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'de Azure Blob Depolama dağıtmayı öğrenin

IoT Edge sürüm notları sayfasındaki Azure Blob Depolama son güncelleştirmeler ve duyurular ile güncel kalın.