Я пытаюсь вставить простую запись, как в GoDoc. Но это возвращается,Google Cloud Bigtable аутентификация с Go
rpc error: code = 7 desc = "User can't access project: tidy-groove"
Когда я искал КПГРЫ кодов, он говорит ..
PermissionDenied Code = 7
// Unauthenticated indicates the request does not have valid
// authentication credentials for the operation.
Я включил большую таблицу в моей консоли и создал кластер и учетную запись службы и получил в JSON , Что я здесь делаю неправильно?
package main
import (
"fmt"
"golang.org/x/net/context"
"golang.org/x/oauth2/google"
"google.golang.org/cloud"
"google.golang.org/cloud/bigtable"
"io/ioutil"
)
func main() {
fmt.Println("Start!")
put()
}
func getClient() *bigtable.Client {
jsonKey, err := ioutil.ReadFile("TestProject-7854ea9op741.json")
if err != nil {
fmt.Println(err.Error())
}
config, err := google.JWTConfigFromJSON(
jsonKey,
bigtable.Scope,
) // or bigtable.AdminScope, etc.
if err != nil {
fmt.Println(err.Error())
}
ctx := context.Background()
client, err := bigtable.NewClient(ctx, "tidy-groove", "asia-east1-b", "test1-bigtable", cloud.WithTokenSource(config.TokenSource(ctx)))
if err != nil {
fmt.Println(err.Error())
}
return client
}
func put() {
ctx := context.Background()
client := getClient()
tbl := client.Open("table1")
mut := bigtable.NewMutation()
mut.Set("links", "maps.google.com", bigtable.Now(), []byte("1"))
mut.Set("links", "golang.org", bigtable.Now(), []byte("1"))
err := tbl.Apply(ctx, "com.google.cloud", mut)
if err != nil {
fmt.Println(err.Error())
}
}
Почему вы делаете JWTConfigFromJSON? Это не должно требоваться ни в MVM, ни в GCP. Вы должны были уже настроены. Взгляните на: https://github.com/GoogleCloudPlatform/gcloud-golang/blob/master/examples/bigtable/bigtable-hello/helloworld.go#L42 или https://github.com/GoogleCloudPlatform/gcloud-golang /blob/master/examples/bigtable/search/search.go#L120, который использует GOOGLE_APPLICATION_CREDENTIALS env var. –
Наш проект может быть размещен или не размещен на разных серверах, отличных от виртуальных машин Google, поэтому нужна аутентификация, которая будет работать в любом месте. – PrasadJay