【问题标题】:How would i convert a GCP Service Account JSON string to Dataform Credentials string?我如何将 GCP 服务帐户 JSON 字符串转换为 Dataform Credentials 字符串?
【发布时间】:2022-06-14 01:11:46
【问题描述】:

我有一个 GCP 服务帐户 JSON 密钥,需要将其转换为 Dataform Credentials Template,如下所述。基本上,换行符必须转换为 \n ,以及更多的转换。有没有简单的方法可以做到这一点?

{
  "projectId": "prj-dfad-4curtool-d-c818",
  "credentials": "{
    "type": "service_account",
    "project_id": "prj-xxxx-xxx-x-xxx",
    "private_key_id": "35cf...27b",
    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIE...ZNwub\n-----END PRIVATE KEY-----\n",
    "client_email": "xxx@prj-x-xxx-xxx.iam.gserviceaccount.com",
    "client_id": "102742287670708666429",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxx@prj-x-xxx-xxx.iam.gserviceaccount.com"
  }",
  "location": "US"
}

到这样的数据表单凭据

{
  "projectId": "prj-dfad-4curtool-d-c818",
  "credentials": "{\r\n  \"type\": \"service_account\",\r\n  \"project_id\": \"prj-xxxx-xxx-x-xxx\",\r\n  \"private_key_id\": \"35cf...27b\",\r\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIE...ZNwub\\n-----END PRIVATE KEY-----\\n\",\r\n  \"client_email\": \"xxx@prj-x-xxx-xxx.iam.gserviceaccount.com\",\r\n  \"client_id\": \"102742287670708666429\",\r\n  \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\r\n  \"token_uri\": \"https://oauth2.googleapis.com/token\",\r\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\r\n  \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/xxx@prj-x-xxx-xxx.iam.gserviceaccount.com\"\r\n}\r\n\r\n",
  "location": "US"
}

【问题讨论】:

  • 不合规?你的错误是什么?

标签: string google-cloud-platform dataform


【解决方案1】:

一种选择是使用sed 将控制字符(例如换行符)替换为转义的等效字符(例如\n)。

注意因为您有\r(回车),我假设您使用的是 Mac 或 Windows 机器。因此,命令可能会略有不同。我将回车 (\r) 和换行 (\n) 分开,以便在不使用回车的 Linux 上运行。

在 Linux 上:

CREDENTIALS=$(more /path/to/key.json | sed \
--null-data \
--expression='s|\r|\\r|g' \
--expression='s|\n|\\n|g' \
--expression='s|"|\\"|g')

echo "{\"credentials\":\"${CREDENTIALS}\"}"

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多