Bitbucket 云存储库使用 Databricks 服务主体 git 凭证的存储库访问令牌

问题描述 投票:0回答:1

我正在尝试让 Databricks 工作流作为服务主体运行。我正在使用 Bitbucket 云存储库访问令牌,以便 Databricks 服务主体使用的 git 凭据不会与单个用户绑定。

基于 Databricks API 创建 git 凭证,由于除了

git_username
ID 之外没有定义的
<hash>@bots.bitbucket.org
ID,目前尚不清楚存储库访问令牌应如何适合。 (鉴于用户名有详细记录,它适用于个人访问令牌)。

我尝试了 git user.name 的各种变体,Bitbucket 为我提供了作为存储库访问令牌的一部分。

我希望将

git_username
personal_access_token
的正确神奇组合传递给 Databricks API 以成功进行身份验证。不幸的是它没有记录

git databricks credentials bitbucket-cloud service-principal
1个回答
3
投票

您似乎有两个问题:

Bitbucket 存储库访问令牌

我假设您正在使用Bitbucket Cloud

Bitbucket 存储库访问令牌 是让 Bitbucket 访问“机器人”帐户(例如 CI/CD)的好方法,或者在您的情况下,访问在另一个系统中运行的自动化工作流程。生成的令牌与存储库而不是与人相关联,因此如果有人离开您的组织,令牌将继续工作。

当Token生成后,Bitbucket提供了多种形式的如何使用它。仔细看看这个:

如何将此令牌与您的 Git 存储库一起使用

要使用此令牌克隆此存储库,请运行:

git clone https://x-token-auth:<long-token-here>@bitbucket.org/company/repository.git

还不完全清楚,但它说用户名是

x-token-auth
,密码是提供的长令牌。 这非常重要!!

Databricks 服务负责人

在服务主体上设置 git 凭据并不容易。您需要使用

curl
或 Postman 来生成配置。 (为什么他们不把它放在用户界面中,我不知道!)

步骤是:

  • 在 Databricks UI 中创建 服务主体
  • 使用您自己的个人访问令牌和
  • on-behalf-of 调用生成 服务主体的个人访问令牌
    (可在 
    Databricks 自动化服务主体 | AWS 上的 Databricks 中找到说明)
  • 使用返回的访问令牌
  • 根据服务主体存储 git 凭据:
来自

CI/CD 的服务主体 | AWS 上的 Databricks:

curl -X POST \ ${DATABRICKS_HOST}/api/2.0/git-credentials \ --header 'Authorization: Bearer <service-principal-access-token>' \ --data @set-git-credentials.json \ | jq .
重要的部分在

json

配置文件中:

set-git-credentials.json: { "personal_access_token": "<Git Provider Access Token>", "git_username": "x-token-auth", "git_provider": "bitbucketCloud" }
注意

git_username

如何使用Bitbucket之前提到的
x-token-auth
吗?这是最重要的部分。另外,请确保 
git_provider
 设置为 
bitbucketCloud

顺便说一句,如果你弄错了,

删除 git 凭证的过程会非常痛苦。您需要获取与 git 凭据关联的ID。它在使用上面的 git-credentials

 命令后显示,该命令返回类似:

{ "credential_id": 749722601042, "git_provider": "bitbucketCloud", "git_username": "x-token-auth" }
然后您可以将 

credential_id

删除凭证 | 一起使用REST API 参考 | AWS 上的 Databricks API 调用删除现有凭证,然后尝试再次设置它们。如果您不记得 credential_id
,您可以使用 
获取 Git 凭证 | REST API 参考 | AWS 上的 Databricks 来检索它。

底线: 确保使用 x-token-auth

 作为用户名。

© www.soinside.com 2019 - 2024. All rights reserved.