@@ -321,19 +321,56 @@ export default class Scf {
321
321
} ) ;
322
322
}
323
323
324
+ const aliasAddionalVersion = inputs . aliasAddionalVersion || inputs . lastVersion ;
324
325
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
+
337
374
outputs . Traffic = inputs . traffic ;
338
375
outputs . ConfigTrafficVersion = inputs . lastVersion ;
339
376
}
0 commit comments