开发者社区 问答 正文

请教个机器翻译问题,我不太清楚是哪个环节的权限有问题,麻烦帮忙看下?

请教个机器翻译问题,我用个人账号关联了一个阿里云主账号,成为了这个主账号的子账号,然后申请了通用翻译的权限(AliyunMTReadOnlyAccess),但是按照文档调用的时候报错:'Code': 10009,查了下是子账号没有权限,我不太清楚是哪个环节的权限有问题,麻烦帮忙看下?

展开
收起
真的很搞笑 2024-04-22 19:33:50 82 分享 版权
阿里云 AI 助理回答

根据您描述的情况,您作为子账号在调用机器翻译通用版接口时遇到了权限问题(错误码:10009),这通常与子账号的授权配置有关。以下是详细的排查和解决步骤:


1. 确认权限策略是否正确绑定

您提到已经申请了 AliyunMTReadOnlyAccess 权限策略,但该策略仅允许只读访问机器翻译的API接口和管控台。如果您需要调用机器翻译的通用版接口(如 alimt:TranslateGeneral),则需要确保子账号具备相应的写入权限。

解决方法:

  • 检查当前权限策略

    1. 登录主账号,进入 RAM访问控制 > 身份管理 > 用户
    2. 找到您的子账号,查看已绑定的权限策略。
    3. 确认是否绑定了 AliyunMTFullAccess 或自定义策略(包含 alimt:TranslateGeneral 的权限)。
  • 添加正确的权限策略: 如果未绑定正确的权限策略,请按照以下步骤操作:

    1. RAM访问控制 > 权限管理 > 权限策略 中,选择 系统策略
    2. 搜索并选择 AliyunMTFullAccess,将其添加至子账号的权限列表中。
    3. 如果需要更细粒度的权限控制,可以创建自定义策略。例如:
      {
      "Statement": [
       {
         "Effect": "Allow",
         "Action": "alimt:TranslateGeneral",
         "Resource": "acs:alimt:*:<主账号ID>:*"
       }
      ],
      "Version": "1"
      }
      

      替换 <主账号ID> 为实际的主账号ID,并将此策略绑定至子账号。


2. 确认子账号登录方式

子账号调用API时,必须使用 RAM用户名密码登录 或通过 STS Token 进行身份验证。如果子账号未正确登录或未获取有效的Token,可能会导致权限校验失败。

解决方法:

  • 确保子账号已通过 RAM用户名密码 登录,并生成有效的访问密钥(AccessKey ID 和 AccessKey Secret)。
  • 如果使用STS Token,请参考 [什么是STS] 文档,确保Token的生成和使用符合要求。

3. 检查API调用参数

即使权限配置正确,API调用时的参数错误也可能导致报错。请确认以下关键参数是否正确设置: - FormatType:翻译文本的格式,支持 texthtml。 - SourceLanguageTargetLanguage:源语言和目标语言的语言代码,需与支持的语言代码列表一致。 - SourceText:需要翻译的内容,确保内容不为空且编码正确(如 UTF-8)。

示例代码:

TranslateGeneralRequest generalRequest = new TranslateGeneralRequest();
generalRequest.setMethod(MethodType.POST);
generalRequest.setFormatType("text");
generalRequest.setSourceLanguage("zh");
generalRequest.setSourceText(URLEncoder.encode("你好", "UTF-8"));
generalRequest.setTargetLanguage("en");

4. 确认服务是否已开通

如果主账号未开通机器翻译服务,子账号调用API时也会报错。请确保主账号已在 机器翻译控制台 开通服务。

解决方法:

  • 主账号登录阿里云控制台,进入 机器翻译产品详情页,完成服务开通流程。

5. 其他注意事项

  • 欠费状态:如果主账号存在欠费情况,机器翻译服务会被立即停止。请确保主账号账户余额充足。
  • 延停权益:国内站用户可开启延期免停权益,国际站用户无此权益。

总结

根据上述分析,建议您按以下顺序排查问题: 1. 确认子账号是否绑定了正确的权限策略(推荐使用 AliyunMTFullAccess 或自定义策略)。 2. 确保子账号通过RAM用户名密码登录,并生成有效的访问密钥。 3. 检查API调用参数是否正确。 4. 确认主账号已开通机器翻译服务,并确保账户无欠费。

如果以上步骤仍无法解决问题,请联系阿里云客服(mt_support@list.alibaba-inc.com)或加入钉钉群(23369411)咨询专家。

希望以上信息能帮助您解决问题!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答