请教个机器翻译问题,我用个人账号关联了一个阿里云主账号,成为了这个主账号的子账号,然后申请了通用翻译的权限(AliyunMTReadOnlyAccess),但是按照文档调用的时候报错:'Code': 10009,查了下是子账号没有权限,我不太清楚是哪个环节的权限有问题,麻烦帮忙看下?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的情况,您作为子账号在调用机器翻译通用版接口时遇到了权限问题(错误码:10009),这通常与子账号的授权配置有关。以下是详细的排查和解决步骤:
您提到已经申请了 AliyunMTReadOnlyAccess
权限策略,但该策略仅允许只读访问机器翻译的API接口和管控台。如果您需要调用机器翻译的通用版接口(如 alimt:TranslateGeneral
),则需要确保子账号具备相应的写入权限。
检查当前权限策略:
AliyunMTFullAccess
或自定义策略(包含 alimt:TranslateGeneral
的权限)。添加正确的权限策略: 如果未绑定正确的权限策略,请按照以下步骤操作:
AliyunMTFullAccess
,将其添加至子账号的权限列表中。{
"Statement": [
{
"Effect": "Allow",
"Action": "alimt:TranslateGeneral",
"Resource": "acs:alimt:*:<主账号ID>:*"
}
],
"Version": "1"
}
替换 <主账号ID>
为实际的主账号ID,并将此策略绑定至子账号。
子账号调用API时,必须使用 RAM用户名密码登录 或通过 STS Token 进行身份验证。如果子账号未正确登录或未获取有效的Token,可能会导致权限校验失败。
即使权限配置正确,API调用时的参数错误也可能导致报错。请确认以下关键参数是否正确设置: - FormatType:翻译文本的格式,支持 text
或 html
。 - SourceLanguage 和 TargetLanguage:源语言和目标语言的语言代码,需与支持的语言代码列表一致。 - 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");
如果主账号未开通机器翻译服务,子账号调用API时也会报错。请确保主账号已在 机器翻译控制台 开通服务。
根据上述分析,建议您按以下顺序排查问题: 1. 确认子账号是否绑定了正确的权限策略(推荐使用 AliyunMTFullAccess
或自定义策略)。 2. 确保子账号通过RAM用户名密码登录,并生成有效的访问密钥。 3. 检查API调用参数是否正确。 4. 确认主账号已开通机器翻译服务,并确保账户无欠费。
如果以上步骤仍无法解决问题,请联系阿里云客服(mt_support@list.alibaba-inc.com)或加入钉钉群(23369411)咨询专家。
希望以上信息能帮助您解决问题!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。