Bagikan melalui


Memberikan akses modul Azure IoT Edge ke penyimpanan lokal perangkat

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.

Modul IoT Edge dapat menggunakan penyimpanan pada perangkat IoT Edge host itu sendiri untuk meningkatkan keandalan, terutama saat beroperasi secara offline.

Mengonfigurasi modul sistem untuk menggunakan penyimpanan persisten

Secara default, modul sistem IoT Edge, agen IoT Edge, dan hub IoT Edge, menyimpan status dalam sistem file sementara instans kontainer mereka. Status ini hilang ketika instans kontainer didaur ulang, misalnya, ketika versi gambar modul atau createOptions diperbarui.

Untuk skenario produksi, gunakan lokasi penyimpanan persisten pada sistem file host untuk menyimpan status modul sistem. Melakukannya meningkatkan ketahanan solusi dan jaminan pengiriman pesan cloud.

Untuk menyiapkan modul sistem untuk menggunakan penyimpanan persisten:

  1. Untuk hub IoT Edge dan agen IoT Edge, tambahkan variabel lingkungan yang disebut StorageFolder yang menunjuk ke direktori dalam modul.

  2. Untuk hub IoT Edge dan agen IoT Edge, tambahkan ikatan untuk menyambungkan direktori lokal di komputer host ke direktori dalam modul. Contohnya:

    Cuplikan layar yang memperlihatkan cara menambahkan opsi pembuatan dan variabel lingkungan untuk penyimpanan lokal.

    Ganti <HostStoragePath> dan <ModuleStoragePath> dengan jalur penyimpanan host dan modul Anda. Kedua nilai harus merupakan jalur absolut dan <HostStoragePath> harus ada.

Anda dapat mengonfigurasi penyimpanan lokal langsung dalam manifes penyebaran. Misalnya, jika Anda ingin memetakan jalur penyimpanan berikut:

Modul Jalur penyimpanan host Jalur penyimpanan modul
edgeAgent /srv/edgeAgent /tmp/edgeAgent
edgeHub /srv/edgeHub /tmp/edgeHub

Manifes penyebaran Anda akan mirip dengan yang berikut ini:

"systemModules": {
    "edgeAgent": {
        "env": {
            "StorageFolder": {
                "value": "/tmp/edgeAgent"
            }
        },
        "settings": {
            "image": "mcr.microsoft.com/azureiotedge-agent:1.5",
            "createOptions": "{\"HostConfig\":{\"Binds\":[\"/srv/edgeAgent:/tmp/edgeAgent\"]}}"
        },
        "type": "docker"
    },
    "edgeHub": {
        "env": {
            "StorageFolder": {
                "value": "/tmp/edgeHub"
            }
        },
        "restartPolicy": "always",
        "settings": {
            "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
            "createOptions": "{\"HostConfig\":{\"Binds\":[\"/srv/edgeHub:/tmp/edgeHub\"],\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
        },
        "status": "running",
        "type": "docker"
    }
}

Catatan

Jika Anda menggunakan penginstalan snap, pastikan Anda memilih jalur penyimpanan host yang dapat diakses oleh snap. Contohnya,$HOME/snap/azure-iot-edge/current/modules/.

Manajemen izin sistem host otomatis

Pada versi 1.4 dan yang lebih baru, tidak perlu mengatur kepemilikan atau izin secara manual untuk penyimpanan host yang StorageFoldermendukung . Izin dan kepemilikan dikelola secara otomatis oleh modul sistem selama startup.

Catatan

Manajemen izin otomatis penyimpanan terikat host hanya berlaku untuk modul sistem, agen IoT Edge, dan hub Edge. Untuk modul kustom, manajemen manual izin dan kepemilikan penyimpanan host terikat diperlukan jika kontainer modul kustom tidak berjalan sebagai root pengguna.

Jika modul kustom Anda memerlukan akses ke penyimpanan persisten pada sistem file host, gunakan opsi buat modul untuk mengikat folder penyimpanan dalam kontainer modul ke folder di komputer host. Contohnya:

{
  "HostConfig": {
    "Mounts": [
      {
        "Target": "<ModuleStoragePath>",
        "Source": "<HostStoragePath>",
        "Type": "bind",
        "ReadOnly": false
      }
    ]
  }
}

Ganti <HostStoragePath> dan <ModuleStoragePath> dengan jalur penyimpanan host dan modul Anda; kedua nilai harus merupakan jalur mutlak. Lihat spesifikasi Docker Engine Mount untuk detail opsi.

Izin sistem host

Pastikan bahwa profil pengguna yang digunakan modul Anda memiliki izin baca, tulis, dan jalankan yang diperlukan ke direktori sistem host. Secara default, kontainer berjalan sebagai root pengguna yang sudah memiliki izin yang diperlukan. Tetapi Dockerfile modul Anda mungkin menentukan penggunaan pengguna non-root dalam hal ini izin penyimpanan host harus dikonfigurasi secara manual.

Ada beberapa cara untuk mengelola izin direktori pada sistem Linux, termasuk menggunakan chown untuk mengubah pemilik direktori lalu chmod mengubah izin. Misalnya untuk mengizinkan akses penyimpanan host ke modul yang berjalan sebagai ID pengguna non-root 1000, gunakan perintah berikut:

sudo chown 1000 <HostStoragePath>
sudo chmod 700 <HostStoragePath>

Data terenkripsi dalam penyimpanan modul

Saat modul memanggil API beban kerja daemon IoT Edge untuk mengenkripsi data, kunci enkripsi diturunkan menggunakan ID modul dan ID pembuatan modul. ID pembuatan digunakan untuk melindungi rahasia jika modul dihapus dari penyebaran, lalu modul lain dengan ID modul yang sama kemudian disebarkan ke perangkat yang sama. Anda dapat melihat ID pembuatan modul menggunakan perintah Azure CLI az iot hub module-identity show.

Jika Anda ingin berbagi file antar modul lintas generasi, file tersebut tidak boleh berisi rahasia apa pun atau file akan gagal didekripsi.

Langkah berikutnya

Untuk contoh tambahan mengakses penyimpanan host dari modul, lihat Menyimpan data di tepi dengan Azure Blob Storage dalam IoT Edge.