【发布时间】:2019-04-01 23:16:55
【问题描述】:
我有一个请求设置一个 lambda 函数来初始化一个 RDS 数据库,但只运行一次
我的计划是在一个模块中同时部署 rds 和 lambda 函数,但设置为 5 分钟后运行 lambda 函数,只运行一次。所以我可以保证 RDS 处于活动状态。
我无法设置local-exec或remote-exec,因为我们公司的代理服务器。 Terraform 在他们的 Golang 代码中不使用 openssh/openssl,
那么 terraform 看不懂 ~/.ssh/config
在 5 分钟后设置运行一次 lambda 函数并稍后忽略更改的任何想法。
timestamp() in terraform可以生成时间,timeadd()可以用来生成5分钟后的时间。
output "time" {
value = "${timeadd(timestamp(), "5m")}"
}
但是很难转换为cron(Minutes Hours Day-of-month Month Day-of-week Year)。我觉得我不应该直接在 Terraform 中这样做。
更新 1
我将在 lambda 函数中添加一个环境变量 (EXECUTE_TIMESTAMP)。稍后会确认这是否有帮助。
所以 lambda 会检查 timestamp 如果没有通过,或者超过 1 小时,它将忽略其余任务。这个 lambda 函数将被安排为每小时运行一次。
然后,如果有一天我想重新运行这个 lambda 函数,我可以轻松地调整那个变量。
更新 2
A PR 是为这次输出格式功能提出的,但目前没有合并。
不确定新功能是否支持 cron 格式作为输出。
【问题讨论】:
-
手动发送一次 SQS 事件来触发 lambda 怎么样?
-
看起来是个好主意。我什至可以直接将 sql 脚本作为文件中的消息提供。
标签: python aws-lambda boto3 terraform