我正试图使用用户令牌(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
来影响这个行为,但最好使用服务帐户。