【问题标题】:Specifying Google Credentials When Creating a SubscriberClient using C# Client Library使用 C# 客户端库创建 SubscriberClient 时指定 Google 凭据
【发布时间】:2021-05-02 21:43:58
【问题描述】:

我为我们的服务设置了一个 GCP PubSub 处理器,它创建了一个 SubscriberClient 像这样

var subscriptionClient = await SubscriberClient.CreateAsync(subscriptionName);.

我设置了GOOGLE_APPLICATION_CREDENTIALS 环境变量并指向一个有效的SA 密钥。一切正常。

但是,我如何才能不使用/依赖本地计算机上的 GOOGLE_APPLICATION_CREDENTIALS 环境变量?

云存储客户端库允许您创建像 StorageClient.Create(GoogleCredentials gcpCredentials); 这样的存储客户端,我一直在使用 PubSub 客户端库寻找类似的东西,但没有找到任何东西。有ChannelCredentials,但似乎不是为了这个目的。

我确实看到SubscriberServiceApiClientBuilder 允许您指定JsonCredentials,但我没有将该客户端用于我的用例。鉴于文档中的以下内容,SubscriberClient 和 PublisherClient 更适合我的目的:

PublisherClient 和 SubscriberClient 为消息发布和订阅提供了更简单的 API。这些类提供了相当高的性能和简单性,尤其是在处理更高的消息吞吐量时。

谢谢

【问题讨论】:

标签: c# .net-core google-cloud-pubsub


【解决方案1】:

手动创建ChannelCredentials,以与PublisherClient 中类似的方式并传入ClientCreationSettings,并使用GoogleCredentials.ToChannelCredentials() 设置的凭据进行初始化。

var subscriptionName = SubscriptionName.FromProjectSubscription("projectId", "subscriptionId");

// create GoogleCredentials
var gcpCredentials = <code that creates valid GoogleCredentials>;

// create ClientCreationSettings with credentials based on the GoogleCredentials created above
var settings = new SubscriberClient.ClientCreationSettings(credentials: gcpCredentials.ToChannelCredentials());

var client = await SubscriberClient.CreateAsync(<SubscriptionName>, settings);

我也在 GitHub googleapis/google-api-dotnet-client repo 中问过这个问题。如果您想了解更多信息:GitHub Issue 1764 Link

【讨论】:

  • 以防万一其他人遇到与我相同的问题...您需要参考 Grpc.Auth(使用 Grpc.Auth;)才能使用扩展方法 ToChannelCredentials()
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2023-03-09
  • 2023-01-04
  • 1970-01-01
  • 2015-04-18
相关资源
最近更新 更多