@@ -280,6 +280,28 @@ export default class Scf {
280
280
const functionName = inputs . name ;
281
281
const { ignoreTriggers = false } = inputs ;
282
282
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
+
283
305
// 在部署前,检查函数初始状态,如果初始为 CreateFailed,尝试先删除,再重新创建
284
306
let funcInfo = await this . scf . getInitialStatus ( { namespace, functionName } ) ;
285
307
@@ -321,13 +343,10 @@ export default class Scf {
321
343
} ) ;
322
344
}
323
345
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' ) {
331
350
try {
332
351
const aliasInfo = await this . alias . get ( {
333
352
namespace,
@@ -347,32 +366,33 @@ export default class Scf {
347
366
}
348
367
}
349
368
}
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 ) ;
372
395
}
373
-
374
- outputs . Traffic = inputs . traffic ;
375
- outputs . ConfigTrafficVersion = inputs . lastVersion ;
376
396
}
377
397
378
398
// get default alias
0 commit comments