@@ -280,6 +280,28 @@ export default class Scf {
280280 const functionName = inputs . name ;
281281 const { ignoreTriggers = false } = inputs ;
282282
283+ if ( inputs ?. aliasName ) {
284+ if ( ! inputs ?. additionalVersionWeights ) {
285+ throw new ApiTypeError (
286+ 'PARAMETER_SCF' ,
287+ 'additionalVersionWeights is required when aliasName is setted' ,
288+ ) ;
289+ }
290+ if ( ! inputs ?. aliasFunctionVersion ) {
291+ throw new ApiTypeError (
292+ 'PARAMETER_SCF' ,
293+ 'aliasFunctionVersion is required when aliasName is setted' ,
294+ ) ;
295+ }
296+ } else {
297+ if ( inputs ?. additionalVersionWeights || inputs ?. aliasFunctionVersion ) {
298+ throw new ApiTypeError (
299+ 'PARAMETER_SCF' ,
300+ 'aliasName is required when additionalVersionWeights or aliasFunctionVersion is setted' ,
301+ ) ;
302+ }
303+ }
304+
283305 // 在部署前,检查函数初始状态,如果初始为 CreateFailed,尝试先删除,再重新创建
284306 let funcInfo = await this . scf . getInitialStatus ( { namespace, functionName } ) ;
285307
@@ -321,13 +343,10 @@ export default class Scf {
321343 } ) ;
322344 }
323345
324- const aliasAddionalVersion = inputs . aliasAddionalVersion || inputs . lastVersion ;
325- const needSetTraffic =
326- inputs . traffic != null && aliasAddionalVersion && aliasAddionalVersion !== '$LATEST' ;
327- const needSetAlias = ( inputs . aliasName && inputs . aliasName !== '$DEFAULT' ) || needSetTraffic ;
328- if ( needSetAlias ) {
329- let needCreateAlias = false ;
330- if ( inputs . aliasName && inputs . aliasName !== '$DEFAULT' ) {
346+ // 检测配置的别名是否存在,不存在就创建,存在的话就设置流量
347+ let needCreateAlias = false ;
348+ if ( inputs . aliasName ) {
349+ if ( inputs . aliasName !== '$DEFAULT' ) {
331350 try {
332351 const aliasInfo = await this . alias . get ( {
333352 namespace,
@@ -347,32 +366,33 @@ export default class Scf {
347366 }
348367 }
349368 }
350- if ( needCreateAlias ) {
351- await this . alias . create ( {
352- namespace,
353- functionName,
354- functionVersion : inputs . aliasFunctionVersion || funcInfo ?. Qualifier ,
355- aliasName : inputs . aliasName ! ,
356- lastVersion : aliasAddionalVersion ! ,
357- traffic : inputs . traffic ! ,
358- description : inputs . aliasDescription ,
359- } ) ;
360- } else {
361- await this . alias . update ( {
362- namespace,
363- functionName,
364- functionVersion : inputs . aliasFunctionVersion || funcInfo ?. Qualifier ,
365- additionalVersions : needSetTraffic
366- ? [ { weight : strip ( 1 - inputs . traffic ! ) , version : aliasAddionalVersion ! } ]
367- : [ ] ,
368- region : this . region ,
369- aliasName : inputs . aliasName ,
370- description : inputs . aliasDescription ,
371- } ) ;
369+ try {
370+ // 创建别名
371+ if ( needCreateAlias ) {
372+ await this . alias . create ( {
373+ namespace,
374+ functionName,
375+ functionVersion : inputs . aliasFunctionVersion || funcInfo ?. Qualifier ,
376+ aliasName : inputs . aliasName ! ,
377+ description : inputs . aliasDescription ,
378+ additionalVersions : inputs . additionalVersionWeights ,
379+ } ) ;
380+ } else {
381+ // 更新别名
382+ await this . alias . update ( {
383+ namespace,
384+ functionName,
385+ functionVersion : inputs . aliasFunctionVersion || funcInfo ?. Qualifier ,
386+ additionalVersions : inputs . additionalVersionWeights ,
387+ region : this . region ,
388+ aliasName : inputs . aliasName ,
389+ description : inputs . aliasDescription ,
390+ } ) ;
391+ }
392+ } catch ( error ) {
393+ const errorType = needCreateAlias ? 'CREATE_ALIAS_SCF' : 'UPDATE_ALIAS_SCF' ;
394+ throw new ApiTypeError ( errorType , error . message ) ;
372395 }
373-
374- outputs . Traffic = inputs . traffic ;
375- outputs . ConfigTrafficVersion = inputs . lastVersion ;
376396 }
377397
378398 // get default alias
0 commit comments