使用Databricks Asset Bundles时,如何配置从正确卷加载初始化脚本以实现集群访问AWS CodeArtifact
使用Databricks Asset Bundles时,如何配置从正确卷加载初始化脚本以实现集群访问AWS CodeArtifact
我完全明白你的需求——给集群绑定AWS实例角色后,通过初始化脚本配置pip,让它能顺利从私有CodeArtifact仓库拉取Python包。看了你的配置,主要是初始化脚本的格式写错了,还有一些缩进和逻辑问题,我来一步步帮你修正:
1. 先修正初始化脚本的配置格式
你当前的init_scripts写法不符合Databricks Asset Bundles的规范,正确引用DBFS中脚本的方式应该使用dbfs类型,并且路径要写成dbfs:/开头(而非dbfs://)。修正后的片段如下:
new_cluster: init_scripts: - dbfs: destination: dbfs:/Workspace/Users/Myself/init.sh
2. 修复Job配置的缩进错误
你的原配置里把tasks嵌套在了tags下面,这会导致配置完全不生效——tasks是Job的顶层属性,应该和email_notifications、description、tags同级。
3. 初始化脚本的核心内容示例
你的脚本需要完成两个关键动作:获取CodeArtifact的授权令牌,配置pip使用这个令牌访问私有仓库。以下是符合需求的脚本模板(记得替换成你的AWS环境参数):
#!/bin/bash # 替换为你的CodeArtifact实际信息 DOMAIN="你的codeartifact域名" DOMAIN_OWNER="你的AWS账号ID" REGION="你的AWS区域" REPO_NAME="你的codeartifact仓库名" # 通过实例角色获取CodeArtifact授权令牌(有效期12小时) CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token --domain $DOMAIN --domain-owner $DOMAIN_OWNER --region $REGION --query authorizationToken --output text) # 配置pip使用CodeArtifact作为默认索引源 pip config set global.index-url "https://aws:${CODEARTIFACT_AUTH_TOKEN}@${DOMAIN}-${DOMAIN_OWNER}.d.codeartifact.${REGION}.amazonaws.com/pypi/${REPO_NAME}/simple/"
把这个脚本上传到你指定的DBFS路径,同时确保集群绑定的实例角色(${var.aws_instance-profile-codeartifact-access})拥有codeartifact:GetAuthorizationToken以及访问目标仓库的权限。
4. 修正后的完整Job配置
整合所有修正后,你的最终配置应该是这样的(还帮你修复了循环依赖的问题):
resources: jobs: staging-test: name: staging-test email_notifications: on_failure: - ${var.mail} description: Staging job for ${var.package} tags: stage: "staging" version: ${var.package} # tasks移到顶层,与tags同级 tasks: - task_key: test-from-wheel python_wheel_task: entry_point: run # Entry point of the wheel package_name: 你的wheel包名称 # 补充实际包名 parameters: ["-a", "test_run", "-m", "model"] new_cluster: init_scripts: - dbfs: destination: dbfs:/Workspace/Users/Myself/init.sh instance_pool_id: ${var.instance-pool-id} spark_version: 15.4.x-scala2.12 autoscale: min_workers: 1 max_workers: 4 aws_attributes: instance_profile_arn: ${var.aws_instance-profile-codeartifact-access} libraries: # Using the wheel file from code artifact - pypi: package: ${var.package} repo: ${var.codeartifact-repo}
备注:内容来源于stack exchange,提问作者PlagTag
相关产品推荐
相关产品推荐

