일부 데이터를 BigQuery에 삽입하려고하는 간단한 node.js 애플리케이션이 있습니다. 제공된 gcloud node.js 라이브러리를 사용합니다.컨테이너 엔진 포드에서 BigQuery에 데이터를 삽입하지 못했습니다.
BigQuery의 클라이언트는 documentation에 따라, 다음과 같이 생성됩니다 : 나는 BiqQuery에 데이터를 삽입하려고 그와
google.auth.getApplicationDefault(function(err, authClient) {
if (err) {
return cb(err);
}
let bq = BigQuery({
auth: authClient,
projectId: "my-project"
});
let dataset = bq.dataset("my-dataset");
let table = dataset.table("my-table");
});
.
table.insert(someRows).then(...)
BigQuery 클라이언트가 인증에 필요한 범위가 누락되었음을 알리는 403을 반환하기 때문에 실패합니다. 은 if 문이 실행되지 않기 때문에이이 중 하나가 작동하지 않았다
if (authClient.createScopedRequired &&
authClient.createScopedRequired()) {
authClient = authClient.createScoped([
"https://www.googleapis.com/auth/bigquery",
"https://www.googleapis.com/auth/bigquery.insertdata",
"https://www.googleapis.com/auth/cloud-platform"
]);
}
: 문서는 다음 코드를 사용하는 나에게 말한다. if를 건너 뛰고 매번 범위를 설정했지만 오류가 남아 있습니다.
무엇이 여기에 있습니까? authClient 구성에 관계없이 범위가 항상 잘못된 이유는 무엇입니까? 컨테이너 엔진 포드에 설명 된 인증 방식을 사용하여이 또는 유사한 gcloud 클라이언트 라이브러리 (Datastore와 같은)를 얻을 수있는 방법을 찾은 사람이 있습니까?
지금까지 발견 한 유일한 해결책은 json 키 파일을 생성하여 BigQuery 클라이언트에 제공하는 것입니다.하지만 코드 바로 옆에 자격 증명을 작성하는 것이 좋습니다.
사이드 노트 : Google에서 자동으로 인증을 협상하기 때문에 Compute Engine VM에서 실행할 때 노드 서비스가 BigQuery에 auth 옵션을 제공하지 않아도 완벽하게 작동합니다.
아, 내가 클러스터를 구축하지 않았다 "--scopes". 그게 해결책 인 것 같습니다. 고마워, 친구! –