自动扩缩容调度规则能否指定时区?CDK实现Lambda预置并发定时调度场景
问题解答
可以指定时区,AWS CDK 的 Schedule.cron() 方法原生支持通过 timeZone 参数设置定时任务的时区,无需手动做UTC时间偏移转换。
你可以直接在原有代码的cron配置中增加timeZone字段即可,参数值为标准IANA时区标识符,例如中国标准时间对应Asia/Shanghai,修改后的示例代码如下:
// Define the provisioned concurrency const target = new asg.ScalableTarget(this, 'ScalableTarget', { serviceNamespace: asg.ServiceNamespace.LAMBDA, maxCapacity: 1, minCapacity: 0, resourceId: `function:${alias.lambda.functionName}:${alias.aliasName}`, scalableDimension: 'lambda:function:ProvisionedConcurrency' }); target.node.addDependency(alias); // 北京时间每天早上8点把预置并发调整为1 target.scaleOnSchedule('ScaleUpInTheMorning', { schedule: asg.Schedule.cron({ hour: '08', minute: '00', timeZone: 'Asia/Shanghai' // 指定为上海时区 }), minCapacity: 1, maxCapacity: 1 }); // 北京时间每天下午17点10分把预置并发调整为0 target.scaleOnSchedule('ScaleDownAtNight', { schedule: asg.Schedule.cron({ hour: '17', minute: '10', timeZone: 'Asia/Shanghai' // 指定为上海时区 }), minCapacity: 0, maxCapacity: 0 });
注意事项
- 时区参数必须使用IANA时区标识符,不支持UTC+8、GMT+8这类偏移量写法
- 该参数需要CDK v2.20.0及以上版本支持,如果使用更早版本需要先升级CDK依赖
- 部署完成后可以进入AWS控制台的Application Auto Scaling页面,找到对应定时规则核对时区配置是否生效
内容的提问来源于stack exchange,提问作者nixon
相关产品推荐
相关产品推荐

