1

pubsub 에뮬레이터를 로컬로 실행하고 pubsub에서 실행중인 기존 서비스로 메시지를 보냈습니다. 메시지를받지 못했고 로그에 인증 오류가 발생했습니다.GCloud pubsub 에뮬레이터가 "PUBSUB_EMULATOR_HOST"환경 변수를 준수하지 않습니다

[pubsub] Jan 22, 2017 3:43:16 PM com.google.cloud.iam.testing.v1.shared.authorization.AuthInterceptor interceptCall 
[pubsub] INFO: Authentication interceptor: Header value is null 
[pubsub] Jan 22, 2017 3:43:16 PM com.google.cloud.iam.testing.v1.shared.authorization.AuthInterceptor interceptCall 
[pubsub] INFO: Authentication interceptor: invalid or missing token 

나는 dotnet과 nodej를 게시하고 풀 요청을하고 있습니다.

C#을

var creds = GoogleCredential.GetApplicationDefaultAsync().Result; 
if (creds.IsCreateScopedRequired) { 
    creds = creds.CreateScoped(new [] { PubsubService.Scope.Pubsub }); 
} 

return new PubsubService(
    new BaseClientService.Initializer() { 
     HttpClientInitializer = creds, 
     ApplicationName = "My Wonderful App" 
    } 
); 

NodeJs

var pubsub = require('@google-cloud/pubsub'); 

var pubsubClient = pubsub({ 
    projectId: config.get('GCLOUD_PROJECT') 
}); 

답변

0

헤더 값 null은 빨간색으로 잡아 당겼습니다. dotnet sdk가 nodejs sdk와 같은 환경 변수를 존중하지 않는 것처럼 보입니다. 나는 jskeet에 맞습니다 그는 에뮬레이터의 사용을 가능하게하는 방법을 보여주는 설명서를 추가 문제를 만들어 : https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/859 여기

내가 C 번호에 PublisherClient을 만든 방법을

private static PublisherClient CreatePublisherClient() { 
    var emulatorHostAndPort = Environment.GetEnvironmentVariable("PUBSUB_EMULATOR_HOST"); 
    if (String.IsNullOrWhiteSpace(emulatorHostAndPort)) { 
     return PublisherClient.Create(); 
    } else { 
     var channel = new Channel(emulatorHostAndPort, ChannelCredentials.Insecure); 
     return PublisherClient.Create(channel); 
    } 
}