多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration

Posted

技术标签:

【中文标题】多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration【英文标题】:AWS::S3::Bucket LambdaConfiguration in multiple AWS Lambdas 【发布时间】:2021-06-13 03:28:58 【问题描述】:

我有 4 个 AWS Lambda 在创建某些文件时应该读取 S3 存储桶(S3 事件),但在 cloudformation 中我只能使用 1 个 lambda ARN,请参阅内部 AWS::S3::Bucket LambdaConfiguration

如何在 Bucket Lambda Configuration 中触发多个 Lambda?

【问题讨论】:

【参考方案1】:

S3 不提供这种开箱即用的扇出,而只能通过例如社交网络。 您需要将通知推送到 SNS 主题而不是 lambda,然后

为该主题订阅四个 lambda 或 为主题订阅四个队列,并让每个 lambda “订阅”一个队列

【讨论】:

【参考方案2】:

AWS 最近宣布了S3 Event Notifications with Amazon EventBridge。因此,您可以在存储桶上启用 EventBridge 通知,然后让这些事件触发一个(或多个)Lambda 函数。

使用 AWS SAM 的示例实施:

AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'S3 EventBridge Example'

Parameters:
  BucketName:
    Type: String
    Description: 'Name of the bucket to be created'

Resources:

  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      NotificationConfiguration:
        EventBridgeConfiguration:
          EventBridgeEnabled: true

  S3EventProcessor:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: S3EventListener
      Architectures:
        - arm64
      Runtime: nodejs14.x
      Handler: index.handler
      InlineCode: |
        exports.handler = (event, context) => 
          console.log('event:', JSON.stringify(event));
        
      Events:
        S3EventBridgeRule:
          Type: EventBridgeRule
          Properties:
            Pattern:
              source:
                - aws.s3
              detail:
                bucket:
                  name:
                    - !Ref BucketName

【讨论】:

感谢您的回答【参考方案3】:

我认为Step functions 正是您想要的。 S3-related tutorial 也很有用

【讨论】:

以上是关于多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration的主要内容,如果未能解决你的问题,请参考以下文章

从 VPC 中的 Lambda 访问 AWS S3

使用 AWS Lambda 从 AWS S3 读取和提取巨大的 zip 文件

AWS Lambda S3 访问被拒绝

原创aws s3 lambda缩略图生成

如何使用 lambda 函数从 AWS s3 获取文本文件的内容?

使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象