Bagikan melalui


Menyimpan data di edge dengan Azure Blob Storage di IoT Edge

Berlaku untuk: Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Azure Blob Storage di IoT Edge menyediakan solusi penyimpanan blob blok dan blob penambahan di tepi. Modul penyimpanan blob pada perangkat IoT Edge Anda berperilaku seperti layanan blob Azure, kecuali blob disimpan secara lokal di perangkat IoT Edge Anda. Anda dapat mengakses blob menggunakan metode SDK penyimpanan Azure yang sama atau panggilan API blob yang sudah biasa Anda gunakan. Artikel ini menjelaskan konsep yang terkait dengan Azure Blob Storage pada kontainer IoT Edge yang menjalankan layanan blob pada perangkat IoT Edge Anda.

Modul ini berguna dalam skenario:

  • Di mana data perlu disimpan secara lokal hingga dapat diproses atau ditransfer ke cloud. Data ini bisa berupa video, gambar, data keuangan, data rumah sakit, atau data lain yang tidak terstruktur.
  • Saat perangkat berada di tempat dengan konektivitas terbatas.
  • Saat Anda ingin memproses data secara lokal secara efisien untuk mendapatkan akses latensi rendah ke data, sehingga Anda dapat merespons keadaan darurat secepat mungkin.
  • Saat Anda ingin mengurangi biaya bandwidth dan menghindari transfer terabyte data ke cloud. Anda dapat memproses data secara lokal dan hanya mengirim data yang diproses ke cloud.

Modul ini dilengkapi dengan fitur perangkatToCloudUpload dan perangkatAutoDelete.

Fitur deviceToCloudUpload adalah fungsionalitas yang dapat dikonfigurasi. Fungsi ini secara otomatis mengunggah data dari penyimpanan blob lokal Anda ke Azure dengan dukungan konektivitas internet terputus-terputus. Ini memungkinkan Anda untuk:

  • Nyalakan/Matikan fitur deviceToCloudUpload.
  • Pilih urutan di mana data disalin ke Azure seperti NewestFirst atau OldestFirst.
  • Tentukan akun Azure Storage yang ingin Anda unggah datanya.
  • Tentukan kontainer yang ingin Anda unggah ke Azure. Modul ini memungkinkan Anda menentukan nama kontainer sumber dan target.
  • Pilih kemampuan untuk menghapus blob segera, setelah diunggah ke penyimpanan cloud selesai
  • Lakukan unggah blob penuh (menggunakan Put Blob operasi) dan unggah tingkat blok (menggunakan Put Block, Put Block List dan Append Block operasi).

Modul ini menggunakan upload level blok, ketika blob Anda terdiri dari blok. Berikut adalah beberapa skenario umum:

  • Aplikasi Anda memperbarui beberapa blok blob blok yang diunggah sebelumnya atau menambahkan blok baru ke blob penambahan. Modul ini hanya mengunggah blok yang diperbarui dan bukan seluruh blob.
  • Modul ini mengunggah blob dan koneksi internet hilang, ketika konektivitas kembali lagi itu hanya mengunggah blok yang tersisa dan bukan seluruh blob.

Jika penghentian proses yang tidak terduga (seperti kegagalan daya) terjadi selama pengunggahan blob, semua blok yang jatuh tempo untuk unggahan diunggah lagi setelah modul kembali online.

deviceAutoDelete adalah fungsionalitas yang dapat dikonfigurasi. Fungsi ini secara otomatis menghapus blob Anda dari penyimpanan lokal ketika durasi yang ditentukan (diukur dalam menit) kedaluwarsa. Ini memungkinkan Anda untuk:

  • Aktifkan/Non aktifkan fitur deviceAutoDelete.
  • Tentukan waktu dalam menit (deleteAfterMinutes) setelah blob dihapus secara otomatis.
  • Pilih kemampuan untuk mempertahankan blob saat diunggah jika nilai deleteAfterMinutes kedaluwarsa.

Prasyarat

Perangkat Azure IoT Edge:

  • Anda dapat menggunakan komputer pengembangan atau komputer virtual Anda sebagai perangkat IoT Edge dengan mengikuti langkah-langkah dalam mulai cepat untuk perangkat Linux atau Windows.

  • Lihat sistem yang didukung Azure IoT Edge untuk daftar sistem operasi dan arsitektur yang didukung. Azure Blob Storage pada modul IoT Edge mendukung arsitektur berikut:

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

Sumber daya cloud:

IoT Hub tingkat standar di Azure.

deviceToCloudUpload dan deviceAutoDelete properties

Gunakan properti yang diinginkan modul untuk mengatur deviceToCloudUploadProperties dan deviceAutoDeleteProperties. Properti yang diinginkan dapat diatur selama penyebaran atau diubah nanti dengan mengedit modul twin tanpa perlu melakukan penyebaran ulang. Sebaiknya periksa "Module Twin" untuk reported configuration dan configurationValidation memastikan nilai yang disebarluaskan dengan benar.

deviceToCloudUploadProperties

Nama pengaturan ini adalah deviceToCloudUploadProperties. Jika Anda menggunakan simulator IoT Edge, atur nilai ke variabel lingkungan terkait untuk properti ini, yang dapat Anda temukan di bagian penjelasan.

Properti Nilai yang Mungkin Penjelasan
uploadOn true, false Atur ke false secara default. Jika Anda ingin mengaktifkan fitur, atur bidang ini ke true.

Variabel Lingkungan: deviceToCloudUploadProperties__uploadOn={false,true}
uploadOrder NewestFirst, OldestFirst Memungkinkan Anda memilih urutan di mana data disalin ke Azure. Atur ke OldestFirst secara default. Urutan ditentukan oleh waktu terakhir blob yang dimodifikasi.

Variabel Lingkungan: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloudStorageConnectionString "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>" adalah string koneksi yang memungkinkan Anda menentukan akun penyimpanan yang Anda inginkan untuk mengunggah data Anda. Tentukan Azure Storage Account Name, Azure Storage Account Key, End point suffix. Tambahkan EndpointSuffix Azure yang sesuai tempat data diunggah, data bervariasi untuk Global Azure, Government Azure, dan Microsoft Azure Stack.

Anda dapat memilih untuk menentukan string koneksi Azure Storage SAS di sini. Tetapi Anda harus memperbarui properti ini ketika properti kedaluwarsa. Izin SAS mungkin termasuk membuat akses untuk kontainer dan membuat, menulis, dan menambahkan akses untuk blob.

Variabel Lingkungan: 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"}
Memungkinkan Anda menentukan nama kontainer yang ingin Anda unggah ke Azure. Modul ini memungkinkan Anda menentukan nama kontainer sumber dan target. Jika Anda tidak menentukan nama kontainer target, nama kontainer tersebut secara otomatis diberi nama kontainer seperti <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>. Anda dapat membuat string templat untuk nama kontainer target, lihat kolom nilai yang mungkin.
* %h -> Nama IoT Hub (3-50 karakter).
* %d -> ID Perangkat IoT Edge (1 hingga 129 karakter).
* %m -> Nama Modul (1 hingga 64 karakter).
* %c -> Nama Kontainer Sumber (3 hingga 63 karakter).

Ukuran maksimum nama kontainer adalah 63 karakter. Nama secara otomatis diberi nama kontainer target jika ukuran kontainer melebihi 63 karakter. Dalam hal ini, nama dipangkas di setiap bagian (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) menjadi 15 karakter.

Variabel Lingkungan: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload true, false Atur ke false secara default. Saat diatur ke true, data akan dihapus secara otomatis saat unggahan ke penyimpanan cloud selesai.

PERHATIAN: Jika Anda menggunakan blob penambahan, pengaturan ini akan menghapus blob penambahan dari penyimpanan lokal setelah pengunggahan berhasil, dan operasi Blok Penambahan di masa mendatang ke blob tersebut akan gagal. Gunakan pengaturan ini dengan hati-hati. Jangan aktifkan pengaturan ini jika aplikasi Anda jarang melakukan operasi penambahan atau tidak mendukung operasi penambahan berkelanjutan

Variabel Lingkungan: deviceToCloudUploadProperties__deleteAfterUpload={false,true}.

deviceAutoDeleteProperties

Nama pengaturan ini adalah deviceAutoDeleteProperties. Jika Anda menggunakan simulator IoT Edge, atur nilai ke variabel lingkungan terkait untuk properti ini, yang dapat Anda temukan di bagian penjelasan.

Properti Nilai yang Mungkin Penjelasan
deleteOn true, false Atur ke false secara default. Jika Anda ingin mengaktifkan fitur, atur bidang ini ke true.

Variabel Lingkungan: deviceAutoDeleteProperties__deleteOn={false,true}
deleteAfterMinutes <minutes> Tentukan waktu dalam menit. Modul secara otomatis menghapus blob Anda dari penyimpanan lokal saat nilai ini kedaluwarsa. Menit maksimum saat ini yang diizinkan adalah 35791.

Variabel Lingkungan: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes>
retainWhileUploading true, false Secara default diatur ke , dan mempertahankan blob saat diunggah ke penyimpanan cloud jika deleteAfterMinutes kedaluwarsatrue. Anda dapat mengaturnya ke false dan menghapus data segera setelah deleteAfterMinutes kedaluwarsa. Catatan: Agar properti ini berfungsi uploadOn harus diatur ke true.

PERHATIAN: Jika Anda menggunakan blob penambahan, pengaturan ini akan menghapus blob penambahan dari penyimpanan lokal saat nilai kedaluwarsa, dan operasi Blok Penambahan di masa mendatang ke blob tersebut gagal. Pastikan nilai kedaluwarsa cukup besar untuk frekuensi operasi penambalan yang diharapkan yang dilakukan oleh aplikasi Anda.

Variabel Lingkungan: deviceAutoDeleteProperties__retainWhileUploading={false,true}

Menggunakan berbagi SMB sebagai penyimpanan lokal Anda

Anda dapat menyediakan berbagi SMB sebagai jalur penyimpanan lokal Anda, ketika Anda menyebarkan kontainer Windows modul ini pada host Windows.

Pastikan berbagi SMB dan perangkat IoT berada di domain yang saling tepercaya.

Anda dapat menjalankan New-SmbGlobalMapping perintah PowerShell untuk memetakan berbagi SMB secara lokal pada perangkat IoT yang menjalankan Windows.

Langkah-langkah konfigurasi:

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

Contohnya:

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

Perintah ini menggunakan kredensial untuk mengautentikasi dengan server SMB jarak jauh. Kemudian, petakan jalur berbagi jarak jauh ke huruf drive G: (dapat menjadi huruf drive lain yang tersedia). Perangkat IoT sekarang memiliki volume data yang dipetakan ke jalur pada drive G: .

Pastikan pengguna di perangkat IoT dapat membaca/menulis ke bagi-pakai SMB jarak jauh.

Untuk penyebaran Anda, nilainya <storage mount> bisa G:/ContainerData:C:/BlobRoot.

Memberikan akses direktori ke pengguna kontainer di Linux

Jika Anda menggunakan pemasangan volume untuk penyimpanan dalam opsi buat untuk kontainer Linux, maka Anda tidak perlu melakukan langkah tambahan apa pun, tetapi jika Anda menggunakan pemasangan ikat, maka langkah-langkah ini diperlukan untuk menjalankan layanan dengan benar.

Mengikuti prinsip hak istimewa paling rendah untuk membatasi hak akses bagi pengguna hingga izin minimum yang mereka perlukan untuk melakukan pekerjaan mereka, modul ini mencakup pengguna (nama: absie, ID: 11000) dan grup pengguna (nama: absie, ID: 11000 ). Jika kontainer dimulai sebagai root (pengguna default adalah root), layanan kami dimulai sebagai pengguna absie dengan hak istimewa rendah.

Perilaku ini membuat konfigurasi izin pada jalur host mengikat sangat penting agar layanan berfungsi dengan benar, jika tidak, layanan mengalami crash dengan kesalahan akses yang ditolak. Jalur yang digunakan dalam pengikatan direktori harus dapat diakses oleh pengguna kontainer (contoh: absie 11000). Anda dapat memberikan akses pengguna kontainer ke direktori dengan menjalankan perintah ini pada host:

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

Contohnya:

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

Jika Anda perlu menjalankan layanan sebagai pengguna selain absie, Anda dapat menentukan ID pengguna kustom Anda di createOptions di bawah properti "Pengguna" dalam manifes penyebaran Anda. Dalam kasus seperti itu, gunakan ID 0grup default atau akar .

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

Sekarang, berikan akses pengguna kontainer ke direktori

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

Mengonfigurasi file log

Tingkat log output default adalah 'Info'. Untuk mengubah tingkat log output, atur LogLevel variabel lingkungan untuk modul ini dalam manifes penyebaran. LogLevel menerima nilai berikut:

  • Kritis
  • Kesalahan
  • Peringatan
  • Info
  • Debug

Untuk informasi tentang mengonfigurasi file log untuk modul Anda, lihat praktik terbaik produksi ini.

Menyambungkan ke modul penyimpanan blob Anda

Anda dapat menggunakan nama akun dan kunci akun yang dikonfigurasi untuk modul Anda untuk mengakses penyimpanan blob di perangkat IoT Edge Anda.

Tentukan perangkat IoT Edge Anda sebagai titik akhir blob untuk setiap permintaan penyimpanan yang Anda buat untuk itu. Anda dapat Membuat string koneksi untuk titik akhir penyimpanan eksplisit menggunakan informasi perangkat IoT Edge dan nama akun yang Anda konfigurasi.

  • Untuk modul yang digunakan pada perangkat yang sama dengan tempat Azure Blob Storage pada modul IoT Edge berjalan, titik akhir blob adalah: http://<module name>:11002/<account name>.
  • Untuk modul atau aplikasi yang berjalan di perangkat lain, Anda harus memilih titik akhir yang tepat untuk jaringan Anda. Bergantung pada pengaturan jaringan Anda, pilih format titik akhir sedemikian rupa sehingga lalu lintas data dari modul atau aplikasi eksternal Anda dapat menjangkau perangkat yang menjalankan Azure Blob Storage pada modul IoT Edge. Titik akhir blob untuk skenario ini adalah salah satu dari:
    • http://<device IP >:11002/<account name>
    • http://<IoT Edge device hostname>:11002/<account name>
    • http://<fully qualified domain name>:11002/<account name>

Penting

Azure IoT Edge peka huruf besar kecil saat Anda melakukan panggilan ke modul, dan Storage SDK juga default untuk huruf kecil. Mengubah nama menjadi huruf kecil membantu memastikan bahwa koneksi Anda ke Azure Blob Storage pada modul IoT Edge tidak terganggu.

Sampel mulai cepat Azure Blob Storage

Dokumentasi Azure Blob Storage menyertakan kode sampel mulai cepat dalam beberapa bahasa. Anda dapat menjalankan sampel ini untuk menguji Azure Blob Storage di IoT Edge dengan mengubah titik akhir blob untuk terhubung ke modul penyimpanan blob lokal Anda.

Sampel mulai cepat berikut menggunakan bahasa yang juga didukung oleh IoT Edge, sehingga Anda dapat menyebarkannya sebagai modul IoT Edge bersama modul penyimpanan blob:

  • .NET
    • Azure Blob Storage pada modul IoT Edge v1.4.0 dan yang lebih lama kompatibel dengan WindowsAzure.Storage 9.3.3 SDK dan v1.4.1 juga mendukung Azure.Storage.Blobs 12.8.0 SDK.
  • Python
    • Versi sebelum V2.1 dari Python SDK memiliki masalah yang diketahui di mana modul tidak mengembalikan waktu pembuatan blob. Karena masalah itu, beberapa metode seperti blob daftar tidak berfungsi. Sebagai solusinya, secara eksplisit mengatur versi API pada klien blob ke '2017-04-17'. Contoh: block_blob_service._X_MS_VERSION = '2017-04-17'
    • Append Blob Sample
  • Node.js
  • JS/HTML
  • Ruby
  • Go
  • PHP

Menyambungkan ke penyimpanan lokal Anda dengan Azure Storage Explorer

Anda dapat menggunakan Azure Storage Explorer untuk menyambungkan ke akun penyimpanan lokal Anda.

  1. Mengunduh dan memasang Azure Storage Explorer

  2. Versi terbaru Azure Storage Explorer menggunakan versi API penyimpanan yang lebih baru yang tidak didukung oleh modul penyimpanan blob. Mulai Azure Storage Explorer. Pilih menu Edit. Verifikasi API Target Azure Stack Hub dipilih. Jika tidak, pilih Target Azure Stack Hub. Mulai ulang Azure Storage Explorer agar perubahan diterapkan. Konfigurasi ini diperlukan untuk kompatibilitas dengan lingkungan IoT Edge Anda.

  3. Menyambungkan ke Azure Storage menggunakan string koneksi

  4. Sediakan string koneksi: DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;

  5. Lakukan langkah-langkah untuk menyambungkan.

  6. Buat kontainer di dalam akun penyimpanan lokal Anda

  7. Mulai unggah file sebagai Blokir blob atau Tambahkan blob.

    Catatan

    Modul ini tidak mendukung blob Halaman.

  8. Anda juga dapat memilih untuk menyambungkan akun penyimpanan Azure Anda di Storage Explorer. Konfigurasi ini memberi Anda satu tampilan untuk akun penyimpanan lokal dan akun penyimpanan Azure Anda

Operasi penyimpanan yang didukung

Modul penyimpanan blob di IoT Edge menggunakan Azure Storage SDK, dan konsisten dengan Azure Storage API versi 2017-04-17 untuk titik akhir blob block.

Karena tidak semua operasi Azure Blob Storage didukung oleh Azure Blob Storage di IoT Edge, bagian ini mencantumkan status masing-masing.

Akun

Didukung:

  • Mencantumkan kontainer

Tidak didukung:

  • Dapatkan dan atur properti layanan blob
  • Permintaan blob preflight
  • Mendapatkan statistik layanan blob
  • Mendapatkan informasi akun

Kontainer

Didukung:

  • Membuat dan menghapus kontainer
  • Mendapatkan properti kontainer dan metadata
  • Daftar blob
  • Dapatkan dan atur kontainer ACL
  • Set metadata kontainer

Tidak didukung:

  • Menyewa kontainer

Blobs

Didukung:

  • Masukkan, dapatkan, dan hapus blob
  • Dapatkan dan set properti blob
  • Dapatkan dan set metadata blob

Tidak didukung:

  • Menyewa Blob
  • Rekam jepret blob
  • Salin dan batalkan blob salinan
  • Membatalkan penghapusan Blob
  • Set tingkat blob

Blob blok

Didukung:

  • Masukkan blok
  • Masukkan dan dapatkan daftar blokir

Tidak didukung:

  • Masukkan blok dari URL

Blob tambahan

Didukung:

  • Tambahkan blok

Tidak didukung:

  • Tambahkan Blok dari URL

Event Grid pada IoT Edge Integration

Perhatian

Integrasi dengan Event Grid pada IoT Edge sedang dalam pratinjau

Modul Azure Blob Storage pada IoT Edge ini sekarang menyediakan integrasi dengan Event Grid di IoT Edge. Untuk informasi terperinci tentang integrasi ini, lihat tutorial untuk menyebarkan modul, mempublikasikan peristiwa, dan memverifikasi pengiriman peristiwa.

Catatan Rilis

Berikut adalah catatan rilis di docker hub untuk modul ini. Anda mungkin dapat menemukan informasi lebih lanjut yang terkait dengan perbaikan bug dan perbaikan dalam catatan rilis versi tertentu.

Langkah berikutnya

Pelajari cara Menggunakan Azure Blob Storage di IoT Edge

Tetap up-to-date dengan pembaruan dan pengumuman terbaru di Azure Blob Storage di halaman catatan rilis IoT Edge.