IotEdge - Ошибка вызова Создать модуль image-classifier-service - PullRequest
0 голосов
/ 24 мая 2019

Я новичок в Azure IoT Edge и пытаюсь развернуть на своем Raspberry PI: распознавание образов с помощью Azure IoT Edge и Cognitive Services. но после Build & Push IoT Edge Solution и его развертывания на один идентификатор устройства я не вижу ни одного из этих двух модулей, перечисленных в Docker PS -a & Iotedge list И при попытке проверить его в журналах EdgeAgent появляется сообщение об ошибке, и кажется, что EdgeAgent выдает ошибку при создании этих модулей (камера-захват и служба-классификатор изображений)

Я пробовал: 1. Восстановите его из свежей папки 2. Вытащите изображение вручную из портала Azure и запустите изображение вручную с помощью сценария

Я застрял на этом в течение нескольких дней.

в deploy.arm32v7.json для этих модулей я определяю образ с зарегистрированным URL реестра:

"modules": {
          "camera-capture": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "zzzz.azurecr.io/camera-capture-opencv:1.1.12-arm32v7",
              "createOptions": "{\"Env\":[\"Video=0\",\"azureSpeechServicesKey=2f57f2d9f1074faaa0e9484e1f1c08c1\",\"AiEndpoint=http://image-classifier-service:80/image\"],\"HostConfig\":{\"PortBindings\":{\"5678/tcp\":[{\"HostPort\":\"5678\"}]},\"Devices\":[{\"PathOnHost\":\"/dev/video0\",\"PathInContainer\":\"/dev/video0\",\"CgroupPermissions\":\"mrw\"},{\"PathOnHost\":\"/dev/snd\",\"PathInContainer\":\"/dev/snd\",\"CgroupPermissions\":\"mrw\"}]}}"
            }
          },
          "image-classifier-service": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "zzzz.azurecr.io/image-classifier-service:1.1.5-arm32v7",
              "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/pi/images:/images\"],\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"80\"}],\"5679/tcp\":[{\"HostPort\":\"5679\"}]}}}"
            }

Сообщение об ошибке из журналов EdgeAgent:

(Inner Exception #0) Microsoft.Azure.Devices.Edge.Agent.Edgelet.EdgeletCommunicationException- Message:Error calling Create module
image-classifier-service: Could not create module image-classifier-service
        caused by: Could not pull image zzzzz.azurecr.io/image-classifier-service:1.1.5-arm32v7
        caused by: Get https://zzzzz.azurecr.io/v2/image-classifier-service/manifests/1.1.5-arm32v7: unauthorized: authentication required

При попытке запустить вытащенное изображение по сценарию:

sudo docker run --rm --name testName -it zzzz.azurecr.io/camera-capture-opencv:1.1.12-arm32v7

нет

Я получаю эту ошибку:

Camera Capture Azure IoT Edge Module. Press Ctrl-C to exit.
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core_ll.c Func:retrieve_edge_environment_variabes Line:191 Environment IOTEDGE_AUTHSCHEME not set
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_CreateFromEnvironment Line:1572 retrieve_edge_environment_variabes failed
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core.c Func:create_iothub_instance Line:941 Failure creating iothub handle
Unexpected error IoTHubClient.create_from_environment, IoTHubClientResult.ERROR from IoTHub

1 Ответ

1 голос
/ 28 мая 2019

Когда вы вытягивали изображение непосредственно с помощью docker run, оно вытягивалось, но затем не могло работать за пределами времени выполнения кромки, которое ожидается. Но когда пограничный агент попытался получить его, он потерпел неудачу, потому что не был авторизован. В среду выполнения не были предоставлены учетные данные, поэтому он попытался получить доступ к реестру анонимно.

Убедитесь, что вы добавили учетные данные реестра контейнеров в развертывание, чтобы пограничная среда выполнения могла получать изображения. Развертывание должно содержать что-то вроде следующего в настройках среды выполнения:

"MyRegistry" :{
  "username": "<username>",
  "password": "<password>",
  "address": "<registry-name>.azurecr.io"
}

Как отметил @silent в комментариях, документация здесь , включая пример развертывания, включающий учетные данные реестра контейнеров.

...