def create_function(secret_info: Dict[str, str], code: str, envs: Dict): try: client = get_scf_client(secret_info) req = models.CreateFunctionRequest() params = { "FunctionName": config.QCLOUD_FUNCTION_NAME, "Handler": config.QCLOUD_FUNCTION_HANDLER, "Description": "for freedom check in function", "Code": {"ZipFile": code}, "MemorySize": 128, "Timeout": 30, "Environment": { "Variables": [ {"Key": "USERNAME", "Value": envs.get("user_info")[0]}, {"Key": "PASSWORD", "Value": envs.get("user_info")[1]}, {"Key": "SERVER_CHAN_KEY", "Value": envs.get("server_chan_key")}, ] }, "Runtime": "Python3.6", } req.from_json_string(json.dumps(params)) resp = client.CreateFunction(req) print(resp.to_json_string()) except TencentCloudSDKException as err: print(err)
def createFunction(self, functionname, invokeType, isVpc=False): if invokeType == LARGE_FILE_CODE: code = '{"CosBucketName": "%s", "CosObjectName": "/%s.zip"}'%(QC_COS_BUCKET, invokeType) handler = "index.main" runtime = 'Golang1' elif invokeType == MUTI_LITTLE_FILE_CODE: code = '{"CosBucketName": "%s", "CosObjectName": "/%s.zip"}'%(QC_COS_BUCKET, invokeType) handler = "index.main_handler" runtime = 'Nodejs8.9' else: zip64 = getCodeBase64(invokeType) code = '{"ZipFile": "%s"}' % zip64 handler = INVOKE_HANDLER runtime = 'Python2.7' if isVpc: self.logger.info("create vpc [%s] function\n" % invokeType) params = '''{"FunctionName":"%s","Code":%s,"Timeout":60,"MemorySize":512, "Handler":"%s","Runtime":"%s","VpcConfig":{"VpcId":"%s","SubnetId":"%s"},"Namespace":"%s"}''' % ( functionname, str(code), handler,QC_VPC,QC_SUBNET, runtime, QC_NAMESPACE) else: self.logger.info("create [%s] function\n" % invokeType) params = '''{"FunctionName":"%s","Code":%s,"Timeout":60,"MemorySize":512,"Handler":"%s","Runtime":"%s","Namespace":"%s"}''' % (functionname, str(code), handler, runtime,QC_NAMESPACE) crea = models.CreateFunctionRequest() crea.from_json_string(params) resp = self.client.CreateFunction(crea) self.logger.info("创建函数返回: %s\n" % resp) start_time = time.time() while time.time() - start_time < 3000: params = '''{"FunctionName":"%s","Namespace":"%s"}''' % (functionname,QC_NAMESPACE) getf = models.GetFunctionRequest() getf.from_json_string(params) resp = self.client.GetFunction(getf) self.logger.info(resp) if resp.Status == "Active": self.logger.info("恭喜!函数处于可用状态[%s]\n" % str(resp.Status)) return resp elif "ing" in resp.Status: self.logger.info("函数处于不可用状态[%s],再次查询状态...\n" % str(resp.Status)) time.sleep(2) elif "Failed" in resp.Status: self.logger.info("函数操作失败[%s]\n" % str(resp.Status)) raise RuntimeError('Create Function Error!') else: self.logger.info("函数处于未知状态[%s]\n" % str(resp.Status)) raise RuntimeError('Create Function Error!') return resp
def create_func(self, func, func_name, func_ns): req = models.CreateFunctionRequest() req.Namespace = func_ns req.FunctionName = func_name req.Handler = getattr(func, "Handler", None) req.Description = getattr(func, "Description", None) req.MemorySize = getattr(func, "MemorySize", None) req.Timeout = getattr(func, "Timeout", None) req.Runtime = getattr(func, "Runtime", None) req.Environment = self._model_envs(getattr(func, "Environment", None)) req.VpcConfig = self._model_vpc(getattr(func, "VpcConfig", None)) req.Code = self._model_code(getattr(func, "LocalZipFile", None), getattr(func, "CosBucketName", None), getattr(func, "CosObjectName", None)) resp = self._client.CreateFunction(req) return resp.to_json_string()
def create_func(self, func, func_name, func_ns): req = models.CreateFunctionRequest() req.Namespace = func_ns req.FunctionName = func_name proper = func.get(tsmacro.Properties, {}) req.Handler = proper.get(tsmacro.Handler) req.Description = proper.get(tsmacro.Desc) req.MemorySize = proper.get(tsmacro.MemSize) req.Timeout = proper.get(tsmacro.Timeout) req.Runtime = proper.get(tsmacro.Runtime) if req.Runtime: req.Runtime = req.Runtime[0].upper() + req.Runtime[1:].lower() req.Environment = self._model_envs(proper.get(tsmacro.Envi, {})) req.VpcConfig = self._model_vpc(proper.get(tsmacro.VpcConfig)) req.Code = self._model_code(proper.get(tsmacro.LocalZipFile), proper.get(tsmacro.CosBucketName), proper.get(tsmacro.CosObjectName)) resp = self._client.CreateFunction(req) return resp.to_json_string()