使用nodejs谷歌云日志库与用户访问令牌



我正试图使用用户令牌(gcloud auth print-access-token)来利用使用@google-cloud/logging获取日志。

基本代码片段:

import { GetEntriesResponse, Logging } from "@google-cloud/logging";
export async function readLogsAsync() {
const logging = new Logging();
const [entries, _, response]: GetEntriesResponse = await logging.getEntries({
filter: 'resource.type="k8s_container"',
resourceNames: 'projects/acme',
autoPaginate: false,
pageSize: 100
});
console.log(entries.length, response.nextPageToken)
}

在http中类似的调用与用户令牌一起工作,所以我假设必须有某种方法与node.js api进行通信,但我找不到示例或文档。

curl --location --request POST 'https://logging.googleapis.com/v2/entries:list?alt=json' 
--header "Authorization: Bearer $(gcloud auth print-access-token)" 
--header 'Content-Type: application/json' 
--data-raw '{
"filter": "resource.type="k8s_container"",
"orderBy": "timestamp desc",
"pageSize": 100,
"resourceNames": [
"projects/amce"
]
}'

您没有验证代码。

Google的库支持一种叫做Application Default Credentials (ADC)的机制。

ADC可以很容易地验证部署到谷歌云平台和本地运行时的代码。要在本地运行,您需要导出GOOGLE_APPLICATION_CREDENTIALS,其中包含服务帐户密钥的路径。

正如@guillaume-blaquiere评论的那样,你可以使用gcloud auth application-default来影响这个行为,但最好使用服务帐户。

相关内容

  • 没有找到相关文章