使用STS(安全令牌)中的AssumeRole(角色扮演)接口访问OSS资源时发生报错,本文介绍如何根据相应的报错信息进行解决。
通过STS服务临时访问OSS资源时,如发生相应的报错,请参见以下错误码对应的解决方案进行处理:
错误码 | 解决方法 |
ErrorCode: AccessDenied ErrorMessage: Access denied by authorizer's policy. |
详情请参见STS临时授权OSS操作权限报“Access denied by authorizer's policy”错。 |
ErrorCode: InvalidAccessKeyId ErrorMessage: The OSS Access Key Id you provided does not exist in our records. |
临时访问凭证已过期,过期后自动失效。请使用临时访问密钥(AccessKeyId和AccessKeySecret)向App服务器申请新的临时访问凭证。具体操作,请参见OSS服务端签名后直传出现“The OSS Access Key Id you provided does not exist in our records.”报错。 |
ErrorCode: InvalidSecurityToken ErrorMessage: The security token you provided is invalid |
临时访问凭证无效,请参见使用STS临时访问凭证访问OSS,确保完整填写获取到的SecurityToken。 |
ErrorCode: NoPermission ErrorMessage: Roles may not be assumed by root accounts. |
请使用RAM子用户的密钥信息,不要使用主账户的密钥信息,AssumeRole接口需要用RAM子用户调用。 |
ErrorCode: MissingSecurityToken ErrorMessage: SecurityToken is mandatory for this action. |
使用RAM子用户调用RAM的AssumeRole接口会生成一对STS信息,这个STS信息包含了STS的AccessKeyId、AccessSecret和SecurityToken,如果需要使用这对STS去调用其他服务的接口的时候,需要把这个三个参数都传进去。 |
Error code: InvalidAccessKeyId.NotFound ErrorMessage: Specified access key is not found |
AccessKeyId无效,请检查是否写错,特别注意前后不能有空格。 |
Error code: InvalidAccessKeyId.Inactive Error message: Specified access key is disabled. | 使用的RAM子用户密钥已经被禁止,请启用密钥或更换密钥。密钥是否被禁止,请通过控制台的用户AccessKey确认并开启,登录RAM 访问控制控制台,单击用户,单击对应的用户登录名称。 |
ErrorCode: InvalidParameter.PolicyGrammar ErrorMessage: The parameter Policy has not passed grammar check. |
角色扮演时指定的授权策略无效。角色扮演时可以指定授权(Policy),也可以不指定。
报该错误时,请检查指定的授权策略Policy。不推荐临时用户扮演角色时指定授权策略。如果的确需要使用授权策略,建议您使用RAM Policy Editor生成授权策略,详情请参见RAM Policy Editor。 |
ErrorCode: InvalidParameter.RoleSessionName ErrorMessage: The parameter RoleSessionName is wrongly formed. |
角色扮演时指定RoleSessionName无效。此参数用来区分不同的Token,以标明谁在使用此Token,便于审计。格式:^[a-zA-Z0-9.@-_]+$ ,2-32个字符。了解更多信息请参见扮演角色操作接口。例如命名为a、1、abc\*abc、忍者神龟等都是非法的。 |
ErrorCode: InvalidParameter.DurationSeconds ErrorMessage: The Min/Max value of DurationSeconds is 15min/1hr. |
角色扮演时指定的过期时间无效,即AssumeRoleRequest.setDurationSeconds参数无效。角色扮演时可以指定过期时间,单位为秒,有效时间是900~3600秒,如assumeRoleRequest.setDurationSeconds(60L * 20),20分钟内有效。 |
ErrorCode: NoPermission ErrorMessage: No permission perform sts:AssumeRole on this Role. Maybe you are not authorized to perform sts:AssumeRole or the specified role does not trust you. |
|
Error code: NoPermission ErrorMessage: You are not authorized to do this action. You should be authorized by RAM. |
详细信息请参见STS中临时授权时出现“You are not authorized to do this action. You should be authorized by RAM“报错。 |