footmark/sts/connection.py (34 lines of code) (raw):

# encoding: utf-8 import json from footmark.connection import ACSQueryConnection from footmark.sts.regioninfo import RegionInfo from footmark.exception import STSResponseError from footmark.sts.sts import Sts # from aliyunsdksts.request.v20150401.AssumeRoleRequest import class STSConnection(ACSQueryConnection): SDKVersion = '2015-04-01' DefaultRegionId = 'cn-hangzhou' DefaultRegionName = '杭州'.encode("UTF-8") ResponseError = STSResponseError def __init__(self, acs_access_key_id=None, acs_secret_access_key=None, region=None, sdk_version=None, security_token=None, ecs_role_name=None, user_agent=None): """ Init method to create a new connection to STS. """ if not region: region = RegionInfo(self, self.DefaultRegionName, self.DefaultRegionId) self.region = region if sdk_version: self.SDKVersion = sdk_version self.STSSDK = 'aliyunsdksts.request.v' + self.SDKVersion.replace('-', '') super(STSConnection, self).__init__(acs_access_key_id=acs_access_key_id, acs_secret_access_key=acs_secret_access_key, security_token=security_token, region=self.region, product=self.STSSDK, user_agent=user_agent, ecs_role_name=ecs_role_name) def format_sts_request_kwargs(self, **kwargs): for key, value in list(kwargs.items()): # format str to json if key == 'policy' and value: kwargs[key] = json.dumps(eval(value)) return kwargs def assume_role(self, **kwargs): return self.get_object_new(self.build_request_params(self.format_sts_request_kwargs(**self.format_request_kwargs(**kwargs))), Sts) def get_caller_identity(self, **kwargs): return self.get_object_new(self.build_request_params(self.format_sts_request_kwargs(**self.format_request_kwargs(**kwargs))), Sts)