带有 lambda 的 AWS Cron 作业



我想使用 lambda 函数为我的应用程序设置 cron 作业。 我当前的架构由负载均衡器后面的自动扩展组组成,两者都位于同一 VPC 内。 我的目的是调用我的应用程序的特定路径,例如使用 lambda 的"/cron/task1",并使用类似 cron 的语法定期调用它们。 如何保护我的应用程序,以便只能从 lambda 函数访问此类终端节点,而不能从 VPC 外部访问,同时允许最终用户访问应用程序的所有其他路径?

API 授权可能是你需要的。最简单的方法之一(不是最安全的(是;

  • 您的 lambda 和应用程序共享一个共同的密钥
  • 当从 lambda 向应用程序发出请求时,您可以像这样对所有查询参数进行哈希处理;

myapp.url/cron/task1?a=value&c=something&b=foobar

按升序/降序对参数进行排序

{
"a": "val",
"b": "foobar"
"c": "some",
}
  • 通过使用共享公共密钥,您可以对所有这些密钥进行哈希处理并创建一个新字符串,例如cf23df2207d99a74fbe169e3eba035e633b65d94

现在您的请求将是

myapp.url/cron/task1?a=val&c=some&b=foobar&token=cf23df2207d99a74fbe169e3eba035e633b65d94

  • 当您的应用程序收到此请求时,它会取出令牌并对其余部分进行排序(与 Lambda 使用的顺序相同(,并使用相同的密钥创建一个哈希。
  • 如果哈希匹配,那么您就知道它来自 Lambda,因为它们都知道相同的秘密。如果不是,则可以放弃该请求。

您可以将该机密保存在 aws kms 中,以免暴露并使其更安全。