并非运行配置中指定的所有数据存储(workspaceblobstore)都存在

Posted

技术标签:

【中文标题】并非运行配置中指定的所有数据存储(workspaceblobstore)都存在【英文标题】:Not all data Stores (workspaceblobstore) specified in the run configuration exist 【发布时间】:2020-05-13 05:54:44 【问题描述】:

我正在以编程方式将运行提交到 AML 工作区,但它失败并显示错误消息:

"error": 
"code": "UserError",
            "message": "Not all data Stores (workspaceblobstore) specified in the run configuration exist." 

查看运行配置对象,sourceDirectoryDataStore设置为null,另外两个与数据相关的属性为空。

"dataReferences": ,
"data": ,
"sourceDirectoryDataStore": null 

我提交的脚本没有使用通过 aml 注册的任何数据存储,它只是简单的糖尿病回归,使用 sklearn 糖尿病数据集。 训练脚本被复制到与 AML 工作区链接的存储帐户的 snapshots 容器中。

解决此问题的后续步骤是什么?

SDK 版本:1.0.85。

在通过 ws.datastores(在 cmets 中建议)检索数据存储时,我收到另一个关于存储服务缺少名称或密钥的异常,但有一个存储帐户与 AML 工作区一起部署。检查 AML 工作区的 ARM 模板,存储帐户 ID 位于 AML 模板的属性中,并创建了常用容器(修订版、快照、snapshotzip、azureml-bloblstore-GUID)和我正在尝试的 *.py 文件要运行的正在上传。

    print(ws.datastores)
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\core\workspace.py", line 789, in datastores
    return datastore.name: datastore for datastore in _DatastoreClient.list(self)
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\data\datastore_client.py", line 486, in list
    dss, ct = _DatastoreClient._list(workspace, ct, 100)
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\data\datastore_client.py", line 688, in _list
    return list(datastores), datastore_dtos.continuation_token
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\data\datastore_client.py", line 687, in <lambda>
    map(lambda dto: _DatastoreClient._dto_to_datastore(ws, dto), datastore_dtos.value))
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\data\datastore_client.py", line 760, in _dto_to_datastore
    as_section.sas_token, as_section.account_key, as_section.protocol, as_section.endpoint)
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\data\azure_storage_datastore.py", line 390, in __init__
    endpoint_suffix=endpoint
  File "C:\ProgramData\Anaconda3\lib\site-packages\azureml\_vendor\azure_storage\file\fileservice.py", line 184, in __init__
    raise ValueError(_ERROR_STORAGE_MISSING_INFO)
ValueError: You need to provide an account name and either an account_key or sas_token when creating a storage service.

【问题讨论】:

你能分享更多关于你是如何提交运行的吗?另外,ws.datastores 返回什么(from azureml.core import Workspace; ws = Workspace.get(name="myworkspace", subscription_id='&lt;azure-subscription-id&gt;', resource_group='myresourcegroup') @DanielSchneider 我用信息编辑了原始帖子,因为在那里更容易看到解析的堆栈跟踪。 【参考方案1】:

我通过 powershell ARM 部署脚本创建了解决此问题的工作区,并指定了它的 ARM 模板。部署成功。

我尝试通过 AzureML SDK 部署工作区,这会创建数据存储并成功运行。

【讨论】:

【参考方案2】:

它可能链接到 ARM 模板(在我们的例子中是 Terraform)。 我们更新了基础架构(ML 工作区),但由于某种原因,用户主体对相关密钥库的访问权限被删除了...

尝试启动新的运行导致了一个非常相似的错误:

Not all data Stores (workspaceblobstore) specified in the run configuration exist. If the Datastore has secret registered, please make sure that RBAC action "metadata/secrets/read" is permitted

在我们的例子中,机器学习工作区资源是这样配置的(当时唯一的选项):

identity 
    type = "SystemAssigned"
  

因此,我们通过为机器学习工作区显式添加密钥保管库访问策略来解决此问题:

resource "azurerm_key_vault_access_policy" "principal_id_access" 
  key_vault_id = azurerm_key_vault.example.id

  tenant_id = var.azure_tenant_id
  object_id = azurerm_machine_learning_workspace.example.identity[0].principal_id

  key_permissions = [
    "backup", "create", "decrypt", "delete", "encrypt", 
    "get", "import", "list", "purge", "recover", "restore",
    "sign", "unwrapKey", "update", "verify", "wrapKey"
  ]

  secret_permissions = [
    "backup", "delete", "get", "list", "purge", "recover", "restore", "set"
  ]

  certificate_permissions = [
    "backup", "create", "delete", "deleteissuers", "get", "getissuers", 
    "import", "list", "listissuers", "managecontacts", "manageissuers", "purge",
    "recover", "restore", "setissuers", "update"
  ]

【讨论】:

以上是关于并非运行配置中指定的所有数据存储(workspaceblobstore)都存在的主要内容,如果未能解决你的问题,请参考以下文章

外部数据源中指定的错误或不可访问的位置

yarn berry foreach 工作区未按 package.json 中指定的顺序构建包

Mac Eclipse GCC 4.9.0“启动配置中指定的程序文件不存在”

json 这个Gruntfile.js将清理你的dist文件夹,根据html中指定的配置连接和缩小所有js,css资产,放置修订,缩小

在 c# / ReadAsync 中读取二进制数据而不是读取计数中指定的所有内容

Intellij IDEA 无法识别 Maven 依赖项中指定的类