@@ -321,19 +321,56 @@ export default class Scf {
321321 } ) ;
322322 }
323323
324+ const aliasAddionalVersion = inputs . aliasAddionalVersion || inputs . lastVersion ;
324325 const needSetTraffic =
325- inputs . traffic != null && inputs . lastVersion && inputs . lastVersion !== '$LATEST' ;
326- if ( needSetTraffic ) {
327- await this . alias . update ( {
328- namespace,
329- functionName,
330- region : this . region ,
331- additionalVersions : needSetTraffic
332- ? [ { weight : strip ( 1 - inputs . traffic ! ) , version : inputs . lastVersion ! } ]
333- : [ ] ,
334- aliasName : inputs . aliasName ,
335- description : inputs . aliasDescription ,
336- } ) ;
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' ) {
331+ try {
332+ const aliasInfo = await this . alias . get ( {
333+ namespace,
334+ functionName,
335+ region : this . region ,
336+ aliasName : inputs . aliasName ,
337+ } ) ;
338+ if ( ! aliasInfo ?. Name ) {
339+ needCreateAlias = true ;
340+ }
341+ } catch ( error : any ) {
342+ if (
343+ error . message &&
344+ ( error . message . includes ( '未找到指定的' ) || error . message . include ( 'is not found' ) )
345+ ) {
346+ needCreateAlias = true ;
347+ }
348+ }
349+ }
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+ } ) ;
372+ }
373+
337374 outputs . Traffic = inputs . traffic ;
338375 outputs . ConfigTrafficVersion = inputs . lastVersion ;
339376 }
0 commit comments