如何在Databricks资产包的databricks.yml中配置Azure DevOps PyPI源认证?
解决Databricks资产包访问Azure Artifact Feed的认证问题
问题场景
Databricks资产包中的python_wheel_task依赖本地构建的whl文件,基础运行流程正常,但需引入Azure Artifact Feed中的自定义whl作为依赖库。配置如下:
- task_key: some_task job_cluster_key: job_cluster python_wheel_task: package_name: my_local_package_name entry_point: my_entrypoint named_parameters: { "env": "dev" } libraries: - pypi: package: custom_package==1.0.1 repo: https://pkgs.dev.azure.com/<company>/<some-id>/_packaging/<feed-name>/pypi/simple/ - whl: ../../dist/*.whl # 本地仓库构建的whl,属于资产包流程的一部分
部署运行后集群报错:
24/07/12 07:49:01 ERROR Utils: Process List(/bin/su, libraries, -c, bash /local_disk0/.ephemeral_nfs/cluster_libraries/python/python_start_clusterwide.sh /local_disk0/.ephemeral_nfs/cluster_libraries/python/bin/pip install 'custom_package==3.0.1' --index-url https://pkgs.dev.azure.com/<company>/<some-id>/_packaging/<feed-name>/pypi/simple/ --disable-pip-version-check) exited with code 1, and Looking in indexes: https://pkgs.dev.azure.com/<company>/<some-id>/_packaging/<feed-name>/pypi/simple/ 24/07/12 07:49:01 INFO SharedDriverContext: Failed to attach library python-pypi;custom_package;;3.0.1;https://pkgs.dev.azure.com/<company>/<some-id>/_packaging/<feed-name>/pypi/simple/ to Spark
问题根源是Azure Artifact Feed需要身份认证,当前配置未提供有效凭证。
解决步骤
1. 生成Azure DevOps个人访问令牌(PAT)
在Azure DevOps平台创建PAT,需勾选Packaging > Read权限,有效期根据实际需求设置。
2. 将PAT存储为Databricks机密
- 在Databricks工作区中创建机密范围,或使用已有的范围。
- 在该范围内添加机密,命名例如
azure_artifact_pat,值为刚生成的PAT。
3. 修改资产包的PyPI库配置
利用Databricks的机密插值语法,将认证信息嵌入PyPI源URL,避免明文泄露。修改后的libraries配置如下:
libraries: - pypi: package: custom_package==1.0.1 repo: "https://{{secrets/<你的机密范围名称>/azure_artifact_pat}}@pkgs.dev.azure.com/<company>/<some-id>/_packaging/<feed-name>/pypi/simple/" - whl: ../../dist/*.whl
请替换<你的机密范围名称>为实际的机密范围名称。
4. 重新部署并验证
重新部署资产包,运行任务后,pip将携带认证信息访问Azure Artifact Feed,正常拉取依赖包。
内容的提问来源于stack exchange,提问作者Cribber
相关产品推荐
相关产品推荐

