【问题标题】:PERMISSION_DENIED: Cloud IAM permission 'cloudtranslate.generalModels.predict' deniedPERMISSION_DENIED:Cloud IAM 权限“cloudtranslate.generalModels.predict”被拒绝
【发布时间】:2022-12-04 19:23:38
【问题描述】:

我想弄清楚谷歌翻译 API 是如何工作的。我对谷歌云 api 的经验很少。

我收到此错误:PERMISSION_DENIED:Cloud IAM 权限“cloudtranslate.generalModels.predict”被拒绝。

我的问题:

  1. 为什么我需要这个权限?我在我的代码中设置源语言和目标语言。实际上没有什么可预测的。
  2. 如何解决这个问题?根据相关问题,我假设我必须向我的服务帐户授予这些权限,但我还没有想出如何在控制台中执行此操作。在服务帐户选项卡中,我无法链接权限。在角色选项卡中,我创建了一个具有这些权限的角色,但无法将其链接到我的服务帐户。
    try (TranslationServiceClient client = TranslationServiceClient.create()) {
                // Supported Locations: `global`, [glossary location], or [model location]
                // Glossaries must be hosted in `us-central1`
                // Custom Models must use the same location as your model. (us-central1)
                LocationName parent = LocationName.of(projectId, "global");
                // Supported Mime Types: https://cloud.google.com/translate/docs/supported-formats
                TranslateTextRequest request =
                        TranslateTextRequest.newBuilder()
                                .setParent(parent.toString())
                                .setMimeType("text/plain")
                                .setTargetLanguageCode("de")
                                .setSourceLanguageCode("en")
                                .addContents("Hello World")
                                .build();
                TranslateTextResponse response = client.translateText(request);
                // Display the translation for each input text provided
                for (Translation translation : response.getTranslationsList()) {
                    System.out.printf("Translated text: %s\n", translation.getTranslatedText());
                }
            }
    

【问题讨论】:

  • 嗨@Felix Schmidt,如果我的回答解决了您的问题,请考虑接受并投票。如果没有,请告诉我,以便我改进我的答案。接受答案也将有助于社区成员的研究。

标签: google-cloud-platform google-cloud-translate


【解决方案1】:

Cloud Translation API 内部使用谷歌网络机器翻译(神经机器翻译)翻译自动预测文本并将其翻译成另一种语言的文本。它的开发是为了提高流畅性和准确性。 GNMT 使用大型人工神经网络。需要此权限才能在内部预测文本以预测语言。

Google 创建了预定义的角色,这些角色使用权限获得精细的访问权限,以防止对其他资源进行不必要的访问。要授予服务帐户权限,您可以按照以下步骤操作:

  1. 搜索有权限的角色 cloudtranslate.generalModels.predict 在这个page 中。
  2. 转到控制台中的 IAM & Admin 页面并搜索服务 您要向其添加角色的帐户。
  3. 单击最右侧列中的铅笔图标。
  4. 将特定角色添加到包含 以上许可并保存。
  5. 如果您创建了特定角色,则可以在 自定义角色并添加角色并保存。

    您可以查看下面显示铅笔图标的图像。

    下图显示了编辑权限页面。

【讨论】:

  • 该编辑权限页面不显示我的服务帐户。我在那里只看到我的主帐户。或者我在错误的页面上。
  • 编辑权限页面必须显示主体中的服务帐户。您能否检查您是在单击与要添加角色的服务帐户还是与主帐户相对应的铅笔图标?
【解决方案2】:

我面临同样的错误。我正在使用单独的云 Linux 并使用 nodejs 客户端库

@google-cloud/翻译。我正在使用服务帐户密钥并将其设置为环境变量 GOOGLE_APPLICATION_CREDENTIALS。 案例 1) 当我直接将翻译代码作为 java 脚本执行时,它确实执行成功。 案例 2) 当我在 Express REST 应用程序中调用此客户端库时,出现权限被拒绝错误。我已验证它是具有 IAM 访问角色“Cloud Translation API Admin”的同一服务帐户。这很奇怪。 完整错误:“” 错误:7 PERMISSION_DENIED:Cloud IAM 权限“cloudtranslate.generalModels.predict”被拒绝。""

任何帮助表示赞赏!

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2015-08-30
    • 1970-01-01
    • 2019-11-09
    相关资源
    最近更新 更多