Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 创建具有特定前缀的对象时触发lambda_Amazon S3_Aws Lambda_Amazon Cloudformation_Aws Sam - Fatal编程技术网

Amazon s3 创建具有特定前缀的对象时触发lambda

Amazon s3 创建具有特定前缀的对象时触发lambda,amazon-s3,aws-lambda,amazon-cloudformation,aws-sam,Amazon S3,Aws Lambda,Amazon Cloudformation,Aws Sam,我正在创建一个lambda,当在某个bucket中创建对象时应该调用它。我只希望对某些键前缀调用它。我见过在定义bucket时在bucket上使用通知配置设置此选项的例子: NotificationConfiguration: LambdaConfigurations: - Function: !Ref SomeLambdaArn Event: "s3:ObjectCreated:*" Filter: S3Key: Rule

我正在创建一个lambda,当在某个bucket中创建对象时应该调用它。我只希望对某些键前缀调用它。我见过在定义bucket时在bucket上使用
通知配置设置此选项的例子:

NotificationConfiguration:
  LambdaConfigurations:
    - Function: !Ref SomeLambdaArn
      Event: "s3:ObjectCreated:*"
      Filter:
        S3Key:
          Rules:
            - Name: prefix
              Value: zip
然而,我宁愿不修改bucket的CloudFormation定义。和萨姆一起:


但是有没有办法限制它只对某些前缀触发?或者,是否有方法将
通知配置
添加到现有bucket?

如果我理解正确,您希望在lambda中定义前缀,而不是bucket

我就是这么做的,就我所知,这是一种魅力

Resources:
  ConvertToParquet:
  Type: AWS::Serverless::Function 
  Properties:
  CodeUri: handler/convert_to_parquet
  MemorySize: 3008
  Timeout: 90
  Policies: 
    - AmazonS3FullAccess
  Events:
    SummaryCSVCreated:
      Type: S3
      Properties:
        Bucket: !Ref UploadBucket
        Events: s3:ObjectCreated:*
        Filter: 
          S3Key:
            Rules:
              - Name: suffix
                Value: '.txt'

  UploadBucket:
    Type: AWS::S3::Bucket

因此,这看起来是可行的,但它失败了,因为bucket是在不同的模板中定义的。更深入地说,我似乎无法将两个lambda配置为收到相同对象创建事件的通知,因为。我想我得去调查一下。
Resources:
  ConvertToParquet:
  Type: AWS::Serverless::Function 
  Properties:
  CodeUri: handler/convert_to_parquet
  MemorySize: 3008
  Timeout: 90
  Policies: 
    - AmazonS3FullAccess
  Events:
    SummaryCSVCreated:
      Type: S3
      Properties:
        Bucket: !Ref UploadBucket
        Events: s3:ObjectCreated:*
        Filter: 
          S3Key:
            Rules:
              - Name: suffix
                Value: '.txt'

  UploadBucket:
    Type: AWS::S3::Bucket