50 lines
1.5 KiB
Python
Executable File
50 lines
1.5 KiB
Python
Executable File
# Copyright (c) Alibaba, Inc. and its affiliates.
|
|
|
|
from aliyunsdkcore.client import AcsClient
|
|
from aliyunsdkcore.request import CommonRequest
|
|
from .exception import GetTokenFailed
|
|
|
|
import json
|
|
|
|
__all__ = ['getToken']
|
|
|
|
def getToken(akid, aksecret, domain='cn-shanghai',
|
|
version='2019-02-28',
|
|
url='nls-meta.cn-shanghai.aliyuncs.com'):
|
|
"""
|
|
Help methods to get token from aliyun by giving access id and access secret
|
|
key
|
|
|
|
Parameters:
|
|
-----------
|
|
akid: str
|
|
access id from aliyun
|
|
aksecret: str
|
|
access secret key from aliyun
|
|
domain: str:
|
|
default is cn-shanghai
|
|
version: str:
|
|
default is 2019-02-28
|
|
url: str
|
|
full url for getting token, default is
|
|
nls-meta.cn-shanghai.aliyuncs.com
|
|
"""
|
|
if akid is None or aksecret is None:
|
|
raise GetTokenFailed('No akid or aksecret')
|
|
client = AcsClient(akid, aksecret, domain)
|
|
request = CommonRequest()
|
|
request.set_method('POST')
|
|
request.set_domain(url)
|
|
request.set_version(version)
|
|
request.set_action_name('CreateToken')
|
|
response = client.do_action_with_exception(request)
|
|
response_json = json.loads(response)
|
|
if 'Token' in response_json:
|
|
token = response_json['Token']
|
|
if 'Id' in token:
|
|
return token['Id']
|
|
else:
|
|
raise GetTokenFailed(f'Missing id field in token:{token}')
|
|
else:
|
|
raise GetTokenFailed(f'Token not in response:{response_json}')
|