Eth*_*lig 12 amazon-web-services amazon-cloudwatch aws-lambda
我希望能够设置一个时间来调用AWS Lambda函数,然后再调用该函数.例如,我希望我的Lambda函数在2017年12月19日晚上9点运行.我不想重复它,我不希望它现在调用,只是在19日晚上9点.
我知道CloudWatch提供了计划事件,而我当时认为当输入安排此提醒的时间时,会创建一个CloudWatch计划事件,以便在此后的一段时间内启动(因此,如果您在晚上8:22安排它)在晚上9点运行,它将是38分钟),然后它在晚上9点调用Lambda函数,然后删除CloudWatch预定事件.我的问题是,当创建CloudWatch Scheduled Event时,它会立即执行,然后以指定的时间间隔执行.
任何其他想法将不胜感激,因为我想不出另一种解决方案.提前致谢!
Muh*_*man 18
您可以使用 DynamoDBTTL功能轻松实现这一点,只需执行以下操作:
1- 将 item 与TTL,您要执行或调用 lambda 函数的确切时间。
2- 配置DynamoDB Streams为在项目remove事件上触发 lambda 函数。
一旦项目/记录即将到期,您的 lambda 将被调用。您不必删除或清理任何内容,因为 dynamodb 中的项目已经消失。
注意:然而,该方法易于实施且可扩展性非常好,但有一个预防措施需要提及;使用DynamoDB TTL的调度机制不能保证确切的时间精度可能有延迟。计划任务在几分钟后执行。
Kus*_*yas 13
您可以使用以下语法计划lambda事件:
cron(Minutes Hours Day-of-month Month Day-of-week Year)
注意:所有字段都是必填字段,时区仅限UTC
有关详细信息,请参阅此AWS文档.
谢谢
您可以安排一个步进函数,该函数可以等到特定时间点,然后再使用任意负载调用 lambda。
https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html
像这样的东西
const stepFunctions = new AWS.StepFunctions()
const payload = {
stateMachineArn: process.env.SCHEDULED_LAMBDA_SF_ARN,
name: `${base64.encode(email)}-${base64.encode(timestamp)}`, // Dedupe key
input: JSON.stringify({
timestamp,
lambdaName: 'myLambdaName',
lambdaPayload: {
email,
initiatedBy
},
}),
}
await stepFunctions.startExecution(payload).promise()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4802 次 |
| 最近记录: |