amazon-web-services - 有没有办法在自动缩放计划中指定时区?
问题描述
我正在使用 CDK 按计划自动扩展 Lambda 预置并发。例如:
// 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);
// Start the provisioned concurrency at 8am
target.scaleOnSchedule('ScaleUpInTheMorning', {
schedule: asg.Schedule.cron({ hour: '08', minute: '00' }),
minCapacity: 1,
maxCapacity: 1
});
// Stop the provisioned concurrency at night
target.scaleOnSchedule('ScaleDownAtNight', {
schedule: asg.Schedule.cron({ hour: '17', minute: '10' }),
minCapacity: 0
maxCapacity: 0
});
根据我阅读的内容和我自己的测试,cron 定义中的时间是 UTC。
有没有办法指定时区?
解决方案
您可以使用 L1 构造来实现这一点,因为 CloudFormation 支持它: https ://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-applicationautoscaling.CfnScalableTarget.html
我对 TypeScript 没有任何经验,因此希望以下语法是正确的。无论如何,你明白了。
const target = new asg.CfnScalableTarget(this, 'ScalableTarget', {
serviceNamespace: asg.ServiceNamespace.LAMBDA,
maxCapacity: 1,
minCapacity: 0,
resourceId: `function:${alias.lambda.functionName}:${alias.aliasName}`,
scalableDimension: 'lambda:function:ProvisionedConcurrency',
scheduledActions: {
schedule: asg.Schedule.cron(
{ hour: '08', minute: '00' }).expressionString,
scheduledActionName: 'morning',
timezone: 'Pacific/Tahiti'
},
scalableTargetAction: {
minCapacity: 1,
maxCapacity: 1
}
});
推荐阅读
- android - SLF4J 登录 Android 应用程序的非 Android 模块
- typescript - 在打字稿中导入超集群时出错(TypeError:无法设置未定义的属性“选项”)
- python - 将参数提供给函数的更好方法
- python - 根据另一列的条件创建熊猫列
- mysql - 使用 mysql 数据库时使用 BCrypt 的身份验证不保存 hashed_password
- webrtc - WebRTC + Adapter.js 在 MS Edge 中连接音频呼叫时出现 addremoteCandidate 错误
- powershell - 将数组列表从第一个脚本传递到第二个脚本
- python - 根据情况删除
- javascript - 使用 appendChild 到当前聚焦的元素
- python - 在 Django 管理员上使用 ImageField 提交表单后出现 404 错误