您可以在动态计时器上触发 AWS Lambda 吗?

2023-12-26

有没有办法在动态计时器上触发 AWS Lambda?目前,我正在利用预定事件来触发 lambda,但这是一个设定的计时器。有没有办法动态设置从 Lambda 内部触发 Lambda 的时间?

这里的想法是,这个 Lambda 执行特定的检查并执行代码,以了解它下次应该何时运行(因为我只希望这个 Lambda 在需要时运行)。我想 1) 确定下次需要运行的时间,2) 在 Lambda 代码中设置时间。

我看到有很多资源用于触发 Lambda 函数(SNS、Kinesis 等),但我似乎找不到一种动态启动的好方法。


这可以通过设置 CloudWatch 事件规则来触发 Lambda 函数来完成。每次调用 Lambda 函数时,该函数都需要确定其下一次运行时间并适当修改事件规则。

var AWS = require("aws-sdk");

exports.handler = function(event, context) {
    var cloudwatchevents = new AWS.CloudWatchEvents();
    var intervals = Array(3, 5, 7);
    var nextInterval = intervals[Math.floor(Math.random()*intervals.length)];
    var currentTime = new Date().getTime(); // UTC Time
    var nextTime = dateAdd(currentTime, "minute", nextInterval);
    var nextMinutes = nextTime.getMinutes();
    var nextHours = nextTime.getHours();

    //  =================================
    //  DO YOUR WORK HERE
    //  =================================

    var scheduleExpression = "cron(" + nextMinutes + " " + nextHours + " * * ? *)";
    var params = {
        Name: "YOUR CLOUDWATCH EVENT RULE NAME",
        ScheduleExpression: scheduleExpression
    };
    cloudwatchevents.putRule(params, function(err, data) {
        if (err) {
            console.log(err, err.stack);  
        }
        else {
            console.log(data);
        }
    })
};

var dateAdd = function(date, interval, units) {
    var ret = new Date(date); // don't change original date
    switch(interval.toLowerCase()) {
        case 'year'   :  ret.setFullYear(ret.getFullYear() + units);  break;
        case 'quarter':  ret.setMonth(ret.getMonth() + 3*units);  break;
        case 'month'  :  ret.setMonth(ret.getMonth() + units);  break;
        case 'week'   :  ret.setDate(ret.getDate() + 7*units);  break;
        case 'day'    :  ret.setDate(ret.getDate() + units);  break;
        case 'hour'   :  ret.setTime(ret.getTime() + units*3600000);  break;
        case 'minute' :  ret.setTime(ret.getTime() + units*60000);  break;
        case 'second' :  ret.setTime(ret.getTime() + units*1000);  break;
        default       :  ret = undefined;  break;
    }
    return ret;
}

您应该能够将我的随机决定与您自己的调度逻辑交换,并插入您需要的任何工作来代替我的评论。

您需要将我的代码片段中的“您的 CLOUDWATCH 事件规则名称”替换为您的事件规则名称。

对于博客来说是个好问题:动态安排下一个运行时的 AWS Lambda 函数 http://www.aaronmedacco.com/blog/post/2017/01/15/aws-lambda-functions-that-dynamically-schedule-their-next-runtime

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以在动态计时器上触发 AWS Lambda 吗? 的相关文章

  • 如何找到 JAR:/home/hadoop/contrib/streaming/hadoop-streaming.jar

    我正在练习有关 Amazon EMR 的复数视角视频教程 我被困住了 因为我收到此错误而无法继续 Not a valid JAR home hadoop contrib streaming hadoop streaming jar 请注意
  • 在 AWS Glue 中覆盖动态框架中的镶木地板文件

    我使用动态框架在 S3 中写入镶木地板文件 但如果文件已存在 我的程序会附加一个新文件而不是替换它 我用的句子是这样的 glueContext write dynamic frame from options frame table con
  • 对于 aws s3,预检响应无效(重定向)

    我正在尝试将图像上传到我的 Amazon S3 存储桶 但即使我已经正确设置了 CORS 配置 我仍然收到此 CORS 错误 这是我的 CORS 配置
  • 我可以指定默认的 AWS 配置文件吗?

    在我的开发环境中 我经常在多个 AWS 访问密钥之间切换 所以在我的 aws credentials文件 我有几个配置文件 然后 我可以通过指定以下内容将这些配置文件与 aws cli 一起使用 profile
  • AWS DynamoDb DocumentClient - 从项目数组创建批量写入 - node.js

    我正在尝试执行batchWrite使用 DynamoDB 的操作DocumentClient来自项目数组 JSON 这是我的代码 var items for i 0 i lt orders length i var ord orders i
  • ECS 上蓝/绿部署所需的 Cloudformation 脚本

    我正在尝试编写一个云形成模板具有蓝绿部署支持的 AWS ECS 这项蓝绿功能最近由 AWS 在 ECS 中添加 但在云形成模板中找不到任何更新它的参考 他们提供了有关如何通过 UI 而不是通过云形成来完成此操作的文档 我猜想 AWS 可能不
  • AWS CodeBuild - 如何跳过构建

    我的构建是在每次推送到存储库和每次拉取请求时触发的 因此 CODEBUILD SOURCE VERSION 看起来像 pr 8 或 4570d2e7158cfef687af8da31d1ffec7b02e5ca3 我只希望为 pr 分支执行
  • ECS任务定义中容器之间的通信

    我在 ECS 中运行了一个任务定义awsvpc模式 包含 2 个 docker 容器 我的问题是如何在任务定义中的容器之间进行通信 它们的行为与 docker compose 类似吗 awsvpc 网络模式下的任务中的多个容器将共享任务 E
  • 如何从 completableFuture 创建 Mono

    我正在尝试包裹CompletableFuture反应堆内Mono输入以简化我的转换操作 总的来说 Project Reactor 更方便 我正在 AWS Lambda 函数中工作 并使用新的 AWS Java SDK 2 x 版本调用 AW
  • 无法在 AWS Glue PySpark 开发终端节点中正确运行脚本

    我已经配置了一个 AWS Glue 开发终端节点 并且可以在 pyspark REPL shell 中成功连接到它 像这样https docs aws amazon com glue latest dg dev endpoint tutor
  • S3 静态网站中的目录列表

    我已经设置了一个 S3 存储桶来托管静态文件 使用网站端点 http s3 website us east 1 amazonaws com 时 它迫使我设置一个索引文件 当找不到文件时 它会抛出错误而不是列出目录内容 使用 s3 端点 s3
  • 具有行为路径重定向的多个 Cloudfront 起源

    我有两个 S3 存储桶用作我的 Cloudfront 源服务器 example bucket 1 example bucket 2 两个存储桶的内容都位于这些存储桶的根中 我正在尝试将我的 Cloudfront 发行版配置为基于 URL 模
  • 最终保单规模(20539)大于限制(20480)

    我有一个 lambda 函数 我正在为 aws lambda 函数创建触发器 我使用规则创建了 54 个触发器 我必须创建更多触发器 但是当我再添加 1 个触发器时 我收到此错误消息The final policy size 20539 i
  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 如何更改AWS ECS集群中的实例类型?

    我在 AWS EC2 容器服务中有一个集群 设置完毕后 我使用了 t2 micro 实例 因为这些实例足以进行开发 现在我想使用更强大的实例 例如 m4 large 我想知道是否可以仅更改实例类型 这样我就不需要重新创建整个集群 我找不到如
  • 应如何格式化记录以将 AWS Kinesis Firehose 转换为 Redshift?

    考虑以下 Redshift 中名为 people 的表 其中包含字段 id 姓名和年龄 名为 people 的 kinesis firehose 流 配置为写入 people 表 Redshift 表列 的值为 id name age 目前
  • 以不可见模式运行主bat文件

    我有一个大师 bat文件有 call file1 bat call file2 bat call file3 bat call file4 bat 我想在我的 Windows Server 2008 上安排它以静默 不可见模式运行 我正在寻
  • 在 IFTTT 中创建两个操作之间的切换

    我有一个简单的设备 北欧小物 52 https www nordicsemi com eng Products Nordic Thingy 52 带有一个可以触发的按钮Maker Webhook https ifttt com maker
  • 如何在不验证亚马逊 ses 中收件人的情况下发送邮件

    我一直在尝试使用亚马逊 ses 发送邮件 它对所有经过验证的收件人都非常有效 但我现在需要向未经验证的收件人发送邮件 这个怎么做 谢谢 您的 SES 帐户处于沙盒模式 您需要向 AWS 提出请求 以使您的 SES 账户退出沙盒模式 这是有记
  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的

随机推荐

  • 如何限制javafx文本字段的字符数

    我正在使用 FXML 来设置表单 但我需要设置文本字段中的字符限制 我怎样才能做到这一点 您不能直接设置字符数限制 但你可以添加一个listener to lengthProperty 文本字段的 import javafx applica
  • realloc() 的性能影响

    我有一个记录列表 一开始我不知道记录数 我需要将它们读入数组 那么 是否建议一一读取所有记录并一一进行 realloc 并在元素到来时继续增加数组大小 或者我应该花一次来识别记录数并仅进行一次 malloc 哪一个的计算成本会更低 A re
  • Xcode - 如何以编程方式在容器视图中嵌入/更改视图控制器?

    我正在尝试以编程方式设置 或更改嵌入的视图控制器里面一个控制器视图 我有 3 个不同的视图控制器 我想在容器视图中显示它们 所有这些都取决于用户是否登录 我环顾四周并尝试了一堆代码 我发现一个有效 但代码改变了自身视图 而不是视图容器视图
  • python distutils 不包含 SWIG 生成的模块

    我正在使用 distutils 从我的项目创建 rpm 我有这个目录树 project my module data file dat my module1 py my module2 py src header1 h header2 h
  • 如何使用 PHP 创建 Odata 服务?

    我使用的是 Kendo UI 在这个框架中我们可以使用 ODATA JSON P JSON 读取数据 我们使用 json encode 成功开发了 JSON P 和 PHP 中的 JSON 数据 但我们无法使用 PHP 创建 ODATA 我
  • 在一个字中间隔位的快速方法是什么?

    我在64位寄存器的低位有一个32位值 顶部部分是 0 出租X表示一个带有信息的位 并且位从 LSB 到 MSB 列出 如下所示 X X X X 0 0 0 0 0 现在 我想用信息 间隔 这些位 这样我就有了 X 0 X 0 X 0 X 0
  • Npm 工作区 - 从根包调用工作区脚本

    我正在努力处理根 git 存储库中的多个 npm 包 并使用自定义开发脚本来处理启动 编译 构建等 现在我遇到了 npm 工作区 并想在我的以下项目结构中使用这个令人惊叹的新功能 但我无法让它工作 projectx root package
  • Delphi 中 TSomething 的默认参数值

    我想知道这在德尔福中是否可行 或者是否有一种干净的方法可以解决它 type TSomething record X Y Integer end GetSomething x y gt 返回具有这些值的记录 然后你就可以使用这个功能TSome
  • 使用 Java 三元运算符时的奇怪行为

    当我像这样编写java代码时 Map
  • 无法读取未定义的属性“NullLogger”(角度/cli 1.4.7)

    今天 突然我开始收到此错误 无法读取未定义的属性 NullLogger 在尝试在我的 Angular 4 应用程序中添加组件 ng g c abc 时 当我在谷歌上搜索时 人们建议我们需要将 cli 版本更新到 1 4 10 但问题是为什么
  • Android MapView - 设置自动缩放,直到所有 ItemizedOverlay 都可见

    在 onCreate 中硬编码 setZoom 感觉非常过时 我想通过最初让 MapView 设置缩放直到所有 GeoPoints OverlayItems 在地图上可见来增强用户体验 这怎么能自动神奇地完成呢 有点像这样 int minL
  • 是否可以从数据帧转换为矩阵?

    我是Python新手 我有一个巨大的dataframe Person OD A BS1 A BS2 B BS4 B BS8 C BS5 C BS1 D BS9 D BS7 E BS2 E BS7 F BS2 F BS1 G BS1 G BS
  • 如何大声朗读Python列表推导式?

    我的问题是关于Python的列表理解可读性 当我遇到具有复杂 嵌套列表理解的代码时 我发现我必须重新阅读它们几次才能理解其意图 有没有一种直观的方法来朗读列表推导式 看来我应该从中间开始 读 然后读if条件 如果有 并阅读表达 last 以
  • 以 bed 格式从 R 导出文件

    我有一个像这样的数据框 tab gt elements scaffold start end Lengths 1 Dong 1 NVe R4 Nematostella12 1 KQ415659 1 14193 14540 347 2 OK
  • 什么是位置提供商“被动”?在搭载 Android 2.2 的 HTC Desire 上看到

    在进入基于位置的模式之前 我通过调用检查是否存在任何位置提供商 List
  • 如何设置JVM的PATH环境变量

    我正在尝试运行使用 Java 7 ProcessBuilder 安装在我的系统上的可执行文件 我注意到环境变量 PATH 可以通过 System getenv PATH 不包括我自己的自定义设置路径 它返回这个 usr bin bin us
  • Excel表格行列查找

    我在使用某些 Excel 函数时遇到了困难 我有一个带有行标题和列标题以及数据的表 例如 如果我有一种披萨 与其尺寸交叉 数据就是价格 S M L XL Cheese 6 6 5 8 10 Pepperoni 6 5 7 5 10 12 S
  • 使用 argparse 输出来调用函数

    目前我的代码如下所示 它允许我解析我的程序脚本获取的多个参数 有没有更接近 最佳实践 的不同方法 我还没有看到实际使用输出的代码argparse 仅介绍如何设置 def useArguments x 0 while x lt 5 if x
  • Angular 6 - 如何在组件级别应用外部 CSS 样式表(传单)?

    尝试在 Angular 6 组件中使用 Leaflet 根据 css 文件的链接方式 地图显示正常或混乱 缺少的图块顺序不正确 这意味着未考虑 css 我设法让它与 2 个解决方案一起使用 将 css 链接到应用程序级别 全局 但不仅仅链接
  • 您可以在动态计时器上触发 AWS Lambda 吗?

    有没有办法在动态计时器上触发 AWS Lambda 目前 我正在利用预定事件来触发 lambda 但这是一个设定的计时器 有没有办法动态设置从 Lambda 内部触发 Lambda 的时间 这里的想法是 这个 Lambda 执行特定的检查并