Example #1
0
def MSTrigUpdate_Master(AnotherFunctionName, AnotherRegion, AnotherNamespace,
                        TriggerName, FunctionName, Namespace):
    global SecretId, SecretKey, Region
    try:
        cred = credential.Credential(SecretId, SecretKey)
        client = scf_client.ScfClient(cred, AnotherRegion)
    except TencentCloudSDKException as err:
        print(err)
    # 启动从函数
    pass_params = {
        "FunctionName": FunctionName,
        "Region": Region,
        "Namespace": Namespace,
        "TriggerName": TriggerName,
        "SecretId": SecretId,
        "SecretKey": SecretKey
    }
    pass_params_str = json.dumps(pass_params)
    req = models.InvokeRequest()
    params = '{"FunctionName":"' + AnotherFunctionName + '",'
    params += '"InvocationType":"Event",'
    params += '"ClientContext":"' + pass_params_str + '",'
    params += '"Namespace":"' + AnotherNamespace + '"}'
    req.from_json_string(params)
    return
Example #2
0
 def __init__(self):
     uc = UserConfig()
     self._cred = credential.Credential(secretId=uc.secret_id,
                                        secretKey=uc.secret_key)
     self._region = uc.region
     cp = ClientProfile("TC3-HMAC-SHA256")
     self._client = scf_client.ScfClient(self._cred, self._region, cp)
    def __init__(self):
        self.name = QC_NAME
        self.region = REGION
        self.logger = getLogger()
        self.logger.info("Init Qcloud SCF Client...\n")
        self.logger.info("The region is: %s\n" % self.region)
        cred = credential.Credential(QC_API_ID, QC_API_KEY)
        self.logger.info("The secert info:")
        self.logger.info("Secret Id: %s" % (QC_API_ID[0:5]+"******"))
        self.logger.info("Secret Key: %s\n" % (QC_API_KEY[0:5]+"******"))
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "GET"
        httpProfile.reqTimeout = 30
        httpProfile.endpoint = QC_ENDPOINT_MODEL % self.region
        self.logger.info("The request endpoint is: %s\n" % httpProfile.endpoint)
        httpProfile.keepAlive = True

        clientProfile = ClientProfile()

        clientProfile.signMethod = "HmacSHA256"
        clientProfile.httpProfile = httpProfile

        self.client = scf_client.ScfClient(cred, 'ap-' + self.region, clientProfile)

        self.logger.info("SCF client init success!\n")

        self.logger.info("Start to get VPC info...")
        self.logger.info("VPC id is: %s"% QC_VPC)
        self.logger.info("VPC-Subnet id is: %s\n" % QC_SUBNET)
    def __init__(self,
                 region=None,
                 secret_id=None,
                 secret_key=None,
                 token=None):

        self.region = region if region is not None \
            else os.environ.get("TENCENTCLOUD_REGION", "ap-guangzhou")

        self.secret_id = secret_id if secret_id is not None \
            else os.environ.get("TENCENTCLOUD_SECRETID", None)

        self.secret_key = secret_key if secret_key is not None \
            else os.environ.get("TENCENTCLOUD_SECRETKEY", None)

        self.token = token if token is not None \
            else os.environ.get("TENCENTCLOUD_SESSIONTOKEN", None)

        self.env = os.environ.get("TENCENTCLOUD_RUNENV", None)

        self.endpoint = "scf.internal.tencentcloudapi.com" if self.env == "SCF" \
            else "scf.tencentcloudapi.com"

        cred = credential.Credential(self.secret_id, self.secret_key, self.token)
        profile = ClientProfile(httpProfile=HttpProfile(reqTimeout=300, keepAlive=True))
        self.client = scf_client.ScfClient(cred, self.region, profile=profile)
Example #5
0
 def __init__(self):
     uc = UserConfig()
     self._cred = credential.Credential(secretId=uc.secret_id, secretKey=uc.secret_key)
     self._region = uc.region
     hp = HttpProfile(reqTimeout=ScfClient.CLOUD_API_REQ_TIMEOUT)
     cp = ClientProfile("TC3-HMAC-SHA256", hp)
     self._client = scf_client.ScfClient(self._cred, self._region, cp)
     self._client._sdkVersion = "TCFCLI"
Example #6
0
def get_scf_client(secret_info: Dict[str, str]):
    cred = credential.Credential(secret_info.get("TENCENT_SECRET_ID"),
                                 secret_info.get("TENCENT_SECRET_KEY"))
    http_profile = HttpProfile()
    http_profile.endpoint = config.QCLOUD_API_ENDPOINT

    client_profile = ClientProfile()
    client_profile.httpProfile = http_profile
    return scf_client.ScfClient(cred, config.QCLOUD_REGION, client_profile)
Example #7
0
 def __init__(self, secretId, secretKey, endpoint="scf.tencentcloudapi.com", region_id="ap-hongkong", function_name=None):
     cred = credential.Credential(secretId, secretKey)
     httpProfile = HttpProfile()
     httpProfile.endpoint = endpoint
 
     clientProfile = ClientProfile()
     clientProfile.httpProfile = httpProfile
     self.client = scf_client.ScfClient(cred, region_id, clientProfile)
     
     self._func_name = function_name
Example #8
0
    def __init__(self, config):
        self.config = config

        # scf api client
        cred = credential.Credential(config['secret_id'], config['secret_key'])
        self.scf_client = scf_client.ScfClient(cred, config['scf_region'])

        # cdn api client
        cdn_config = {
            'Region':          'ap-guangzhou',
            'method':          'GET',
            'secretId':        config['secret_id'],
            'secretKey':       config['secret_key'],
            'SignatureMethod': 'HmacSHA1',
            }
        self.cdn_client = QcloudApi("cdn", cdn_config)
        self.cos_path = config['cos_path']
Example #9
0
def ABTrigUpdate(AnotherFunctionName, AnotherRegion, AnotherNamespace,
                 TriggerName):
    global SecretId, SecretKey, Region
    try:
        cred = credential.Credential(SecretId, SecretKey)
        client = scf_client.ScfClient(cred, AnotherRegion)
    except TencentCloudSDKException as err:
        print(err)
    # 删除旧触发器
    try:
        req = models.DeleteTriggerRequest()
        params = '{"FunctionName":"' + AnotherFunctionName + '",'
        params += '"TriggerName":"' + TriggerName + '",'
        params += '"Namespace":"' + AnotherNamespace + '",'
        params += '"Type":"timer"}'
        req.from_json_string(params)
        resp = client.DeleteTrigger(req)
        print(resp.to_json_string())
    except TencentCloudSDKException as err:
        print(err)

    # 添加新触发器
    try:
        next_time = time.time()
        next_time += random.randint(random_time_lowerlimit,
                                    random_time_toplimit)

        req = models.CreateTriggerRequest()
        params = '{"FunctionName":"' + AnotherFunctionName + '",'
        params += '"TriggerName":"' + TriggerName + '",'
        params += '"Namespace":"' + AnotherNamespace + '",'
        params += '"Type":"timer",'
        params += '"Enable":"OPEN",'
        params += '"TriggerDesc":"' + \
            to_china_timezone_cron(next_time) + '"}'
        req.from_json_string(params)
        resp = client.CreateTrigger(req)
        print(resp.to_json_string())
    except TencentCloudSDKException as err:
        print(err)
    return
Example #10
0
def kafka_consumer_api_handler(cred, partition_id, region, consumer_function_name, namespace):
    try:

        # 实例化要请求产品的client对象,以及函数所在的地域
        client = scf_client.ScfClient(cred, region)
        # 接口参数,输入需要调用的函数名,RequestResponse(同步) 和 Event(异步)
        function_name = consumer_function_name
        logger.debug('Start Hello World function')
        # 调用接口,发起请求,并打印返回结果
        req = scf_models.InvokeRequest()
        req.FunctionName = function_name
        req.Namespace = namespace
        req.InvocationType = "Event"
        client_param = {"partition_id": partition_id}
        req.ClientContext = json.dumps(client_param)
        ret = client.Invoke(req)
        ret_value = json.loads(s=ret.to_json_string())
        logger.debug("ret_value: %s", str(ret_value["Result"]))

    except TencentCloudSDKException as err:
        logger.error(err)
Example #11
0
def EnvWrite(FunctionName,
             Namespace,
             ms_id,
             ms_secret,
             refresh_token,
             Another=None):
    global SecretId, SecretKey, Region
    try:
        cred = credential.Credential(SecretId, SecretKey)
        client = scf_client.ScfClient(cred, Region)
    except TencentCloudSDKException as err:
        print(err)
    req = models.UpdateFunctionConfigurationRequest()
    params = '{"FunctionName":"' + FunctionName + '",'
    params += '"Namespace":"' + Namespace + '",'
    params += '"Environment":{"Variables":['
    params += '{"Key":"Region","Value":"' + Region + '"},'
    params += '{"Key":"refresh_token","Value":"' + refresh_token + '"},'
    params += '{"Key":"ms_id","Value":"' + ms_id + '"},'
    params += '{"Key":"ms_secret","Value":"' + ms_secret + '"},'
    params += '{"Key":"SecretId","Value":"' + SecretId + '"},'
    params += '{"Key":"SecretKey","Value":"' + SecretKey + '"},'
    if Another:
        for key in Another:
            if Another[key]:
                params += '{"Key":"' + key + '","Value":"' + Another[
                    key] + '"},'
    params = params.rstrip(",")
    params += ']}}'
    #print(params)
    req.from_json_string(params)
    try:
        # 以下照抄腾讯云sdk例程
        resp = client.UpdateFunctionConfiguration(req)
        print(resp.to_json_string())
    except TencentCloudSDKException as err:
        print(err)
    return
Example #12
0
def addTags(mapper, connection, target):
    print("add tags")
    try:
        cred = credential.Credential(os.environ.get('tencent_secret_id'),
                                     os.environ.get('tencent_secret_key'))
        httpProfile = HttpProfile()
        httpProfile.endpoint = "scf.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = scf_client.ScfClient(cred, os.environ.get("region"),
                                      clientProfile)

        req = models.InvokeRequest()
        params = '{"FunctionName":"Blog_Admin_updateArticle","InvocationType":"Event","ClientContext":"{\\"id\\": %s}","Namespace":"default"}' % (
            target.aid)
        req.from_json_string(params)
        resp = client.Invoke(req)
        print(resp)

    except TencentCloudSDKException as err:
        print(err)
    print("end add")
Example #13
0
def main_handler(event, context):
    try:
        provision_params = json.loads(event['Message'])
        if len(provision_params) < 4:
            return ("Missing parameters")
        cred = credential.Credential(
            os.environ.get('TENCENTCLOUD_SECRETID'),
            os.environ.get('TENCENTCLOUD_SECRETKEY'),
            os.environ.get('TENCENTCLOUD_SESSIONTOKEN'))
        httpProfile = HttpProfile()
        httpProfile.endpoint = "scf.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = scf_client.ScfClient(cred, provision_params["Region"],
                                      clientProfile)

        req = models.PutProvisionedConcurrencyConfigRequest()
        params = {
            "FunctionName":
            provision_params.get("FunctionName"),
            "Namespace":
            provision_params.get("Namespace"),
            "Qualifier":
            provision_params.get("Qualifier"),
            "VersionProvisionedConcurrencyNum":
            provision_params.get("VersionProvisionedConcurrencyNum")
        }
        req.from_json_string(json.dumps(params))

        resp = client.PutProvisionedConcurrencyConfig(req)
        print(resp.to_json_string())

    except TencentCloudSDKException as err:
        print(err)
    return ("Hello Serverless")
Example #14
0
from tencentcloud.common import credential
from tbp import tbp_client, models as tbp_models
from tts import tts_client, models as tts_models
from tencentcloud.scf.v20180416 import scf_client, models as scf_models

bot_id = os.environ.get('bot_id')
bucket = os.environ.get('bucket')
secret_id = os.environ.get('secret_id')
secret_key = os.environ.get('secret_key')
region = os.environ.get('region')
wxtoken = os.environ.get('wxtoken')
appid = os.environ.get('appid')
secret = os.environ.get('secret')
cosClient = CosS3Client(
    CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key))
scfClient = scf_client.ScfClient(credential.Credential(secret_id, secret_key),
                                 region)
tbpClient = tbp_client.TbpClient(credential.Credential(secret_id, secret_key),
                                 region)
ttsClient = tts_client.TtsClient(credential.Credential(secret_id, secret_key),
                                 region)

key = 'news/content.json'
indexKey = 'news/content_index.json'
accessTokenKey = 'access/token.json'
accessToken = None
articlesList = None


def getAccessToken():
    '''
    文档地址:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
    def invoke(self,
               function_name,
               namespace="default",
               log_type="None",
               qualifier="$LATEST",
               invocation_type="RequestResponse",
               data=None):

        self.region = self.region if self.region is not None \
            else os.environ.get("TENCENTCLOUD_REGION", "ap-guangzhou")

        self.secret_id = self.secret_id if self.secret_id is not None \
            else os.environ.get("TENCENTCLOUD_SECRETID", None)

        self.secret_key = self.secret_key if self.secret_key is not None \
            else os.environ.get("TENCENTCLOUD_SECRETKEY", None)

        self.token = self.token if self.token is not None \
            else os.environ.get("TENCENTCLOUD_SESSIONTOKEN", None)

        self.env = os.environ.get("TENCENTCLOUD_RUNENV", None)

        self.endpoint = "scf.internal.tencentcloudapi.com" if self.env == "SCF" \
            else "scf.tencentcloudapi.com"

        cred = credential.Credential(self.secret_id, self.secret_key,
                                     self.token)
        self.profile = ClientProfile(httpProfile=HttpProfile(
            endpoint=self.endpoint, reqTimeout=300, keepAlive=True))
        self.client = scf_client.ScfClient(cred,
                                           self.region,
                                           profile=self.profile)

        client_context = None
        if data:
            client_context = json.dumps(data)
        action_params = {
            "Namespace": namespace,
            "LogType": log_type,
            "ClientContext": client_context,
            "Qualifier": qualifier,
            "InvocationType": invocation_type,
            "FunctionName": function_name,
        }
        res = json.loads(self.client.call("Invoke", action_params))
        if "Error" in res["Response"]:
            raise TencentCloudSDKException(
                code=res["Response"]["Error"]["Code"],
                message=res["Response"]["Error"]["Message"],
                requestId=res["Response"]["RequestId"])
        elif "InvokeResult" in res["Response"]["Result"]:
            if res["Response"]["Result"]["InvokeResult"] == 1:
                exceptions = json.loads(res["Response"]["Result"]["RetMsg"])
                stack_trace = exceptions[
                    "stackTrace"] if "stackTrace" in exceptions else ""
                raise TencentServerlessSDKException(
                    code=exceptions["errorCode"],
                    message=exceptions["errorMessage"],
                    response=res,
                    stack_trace=stack_trace,
                    request_id=res["Response"]['RequestId'])
            elif res["Response"]["Result"]["InvokeResult"] == -1:
                raise TencentServerlessSDKException(
                    code=-1,
                    message=res["Response"]["Result"]["RetMsg"],
                    response=res,
                    request_id=res["Response"]['RequestId'])
            else:
                return res["Response"]["Result"]["RetMsg"]
        else:
            raise TencentServerlessSDKException(
                code=-1,
                message='Internal server error',
                response=res,
                request_id=res["Response"]['RequestId'])