0

尝试使用 SDK 访问阿里云中配置的 EDAS 应用。下面的代码返回错误代码 401(“无效用户”)。我已经检查了 EDAS 设置,它只是为我自己的主帐户设置的。感谢是否有人可以就此分享一些指导。

- - - 代码 - - - - -

# -*- coding: utf-8 -*- 
import sys from aliyunsdkcore.client
import AcsClient from aliyunsdkedas.request.v20170801
import QueryApplicationStatusRequest
import uuid from aliyunsdkcore.profile
import region_provider from aliyunsdkcore.http
import method_type as MT from aliyunsdkcore.http
import format_type as FT

try:
  reload(sys)
  sys.setdefaultencoding('utf8')
except NameError:
  pass except Exception as err:
    raise err

REGION = "ap-southeast-1"
PRODUCT_NAME = "Edas"
ENDPOINT = "edas.ap-southeast-1.aliyuncs.com"
ACCESS_KEY_ID = "Primary account key ID"
ACCESS_KEY_SECRET = "Primary account security key"
region_provider.add_endpoint(PRODUCT_NAME, REGION, ENDPOINT)
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)

def query_application():
  qappreq = QueryApplicationStatusRequest.QueryApplicationStatusRequest()
  qappreq.set_AppId('457290d6-9426-49c8-835c-4133f6a4d268')
  qappresponse = acs_client.do_action_with_exception(qappreq)
  return qappresponse

if __name__ == '__main__':
  print(query_application())

在运行上面的代码时,我得到了这个输出,

{"Code":401}
4

2 回答 2

0

错误代码401明确表示您无权调用 API。

如果您使用子账号调用API,那么请求使用的Access Key ID没有调用API的权限。

要修复它,请使用主帐户授权子帐户。或使用主账户访问密钥访问 EDAS(这不是最佳实践)。

于 2018-12-30T12:58:28.137 回答
0

错误响应 401 表示访问未经授权,因此似乎是您访问应用程序服务器的问题。根据 EDAS 文档:

请求使用的Access Key ID对应的子账号没有调用API的权限。要修复它,请使用主帐户授权子帐户。

在这种情况下,您确定您已使用您的主账户授权您的子账户吗?

主账号可以通过创建不同的角色,为其子账号定义不同的操作权限。

  1. 在 EDAS 控制台中,选择左侧导航栏中的角色。
  2. 单击右上角的创建角色。
  3. 输入角色名称,从左侧字段中选择权限并添加到右侧,然后单击“确定”。

错误信息并不多,它只是表明您没有授权,因此请检查您的 EDAS 控制台中的帐户和角色并仔细检查值。

于 2018-12-08T17:38:31.313 回答