代码之家  ›  专栏  ›  技术社区  ›  Bill

仅运行一次lambda函数,时间设置为5分钟后

  •  0
  • Bill  · 技术社区  · 6 年前

    我有一个请求设置lambda函数来初始化一个rds数据库,但只运行一次

    我的计划是在一个模块内同时部署RDS和lambda函数,但设置为5分钟后只运行一次lambda函数。所以我可以保证RDS处于活动状态。

    我不能设定 local-exec remote-exec 因为我们公司的代理服务器。TerraForm在Golang代码中不使用openssh/openssl, 那地形就不明白了 ~/.ssh/config

    任何在5分钟后设置run-once lambda函数并稍后忽略更改的想法。

    timestamp() in terraform 可以生成时间,可以使用timeAdd()在5分钟后生成时间。

    output "time" {
      value = "${timeadd(timestamp(), "5m")}"
    }
    

    但很难转化为 cron(Minutes Hours Day-of-month Month Day-of-week Year) . 我觉得我不应该直接用地形来做这个。

    更新1

    我要添加一个环境变量( EXECUTE_TIMESTAMP )到lambda函数。稍后将确认是否有帮助。

    因此lambda将检查 timestamp 如果未通过,或超过1小时,它将忽略其余任务。此lambda函数将按小时运行。

    然后,有一天如果我想重新运行这个lambda函数,我可以很容易地调整这个变量。

    更新2

    A PR 为此时间输出格式功能引发,但当前未合并。

    不确定新特性是否支持cron格式作为输出。

    3 回复  |  直到 6 年前
        1
  •  0
  •   thomasmichaelwallace    6 年前

    如果你不打算做太多的事情,那么lambda这些天的最大超时时间是15分钟,这是毫无价值的。

    因此,虽然它不是体系结构中最好的一部分,但是对于一个简单且不经常出现的“dev”脚本,您可以简单地在RDS部署的同时启动lambda,并让它等待( time.sleep(300) )5分钟的密码。

        2
  •  0
  •   Pradeep Bhadani    6 年前

    您可以使用 null_resource (本地执行5分钟睡眠),其中 depends_on trigger 在创建RDS时。做lambda 取决于 在上面 空资源 .

    这样,您的lambda函数只在创建RDS 5分钟后调用一次。

    希望这有帮助。

        3
  •  0
  •   Ronyis    6 年前

    解决方案可能是调用一个状态机,该状态机将在调用lambda之前等待5分钟。