- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在自动部署包含 Azure Databricks 实例的基础结构。为了能够在 Databricks 中使用 Azure Blob 存储,我想通过运行 Python 作业的 DevOps Pipeline 中的 Databricks REST API 2.0 创建一个 secret 范围。
当我尝试创建 secret 范围时,我得到响应
{"message":"Authentication is temporarily unavailable. Please try again later.", "error_code": "TEMPORARILY_UNAVAILABLE"}
我已经能够使用 API 创建 databricks 访问 token ,即端点/token/create 工作完美。
我正在使用此问题答案中的代码对 databricks 进行身份验证:https://stackoverflow.com/a/61826488/2196531
这就是我创建 token 以及尝试生成范围的方式:
import requests
import adal
import json
# set variables
clientId = "<Service Principal Id>"
tenantId = "<Tenant Id>"
clientSecret = "<Service Principal Secret>"
subscription_id = "<Subscription Id>"
resource_group = "<Resource Group Name>"
databricks_workspace = "<Databricks Workspace Name>"
dbricks_url = "<Databricks Azure URL>"
# Acquire a token to authenticate against Azure management API
authority_url = 'https://login.microsoftonline.com/'+tenantId
context = adal.AuthenticationContext(authority_url)
token = context.acquire_token_with_client_credentials(
resource='https://management.core.windows.net/',
client_id=clientId,
client_secret=clientSecret
)
azToken = token.get('accessToken')
# Acquire a token to authenticate against the Azure Databricks Resource
token = context.acquire_token_with_client_credentials(
resource="2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
client_id=clientId,
client_secret=clientSecret
)
adbToken = token.get('accessToken')
# Format Request API Url
dbricks_api = "https://{}/api/2.0".format(dbricks_url)
# Request Authentication
dbricks_auth = {
"Authorization": "Bearer {}".format(adbToken),
"X-Databricks-Azure-SP-Management-Token": azToken,
"X-Databricks-Azure-Workspace-Resource-Id": ("/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Databricks/workspaces/{}".format(subscription_id, resource_group, databricks_workspace) )
}
# Creating a databricks token
payload = {
"comment": "This token is created by API call"
}
requests.post(f"{dbricks_api}/token/create", headers=dbricks_auth, json=payload)
# works
# Creating a databricks secret scope
payload = {
"scope": "my-databricks-secret-scope",
"initial_manage_principal": "users"
}
requests.post(f"{dbricks_api}/secrets/scopes/create", headers=dbricks_auth, json=payload)
# returns {"message":"Authentication is temporarily unavailable. Please try again later.", "error_code": "TEMPORARILY_UNAVAILABLE"}
Databricks 正在西欧运行。
Python 3.8.5 x64
代码片段中使用的包
databricks API 有问题还是我做错了什么?
最佳答案
根据我的测试,当我们使用 Databricks Rest API 创建 Secret Scope 时,我们应该使用 person 访问 token 。
例如
az login
az ad sp create-for-rbac -n "MyApp"
import requests
import adal
import json
# set variables
clientId = "<Service Principal Id>"
tenantId = "<Tenant Id>"
clientSecret = "<Service Principal Secret>"
subscription_id = "<Subscription Id>"
resource_group = "<Resource Group Name>"
databricks_workspace = "<Databricks Workspace Name>"
dbricks_url = "<Databricks Azure URL>"
# Acquire a token to authenticate against Azure management API
authority_url = 'https://login.microsoftonline.com/'+tenantId
context = adal.AuthenticationContext(authority_url)
token = context.acquire_token_with_client_credentials(
resource='https://management.core.windows.net/',
client_id=clientId,
client_secret=clientSecret
)
azToken = token.get('accessToken')
# Acquire a token to authenticate against the Azure Databricks Resource
token = context.acquire_token_with_client_credentials(
resource="2ff814a6-3304-4ab8-85cb-cd0e6f879c1d",
client_id=clientId,
client_secret=clientSecret
)
adbToken = token.get('accessToken')
# Format Request API Url
dbricks_api = "https://{}/api/2.0".format(dbricks_url)
# Request Authentication
dbricks_auth = {
"Authorization": "Bearer {}".format(adbToken),
"X-Databricks-Azure-SP-Management-Token": azToken,
"X-Databricks-Azure-Workspace-Resource-Id": ("/subscriptions/{}/resourceGroups/{}/providers/Microsoft.Databricks/workspaces/{}".format(subscription_id, resource_group, databricks_workspace) )
}
# Creating a databricks token
payload = {
"lifetime_seconds": 3600, # the token lifetime
"comment": "This token is created by API call"
}
data =requests.post(f"{dbricks_api}/token/create", headers=dbricks_auth, json=payload)
dict_content = json.loads(data.content.decode('utf-8'))
token = dict_content.get('token_value')
payload = {
"scope": "my-databricks-secret-scope",
"initial_manage_principal": "users"
}
res=requests.post(f"{dbricks_api}/secrets/scopes/create", headers={
"Authorization": "Bearer {}".format(token),
}, json=payload)
print(res.status_code)
关于python - Databricks API 2.0 - 创建 secret 范围 - TEMPORARILY_UNAVAILABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63246097/
我已经开始阅读 Databricks 推出的 Unity Catalog。我了解它试图解决的基本问题,但我不了解目录到底是什么。 这在 Databricks 文档中可用, A catalog cont
我正在努力了解 Databricks。 我发现文档逐步从 S3 或 Azure Datalake 导入数据,然后输出到 Azure Synapse Analytics 或其他数据仓库解决方案。 快速播
我想以编程方式将(Python Wheel)库添加到 /Shared Databricks 上的工作区。在 GUI(工作区 > 导入 > 库)中很容易做到,但我无法弄清楚如何在 Databricks
我正在创建一个带有公司 Logo 的 databricks 笔记本模板。使用以下代码显示图像会引发错误。 代码: %md 错误: HTTP ERROR 403: Invalid or missing
我将使用这张图片来形象化我的问题: Databricks1 在 Databricks 中创建数据库(和表)并将其数据存储在存储帐户中。在Databricks2中我想读取数据:Databricks2只有
有没有办法通过 python 笔记本确定现有的 Azure Databricks Secret Scope 是否由 Key Vault 或 Databricks 支持? dbutils.secrets
我正在尝试连接到 Databricks 上的 Spark 集群,并且正在学习本教程:https://docs.databricks.com/dev-tools/dbt.html .我安装了 dbt-d
我们可以使用Autoloader跟踪是否已从 S3 存储桶加载的文件。我关于 Autoloader 的问题:有没有办法读取 Autoloader 数据库以获取已加载文件的列表? 我可以在 AWS Gl
我们可以使用一些帮助来了解如何将 Spark Driver 和 worker 日志发送到 Azure Databricks 之外的目的地,例如Azure Blob 存储或使用 Eleastic-bea
将我的 Azure Databricks 从标准升级到主要,尝试开始使用 Databricks Delta: create table t using delta as select * from t
现在,databricks 自动加载器需要一个目录路径,从中加载所有文件。但是,如果其他类型的日志文件也开始进入该目录 - 有没有办法让 Autoloader 在准备数据帧时排除这些文件? df =
有人可以让我知道如何使用 databricks dbutils 从文件夹中删除所有文件。 我尝试了以下但不幸的是,Databricks 不支持通配符。 dbutils.fs.rm('adl://azu
我是 azure 的新手和databricks ,我学会了如何安装 blob 和利用,但我有一些疑问,而且我还没有找到任何文档的任何答案。所以请帮我解释一下: dbutils.fs.mount(
尝试遍历已安装的 Databricks 卷中的目录时遇到 ClassCastException。 java.lang.ClassCastException: com.databricks.backen
尝试遍历已安装的 Databricks 卷中的目录时遇到 ClassCastException。 java.lang.ClassCastException: com.databricks.backen
我正在运行 Databricks Community Edition,我想从以下 mnt 目录中删除文件 /mnt/driver-daemon/jars 我运行 dbutils 命令: dbutils
我已经在我的机器上创建了“.netrc”文件并尝试在 databricks rest api 调用下面。但它总是给出未经授权的错误。如何在 Databricks 中创建 .netrc 文件? curl
没有意识到 shift+enter 运行一个单元格。我正在写一个 delete from table 并按下 shift enter 删除了表中的所有数据。 最佳答案 在 Delta Lake 表中,
我需要访问 Azure Files来自 Azure Databricks .根据文档 Azure Blobs受支持,但我需要此代码来处理 Azure 文件: dbutils.fs.mount( s
我正在尝试使用服务主体从 Databricks 连接到 Synapse。 我已经在集群配置中配置了服务主体 fs.azure.account.auth.type..dfs.core.windows.n
我是一名优秀的程序员,十分优秀!