当前位置: 首页 > 面试题库 >

使用Go连接到Google Cloud DataStore

阙星渊
2023-03-14
问题内容

我正在尝试从Go连接到云数据存储。我使用了此处提供的示例代码-https:
//github.com/GoogleCloudPlatform/gcloud-
golang

这些是我的代码的相关位:

func getCtx() context.Context {
    // Initialize an authorized transport with Google Developers Console
    // JSON key. Read the google package examples to learn more about
    // different authorization flows you can use.
    // http://godoc.org/golang.org/x/oauth2/google
    opts, err := oauth2.New(
        google.ServiceAccountJSONKey("CassandraTest-key.json"),
        oauth2.Scope(datastore.ScopeDatastore),
    )
    if err != nil {
        log.Fatal(err)
    }

    //titanium-goods-766 is the project id for CassandraTest (under sthilakan@eyeota.com)

    ctx := cloud.NewContext("titanium-goods-766", &http.Client{Transport: opts.NewTransport()})

    // Use the context (see other examples)
    return ctx
}

type contactInfoEntity struct {
    EmailKey  *datastore.Key
    FirstName string
    LastName  string
}

func main() {
    ctx := getCtx()
    fmt.Println("successfully got context", ctx)

    err := putEntity(ctx, "fname1", "lname1", "email1")

    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("success")
    }
}

func putEntity(ctx context.Context, firstName string, lastName string, email string) error {
    key := datastore.NewKey(ctx, "contactInfoEntity", email, 0, nil)

    contactInfoEntity := contactInfoEntity{
        EmailKey:  key,
        FirstName: firstName,
        LastName:  lastName,
    }

    _, err := datastore.Put(ctx, key, &contactInfoEntity)

    return err
}

我始终收到此错误。

Error: error during call, http status code: 403 Unauthorized.

我已禁用并重新启用了数据存储区api几次如此处的建议:所有请求都返回403
Unauthorized。我也尝试过删除和添加服务帐户。

(我试图连接我的计算引擎实例数据存储在这里使用的步骤-
https://cloud.google.com/datastore/docs并能正常工作)。

有没有人从go连接到云数据存储?

此致Sathya


问题答案:

访问Cloud Datastore需要两个范围:datastore.ScopeDatastoredatastore.ScopeUserEmail

opts, err := oauth2.New(
    google.ServiceAccountJSONKey("CassandraTest-key.json"),
    oauth2.Scope(datastore.ScopeDatastore, datastore.ScopeUserEmail),
)


 类似资料:
  • 问题内容: 我收集到有两种方法可以在Windows中(在Windows上)连接到Oracle DB: github.com/tgulacsi/goracle github.com/mattn/go-oci8 但是对于我这个级别的人(开源+ golang的初学者)来说,这两种方法/驱动程序非常棘手。 在不同的机器上进行部署,开发等工作时,这也是一个负担(也假设它会工作)。 有没有更好的方法可以在go

  • 试图通过<code>github连接到AWS上的ActiveMQ实例。com/go-stomp/stomplibrary。 以下代码抛出<code>无效命令

  • 问题内容: 我是Redis的新手…我最近刚拿起Redisent来在PHP中使用Redis …并且我玩得很开心!但是,我注册了Redis服务,并一直在努力使用该服务… URI字符串如下: redis:// [用户名]:[pass] @ [服务器] .redistogo.com:[端口] / Redisent客户端只需输入主机名和端口…并且我没有地方输入用户名/密码…:-/我也一直在摆弄fsockop

  • 问题内容: 我正在尝试使用SQL来构建.NET Web应用程序以查询AS400数据库。这是我第一次遇到AS400。 为了连接,我必须在我的机器(或AS400服务器)上安装什么?(用于Windows的IBM iSeries Access?) 连接字符串的组成部分是什么? 在哪里可以找到使用SQL命令构建数据访问层的示例代码? 谢谢。 问题答案: 您需要AS400 .Net数据提供程序。在这里检查:h

  • 问题是我不想把我的密码放在yaml文件中。我想使用密钥文件或不记名令牌。我不确定我怎么能从这个开始。请帮帮忙。提前致谢:)

  • 问题内容: 只是从github交叉发布。 我将xorm 0.4.3与go-mysql一起使用。我们使用Golang 1.4。 我们在和中指定了以下内容: 而且我们使用相同的单个实例来查询Mysql。 但是我们仍然看到很多连接的状态,这是远远超过这些数字我已经配置和 我们国家的时候- 我们还观察到,即使我们停止MySQL,连接号仍保持固定但处于状态。如果我们关闭应用程序,则所有连接都会消失。 但是在