Store data at the edge with Azure Blob Storage on IoT Edge (Przechowywanie danych na urządzeniu brzegowym dzięki usłudze Azure Blob Storage w usłudze IoT Edge)

Dotyczy:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5 Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Usługa Azure Blob Storage w usłudze IoT Edge udostępnia blokowe rozwiązanie magazynu obiektów blob i uzupełnialnych obiektów blob na brzegu sieci. Moduł magazynu obiektów blob na urządzeniu usługi IoT Edge zachowuje się jak usługa Azure Blob Service, z wyjątkiem obiektów blob przechowywanych lokalnie na urządzeniu usługi IoT Edge. Dostęp do obiektów blob można uzyskać przy użyciu tych samych metod zestawu SDK usługi Azure Storage lub wywołań interfejsu API obiektów blob, do których już używasz. W tym artykule wyjaśniono pojęcia związane z usługą Azure Blob Storage w kontenerze usługi IoT Edge, który uruchamia usługę obiektów blob na urządzeniu usługi IoT Edge.

Ten moduł jest przydatny w scenariuszach:

  • Gdzie dane muszą być przechowywane lokalnie, dopóki nie będą mogły być przetwarzane lub przesyłane do chmury. Te dane mogą być filmami wideo, obrazami, danymi finansowymi, danymi szpitali lub innymi danymi bez struktury.
  • Gdy urządzenia znajdują się w miejscu z ograniczoną łącznością.
  • Jeśli chcesz efektywnie przetwarzać dane lokalnie, aby uzyskać dostęp do danych o małym opóźnieniu, tak aby można było jak najszybciej reagować na sytuacje awaryjne.
  • Jeśli chcesz zmniejszyć koszty przepustowości i uniknąć transferu terabajtów danych do chmury. Dane można przetwarzać lokalnie i wysyłać tylko przetworzone dane do chmury.

Ten moduł zawiera funkcje deviceToCloudUpload i deviceAutoDelete .

Funkcja deviceToCloudUpload to konfigurowalna funkcja. Ta funkcja automatycznie przekazuje dane z lokalnego magazynu obiektów blob na platformę Azure z sporadycznymi obsługą łączności z Internetem. Umożliwia to:

  • Włącz/WYŁĄCZ funkcję deviceToCloudUpload.
  • Wybierz kolejność kopiowania danych na platformę Azure, na przykład NajnowszyFirst lub NajstarszyFirst.
  • Określ konto usługi Azure Storage, do którego chcesz przekazać dane.
  • Określ kontenery, które chcesz przekazać na platformę Azure. Ten moduł umożliwia określenie nazw kontenerów źródłowych i docelowych.
  • Wybierz możliwość natychmiastowego usunięcia obiektów blob po zakończeniu przekazywania do magazynu w chmurze
  • Wykonaj pełne przekazywanie obiektów blob (przy użyciu Put Blob operacji) i przekazywanie na poziomie bloku (przy użyciu operacji Put BlockPut Block List i ).Append Block

W tym module jest używane przekazywanie na poziomie bloku, gdy obiekt blob składa się z bloków. Oto niektóre typowe scenariusze:

  • Aplikacja aktualizuje niektóre bloki wcześniej przekazanego blokowego obiektu blob lub dołącza nowe bloki do uzupełnialnych obiektów blob. Ten moduł przekazuje tylko zaktualizowane bloki, a nie cały obiekt blob.
  • Moduł przekazuje obiekt blob, a połączenie internetowe zniknie, gdy łączność zostanie ponownie przekazana tylko pozostałe bloki, a nie cały obiekt blob.

Jeśli podczas przekazywania obiektu blob wystąpi nieoczekiwane zakończenie procesu (na przykład awaria zasilania), wszystkie bloki z powodu przekazania zostaną przekazane ponownie po powrocie modułu do trybu online.

deviceAutoDelete to konfigurowalna funkcja. Ta funkcja automatycznie usuwa obiekty blob z magazynu lokalnego po wygaśnięciu określonego czasu trwania (mierzonego w minutach). Umożliwia to:

  • Włącz/wyłącz funkcję deviceAutoDelete.
  • Określ czas w minutach (deleteAfterMinutes), po którym obiekty blob są automatycznie usuwane.
  • Wybierz możliwość zachowania obiektu blob podczas przekazywania, jeśli wartość deleteAfterMinutes wygaśnie.

Wymagania wstępne

Urządzenie usługi Azure IoT Edge:

  • Maszynę deweloperską lub maszynę wirtualną można używać jako urządzenia usługi IoT Edge, wykonując kroki opisane w przewodniku Szybki start dla urządzeń z systemem Linux lub Windows.

  • Zapoznaj się z obsługiwanymi systemami usługi Azure IoT Edge, aby zapoznać się z listą obsługiwanych systemów operacyjnych i architektur. Moduł Azure Blob Storage w usłudze IoT Edge obsługuje następujące architektury:

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

Zasoby w chmurze:

Usługa IoT Hub w warstwie Standardowa na platformie Azure.

deviceToCloudUpload i właściwości deviceAutoDelete

Użyj żądanych właściwości modułu, aby ustawić właściwości deviceToCloudUploadProperties i deviceAutoDeleteProperties. Żądane właściwości można ustawić podczas wdrażania lub zmienić później, edytując bliźniacze reprezentację modułu bez konieczności ponownego wdrażania. Zalecamy sprawdzenie elementu "Bliźniacza reprezentacja modułu" i reported configurationconfigurationValidation upewnienie się, że wartości są prawidłowo propagowane.

deviceToCloudUploadProperties

Nazwa tego ustawienia to deviceToCloudUploadProperties. Jeśli używasz symulatora usługi IoT Edge, ustaw wartości powiązanych zmiennych środowiskowych dla tych właściwości, które można znaleźć w sekcji wyjaśnienia.

Właściwości Możliwe wartości Wyjaśnienie
uploadOn wartość true, false Ustaw wartość domyślnie false . Jeśli chcesz włączyć funkcję, ustaw to pole na true.

Zmienna środowiskowa: deviceToCloudUploadProperties__uploadOn={false,true}
uploadOrder NajnowszyFirst, NajstarszyFirst Umożliwia wybranie kolejności kopiowania danych na platformę Azure. Ustaw wartość domyślnie OldestFirst . Kolejność jest określana przez czas ostatniej modyfikacji obiektu blob.

Zmienna środowiskowa: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloudStorage Połączenie ionString "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>"to parametry połączenia, która umożliwia określenie konta magazynu, do którego mają zostać przekazane dane. Określ Azure Storage Account Name, , Azure Storage Account Key. End point suffix Dodaj odpowiedni element EndpointSuffix platformy Azure, w którym są przekazywane dane, różni się w przypadku platformy Azure globalnej, platformy Azure dla instytucji rządowych i usługi Microsoft Azure Stack.

W tym miejscu możesz określić parametry połączenia sygnatury dostępu współdzielonego usługi Azure Storage. Należy jednak zaktualizować tę właściwość po wygaśnięciu. Uprawnienia sygnatury dostępu współdzielonego mogą obejmować dostęp do kontenerów oraz tworzenie, zapisywanie i dodawanie dostępu do obiektów blob.

Zmienna środowiskowa: 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"}
Umożliwia określenie nazw kontenerów, które mają zostać przekazane na platformę Azure. Ten moduł umożliwia określenie nazw kontenerów źródłowych i docelowych. Jeśli nie określisz docelowej nazwy kontenera, zostanie automatycznie przypisana nazwa kontenera, taka jak <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>. Możesz utworzyć ciągi szablonu dla docelowej nazwy kontenera, wyewidencjonować możliwą kolumnę wartości.
* %h —> nazwa centrum IoT (od 3 do 50 znaków).
* %d —> identyfikator urządzenia usługi IoT Edge (od 1 do 129 znaków).
* %m —> nazwa modułu (od 1 do 64 znaków).
* %c —> nazwa kontenera źródłowego (od 3 do 63 znaków).

Maksymalny rozmiar nazwy kontenera to 63 znaki. Nazwa jest przypisywana automatycznie jako nazwa kontenera docelowego, jeśli rozmiar kontenera przekracza 63 znaki. W takim przypadku nazwa jest przycinana w każdej sekcji (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) do 15 znaków.

Zmienna środowiskowa: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload wartość true, false Ustaw wartość domyślnie false . Po ustawieniu truewartości na wartość dane zostaną automatycznie usunięte po zakończeniu przekazywania do magazynu w chmurze.

UWAGA: Jeśli używasz uzupełnialnych obiektów blob, to ustawienie usuwa uzupełnialne obiekty blob z magazynu lokalnego po pomyślnym przekazaniu, a wszystkie przyszłe operacje bloków dołączania do tych obiektów blob nie powiedzą się. Użyj tego ustawienia z ostrożnością. Nie włączaj tego ustawienia, jeśli aplikacja rzadko wykonuje operacje dołączania lub nie obsługuje ciągłych operacji dołączania

Zmienna środowiskowa: deviceToCloudUploadProperties__deleteAfterUpload={false,true}.

deviceAutoDeleteProperties

Nazwa tego ustawienia to deviceAutoDeleteProperties. Jeśli używasz symulatora usługi IoT Edge, ustaw wartości powiązanych zmiennych środowiskowych dla tych właściwości, które można znaleźć w sekcji wyjaśnienia.

Właściwości Możliwe wartości Wyjaśnienie
deleteOn wartość true, false Ustaw wartość domyślnie false . Jeśli chcesz włączyć funkcję, ustaw to pole na true.

Zmienna środowiskowa: deviceAutoDeleteProperties__deleteOn={false,true}
deleteAfterMinutes <minutes> Określ czas w minutach. Moduł automatycznie usuwa obiekty blob z magazynu lokalnego po wygaśnięciu tej wartości. Bieżąca dozwolona maksymalna liczba minut to 35791.

Zmienna środowiskowa: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes>
retainWhileUploading wartość true, false Domyślnie jest ono ustawione na truewartość i zachowuje obiekt blob podczas przekazywania do magazynu w chmurze, jeśli deleteAfterMinutes wygaśnie. Można je ustawić false na i usuwać dane zaraz po deleteAfterMinutes wygaśnięciu. Uwaga: dla tej właściwości do pracy uploadOn należy ustawić wartość true.

UWAGA: Jeśli używasz uzupełnialnych obiektów blob, to ustawienie usuwa uzupełnialne obiekty blob z magazynu lokalnego po wygaśnięciu wartości, a wszelkie przyszłe operacje dołączania bloków do tych obiektów blob kończą się niepowodzeniem. Upewnij się, że wartość wygaśnięcia jest wystarczająco duża dla oczekiwanej częstotliwości operacji dołączania wykonywanych przez aplikację.

Zmienna środowiskowa: deviceAutoDeleteProperties__retainWhileUploading={false,true}

Używanie udziału SMB jako magazynu lokalnego

Udział SMB można podać jako lokalną ścieżkę magazynu podczas wdrażania kontenera systemu Windows tego modułu na hoście systemu Windows.

Upewnij się, że udział SMB i urządzenie IoT znajdują się w wzajemnie zaufanych domenach.

Możesz uruchomić New-SmbGlobalMapping polecenie programu PowerShell, aby mapować udział SMB lokalnie na urządzeniu IoT z systemem Windows.

Kroki konfiguracji:

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

Na przykład:

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

To polecenie używa poświadczeń do uwierzytelniania za pomocą zdalnego serwera SMB. Następnie zamapuj zdalną ścieżkę udziału na literę dysku G: (może to być dowolna inna dostępna litera dysku). Urządzenie IoT ma teraz wolumin danych zamapowany na ścieżkę na dysku G:.

Upewnij się, że użytkownik na urządzeniu IoT może odczytywać/zapisywać w zdalnym udziale SMB.

W przypadku wdrożenia wartością <storage mount> może być G:/ContainerData:C:/BlobRoot.

Udzielanie dostępu do katalogu użytkownikowi kontenera w systemie Linux

Jeśli używasz instalacji woluminu do magazynowania w opcjach tworzenia dla kontenerów systemu Linux, nie musisz wykonywać żadnych dodatkowych kroków, ale jeśli używasz instalacji powiązanej, te kroki są wymagane do poprawnego uruchomienia usługi.

Zgodnie z zasadą najniższych uprawnień, aby ograniczyć uprawnienia dostępu dla użytkowników w celu uzyskania minimalnych uprawnień wymaganych do wykonania pracy, ten moduł obejmuje użytkownika (nazwę: absie, identyfikator: 11000) i grupę użytkowników (nazwa: absie, identyfikator: 11000). Jeśli kontener został uruchomiony jako użytkownik główny (domyślny użytkownik jest użytkownikiem głównym), usługa jest uruchamiana jako użytkownik absie o niskich uprawnieniach.

To zachowanie sprawia, że konfiguracja uprawnień na ścieżce hosta wiąże kluczowe znaczenie dla prawidłowej pracy usługi, w przeciwnym razie usługa ulega awarii z błędami odmowy dostępu. Ścieżka używana w powiązaniu katalogu musi być dostępna dla użytkownika kontenera (na przykład: absie 11000). Możesz udzielić użytkownikowi kontenera dostępu do katalogu, wykonując następujące polecenia na hoście:

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

Na przykład:

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

Jeśli musisz uruchomić usługę jako użytkownik inny niż absie, możesz określić niestandardowy identyfikator użytkownika w obszarze createOptions we właściwości "Użytkownik" w manifeście wdrożenia. W takim przypadku użyj domyślnego lub głównego identyfikatora 0grupy .

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

Teraz przyznaj użytkownikowi kontenera dostęp do katalogu

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

Konfigurowanie plików dziennika

Domyślny poziom dziennika danych wyjściowych to "Informacje". Aby zmienić poziom dziennika danych wyjściowych, ustaw zmienną LogLevel środowiskową dla tego modułu w manifeście wdrożenia. LogLevel akceptuje następujące wartości:

  • Krytyczne
  • Błąd
  • Ostrzeżenie
  • Informacje
  • Debugowanie

Aby uzyskać informacje na temat konfigurowania plików dziennika dla modułu, zobacz te najlepsze rozwiązania dotyczące produkcji.

Połączenie do modułu magazynu obiektów blob

Możesz użyć nazwy konta i klucza konta skonfigurowanego dla modułu, aby uzyskać dostęp do magazynu obiektów blob na urządzeniu usługi IoT Edge.

Określ urządzenie usługi IoT Edge jako punkt końcowy obiektu blob dla wszystkich żądań magazynu, które do niego wysyłasz. Możesz utworzyć parametry połączenia dla jawnego punktu końcowego magazynu przy użyciu informacji o urządzeniu usługi IoT Edge i skonfigurowanej nazwy konta.

  • W przypadku modułów wdrożonych na tym samym urządzeniu, w którym działa moduł Azure Blob Storage w usłudze IoT Edge, punkt końcowy obiektu blob to: http://<module name>:11002/<account name>.
  • W przypadku modułów lub aplikacji działających na innym urządzeniu należy wybrać odpowiedni punkt końcowy dla sieci. W zależności od konfiguracji sieci wybierz format punktu końcowego, tak aby ruch danych z modułu zewnętrznego lub aplikacji mógł dotrzeć do urządzenia z uruchomionym modułem usługi Azure Blob Storage w usłudze IoT Edge. Punkt końcowy obiektu blob dla tego scenariusza jest jednym z następujących elementów:
    • http://<device IP >:11002/<account name>
    • http://<IoT Edge device hostname>:11002/<account name>
    • http://<fully qualified domain name>:11002/<account name>

Ważne

Usługa Azure IoT Edge uwzględnia wielkość liter podczas wykonywania wywołań do modułów, a zestaw SDK usługi Storage również domyślnie ma małe litery. Chociaż nazwa modułu w witrynie Azure Marketplace to AzureBlobStorageonIoTEdge, zmiana nazwy na małe litery pomaga upewnić się, że połączenia z usługą Azure Blob Storage w usłudze IoT Edge nie są przerywane.

Przykłady szybkiego startu dla usługi Azure Blob Storage

Dokumentacja usługi Azure Blob Storage zawiera przykładowy kod szybkiego startu w kilku językach. Możesz uruchomić te przykłady, aby przetestować usługę Azure Blob Storage w usłudze IoT Edge, zmieniając punkt końcowy obiektu blob w celu nawiązania połączenia z lokalnym modułem magazynu obiektów blob.

W poniższych przykładach szybkiego startu używane są również języki obsługiwane przez usługę IoT Edge, dzięki czemu można je wdrożyć jako moduły usługi IoT Edge wraz z modułem magazynu obiektów blob:

  • .NET
    • Usługa Azure Blob Storage w module usługi IoT Edge w wersji 1.4.0 i starszych jest zgodna z zestawem WINDOWSAzure.Storage 9.3.3 SDK i wersją 1.4.1 obsługuje również zestaw SDK Azure.Storage.Blobs 12.8.0.
  • Python
    • Wersje wcześniejsze niż wersja 2.1 zestawu SDK języka Python mają znany problem polegający na tym, że moduł nie zwraca czasu tworzenia obiektu blob. Z powodu tego problemu niektóre metody, takie jak listy obiektów blob, nie działają. Aby obejść ten problem, jawnie ustaw wersję interfejsu API na klienta obiektu blob na wartość "2017-04-17". Przykład: block_blob_service._X_MS_VERSION = '2017-04-17'
    • Przykład uzupełnialnych obiektów blob
  • Node.js
  • JS/HTML
  • Ruby
  • Przejdź
  • PHP

Połączenie do magazynu lokalnego za pomocą Eksplorator usługi Azure Storage

Możesz użyć Eksplorator usługi Azure Storage, aby nawiązać połączenie z lokalnym kontem magazynu.

  1. Pobieranie i instalowanie Eksploratora usługi Azure Storage

  2. Najnowsza wersja Eksplorator usługi Azure Storage używa nowszej wersji interfejsu API magazynu, która nie jest obsługiwana przez moduł magazynu obiektów blob. Uruchom Eksploratora magazynu Azure. Wybierz menu Edytuj. Sprawdź, czy wybrano pozycję Docelowe interfejsy API usługi Azure Stack Hub. Jeśli tak nie jest, wybierz pozycję Docelowa usługa Azure Stack Hub. Uruchom ponownie Eksplorator usługi Azure Storage, aby zmiana weszła w życie. Ta konfiguracja jest wymagana w celu zachowania zgodności ze środowiskiem usługi IoT Edge.

  3. Połączenie do usługi Azure Storage przy użyciu parametry połączenia

  4. Podaj parametry połączenia:DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;

  5. Zapoznaj się z krokami, aby nawiązać połączenie.

  6. Tworzenie kontenera na lokalnym koncie magazynu

  7. Rozpocznij przekazywanie plików jako blokowych obiektów blob lub uzupełnialnych obiektów blob.

    Uwaga

    Ten moduł nie obsługuje stronicowych obiektów blob.

  8. Możesz też połączyć konta usługi Azure Storage w Eksplorator usługi Storage. Ta konfiguracja zapewnia pojedynczy widok zarówno dla lokalnego konta magazynu, jak i konta usługi Azure Storage

Obsługiwane operacje magazynu

Moduły usługi Blob Storage w usłudze IoT Edge używają zestawów SDK usługi Azure Storage i są zgodne z wersją 2017-04-17 interfejsu API usługi Azure Storage dla punktów końcowych blokowych obiektów blob.

Ponieważ nie wszystkie operacje usługi Azure Blob Storage są obsługiwane przez usługę Azure Blob Storage w usłudze IoT Edge, w tej sekcji wymieniono stan każdego z nich.

Klient

Obsługiwane:

  • Wyświetlanie listy kontenerów

Nieobsługiwane:

  • Pobieranie i ustawianie właściwości usługi blob
  • Wstępne żądanie obiektu blob
  • Pobieranie statystyk usługi blob
  • Pobieranie informacji o koncie

Kontenery

Obsługiwane:

  • Tworzenie i usuwanie kontenera
  • Pobieranie właściwości i metadanych kontenera
  • Wyświetlanie listy obiektów blob
  • Pobieranie i ustawianie listy ACL kontenera
  • Ustawianie metadanych kontenera

Nieobsługiwane:

  • Kontener dzierżawy

Obiekty blob

Obsługiwane:

  • Umieszczanie, pobieranie i usuwanie obiektu blob
  • Pobieranie i ustawianie właściwości obiektu blob
  • Pobieranie i ustawianie metadanych obiektu blob

Nieobsługiwane:

  • Dzierżawa obiektu blob
  • Migawka obiektu blob
  • Kopiowanie i przerywanie kopiowania obiektu blob
  • Cofanie usunięcia obiektu blob
  • Ustawianie warstwy obiektu blob

Blokowe obiekty blob

Obsługiwane:

  • Umieść blok
  • Umieszczanie i pobieranie listy zablokowanych

Nieobsługiwane:

  • Umieść blok z adresu URL

Uzupełnialne obiekty blob

Obsługiwane:

  • Blok dołączania

Nieobsługiwane:

  • Dołączanie bloku z adresu URL

Integracja usługi Event Grid w usłudze IoT Edge

Uwaga

Integracja z usługą Event Grid w usłudze IoT Edge jest dostępna w wersji zapoznawczej

Ten moduł usługi Azure Blob Storage w usłudze IoT Edge zapewnia teraz integrację z usługą Event Grid w usłudze IoT Edge. Aby uzyskać szczegółowe informacje na temat tej integracji, zobacz samouczek dotyczący wdrażania modułów, publikowania zdarzeń i weryfikowania dostarczania zdarzeń.

Informacje o wersji

Poniżej przedstawiono informacje o wersji w centrum platformy Docker dla tego modułu. Możesz znaleźć więcej informacji związanych z poprawkami błędów i korygowaniem w informacjach o wersji określonej wersji.

Następne kroki

Dowiedz się, jak wdrożyć usługę Azure Blob Storage w usłudze IoT Edge

Bądź na bieżąco z najnowszymi aktualizacjami i ogłoszeniem na stronie informacji o wersji usługi Azure Blob Storage w usłudze IoT Edge.