将配置信息传递给 AWS Lambda 函数

Passing configuration information to an AWS Lambda function

我有一个 AWS Labmda 函数,可以将远程内容提要同步到 S3 存储桶。它需要定期 运行,因此目前使用 CloudWatch cron 事件每小时调用一次。

这对单个提要非常有效,但是我现在需要同步多个提要,这些提要可以使用完全相同的功能,只是使用不同的源 URL 和存储桶。

不是为每个源克隆整个 Lambda 函数,是否有某种机制将配置信息传递到 Lambda 调用以指定它应该在什么上运行?

该函数是用 Node 14.x 编写的,以防万一。

是的,这是可能的,

在上图中,您可以为 Lambda A 启动一个 CRON 作业,然后它可以使用 异步调用 将该信息作为负载传递到 2nd Lambda。 这将同时执行 2nd Lambda,因此您可以执行多达 1000 个并发执行。

这是一个扇出模式,可以在您的场景中实现。

示例代码:

for i in range(3):
  lambda_client.invoke(FunctionName='Lambda_B',InvocationType='Event',Payload=json.dumps(payload[i]))

为此你有 2 个选择:

在同一个函数中,更改环境变量,发布一个版本,并将其附加到 ALIAS。每个发布的版本都保存自己的环境变量值。使用这种方法,问题是如果您想对代码进行一些更改,则必须再次为每个别名重新发布函数(并且每次都更改所有环境变量),因此这很容易出错。

第二个选项是通过 Lambda 接受的事件参数(作为 JSON)传递配置详细信息,并在 Lambda 函数中读入。您可以有单独的 Cloudwatch 事件,这些事件将传递不同的 JSON 事件详细信息。

正在尝试使用 Eventbridge cron 作业,该作业具有为触发器添加额外配置的选项。 https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-cron-expressions

此外,根据描述,您似乎想在 S3 中执行某些操作时执行操作。为什么不自己在 S3 事件上触发 lambda。 https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html