【发布时间】:2020-09-06 00:32:53
【问题描述】:
我正在使用 Google Dialogflow 并在连接到我们的 Google Dialogflow 实例的 Amazon EC2 实例上设置了一个 nodejs。我基本上使用了来自Building a client-side web app which streams audio from a browser microphone to a server. 的修改示例。我正在使用下面的 Google 身份验证在本地和通过 EC2 实例连接到 Dialogflow。
> export PROJECT_ID="{PROJEC_ID}"
> gcloud config set project $PROJECT_ID
> export GOOGLE_APPLICATION_CREDENTIALS="credentials.json"
> gcloud auth login
当我在我的机器上本地运行它时,它按预期工作。但是,当我在 EC2 实例上执行完全相同的操作时,它对于我发送到 Google Dialogflow 的第一个查询工作正常,但是所有后续调用都会返回以下错误。
(节点:13650)UnhandledPromiseRejectionWarning:错误:7 PERMISSION_DENIED:您的应用程序已使用最终用户进行身份验证 来自 Google Cloud SDK 或 Google Cloud Shell 的凭据 dialogflow.googleapis.com 不支持。我们推荐 在 gcloud 中配置 billing/quota_project 设置或使用 通过 auth/impersonate_service_account 设置服务帐户。 有关服务帐户以及如何使用它们的更多信息 您的应用程序,请参阅https://cloud.google.com/docs/authentication/。
让我感到困惑的是,当我在本地运行它时,这不是问题,当我在 EC2 实例上使用相同的 Google 身份验证和示例网页时;第一个查询从 Dialogflow 获得预期的响应,但任何其他查询都会导致上述错误。
【问题讨论】:
-
一点小笔记。对于“GOOGLE_APPLICATION_CREDENTIALS”,我没有上传 .json 文件,而是将 json 信息复制并粘贴到 EC2 实例上保存的文件中。不确定这是否会有所不同。
标签: node.js amazon-ec2 dialogflow-es