如何在 AWS Lambda 中使用 cURL 和邮件

Posted

技术标签:

【中文标题】如何在 AWS Lambda 中使用 cURL 和邮件【英文标题】:How to use cURL and mail in AWS Lambda 【发布时间】:2017-06-20 17:56:37 【问题描述】:

我运行一台 Linux 机器,每小时有 50 多个 cron 作业,格式如下:

00 00 * * * /usr/bin/curl http://domain.com/page.php/reports | mail -s "domain.com report cron successful execution" email@otherdomain.com

上面的cron:

    curl命令的输出发送到管道 将输出发送到 email@otherdomain.com,主题为 “domain.com 报告 cron 成功执行”

如何设置这些 cron 以与 AWS Lambda 一起使用,因为我不希望单独的服务器只用于这些 cron 作业。

如果可能的话,我可以设置 AWS SES 来使用它。

【问题讨论】:

您不能只是在 linux 服务器中设置一个 cron 作业,然后以某种方式神奇地说“在 Lambda 上运行”。您必须实际编写一个 AWS Lambda 函数,并且在该 Lambda 函数中,使用 AWS SES SDK 而不是发出curl 命令可能更有意义。请研究一下 AWS Lambda 是什么。 我知道我必须写一个函数。 curl 命令生成要通过邮件发送的输出。无论如何,感谢您的意见。 【参考方案1】:

要安排 CRON,您应该使用 CloudWatch Events。您可以设置将触发 CloudWatch 事件的 CRON 表达式。这个事件可以反过来trigger a Lambda function。

您的 Lambda 函数可以使用非常棒的 requests 包进行 HTTP 调用。 Lambda here 上的部署说明。如果您不想将 requests 与您的 Lambda 函数打包,您也可以使用不太容易使用的 urllib2 模块来替代 requests

至于发送电子邮件,AWS SES 将是最简单的途径。您也可以使用 email 模块,尽管我从未在 Lambda 函数的上下文中使用过它。

【讨论】:

感谢您的简单解释和有关如何继续前进的见解。

以上是关于如何在 AWS Lambda 中使用 cURL 和邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Lambda 上的无服务器应用程序中存储和使用 HTML 模板(使用 AWS SAM)?

如何在 Lambda 函数中使用 AWS.CloudFront.Signer

如何在 AWS Lambda 中运行 AWS SDK Opsworks 命令?

如何将AWS API网关阶段指向特定的lambda函数别名?

如何在 AWS Lambda 中使用 Python 自定义包

适用于 AWS Lambda 的本地开发服务器