【问题标题】:AWS CDK - add an s3 trigger to invoke a lambdaAWS CDK - 添加一个 s3 触发器来调用 lambda
【发布时间】:2020-08-10 11:18:58
【问题描述】:

我正在尝试使用 s3 触发器构建一个 lambda 函数并抛出 CDK 部署,有人知道是否可以以编程方式触发 CDK 代码吗?

我找到了这些链接:

  1. Lookup S3 Bucket and add a trigger to invoke a lambda
  2. With CDK, can it be triggered through a lambda to deploy the stack

但它们是几个月前的,我想知道是否有任何更新

【问题讨论】:

  • 对此使用 lambda 对我来说似乎很奇怪。您可以使用 codebuild 并简单地在其中运行 cdk deploy 。您可以通过 SDK 触发 CodeBuild,并且可能有一个 lambda 来触发部署 cdk 的 codebuild? :D 如果我可以问,你想做什么。
  • 我正在尝试构建一个调整图像大小的 lambda 函数,cdk 部署运行良好,我只需要带有 s3 存储桶触发器的部分。

标签: amazon-web-services amazon-s3 aws-cdk


【解决方案1】:

如果您想在文件上传到 S3 后触发 lambda,您有两种方法:

S3 事件通知:

这是 S3 特有的功能,支持 lambda 作为目标,也支持 SQS 和 SNS。你可以在这里找到更多信息:https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html

CloudTrail:

CloudTrail 记录了您帐户中的几乎所有事件,您可以根据需要对其做出反应。

  1. 创建存储桶
  2. 创建一个跟踪,您可能希望选择只写,以减少写入的内容量
  3. 使用 addS3EventSelector 将存储桶添加到跟踪中
  4. 添加您的目标
        uploadBucket.onCloudTrailWriteObject('cwEvent', {
            target: new targets.LambdaFunction()
        })

这将创建一个 CloudWatch 事件。

在第一步您可能还需要将其记录到云观察日志中,我不确定了:

        const trail = new cloudtrail.Trail(this, 'CloudTrail', {
            sendToCloudWatchLogs: true,
            managementEvents: cloudtrail.ReadWriteType.WRITE_ONLY,
        });

我更喜欢版本二,因为 CloudWatch Event 支持的目标比 SQS、SNS 和 Lambda 多得多。例如,我用它来触发 Step Function。

文档:https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudtrail-readme.html https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-readme.html#bucket-notifications

【讨论】:

    猜你喜欢
    • 2022-08-08
    • 2020-09-01
    • 2022-07-21
    • 2017-06-07
    • 2019-02-26
    • 2020-06-04
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多