Python 3.x AWS Lambda函数在S3事件中触发,但仅在大约30分钟内触发一次

Python 3.x AWS Lambda函数在S3事件中触发,但仅在大约30分钟内触发一次,python-3.x,amazon-web-services,amazon-s3,aws-lambda,Python 3.x,Amazon Web Services,Amazon S3,Aws Lambda,我已经创建了一个简单的Lambda函数,在S3 bucket中创建对象时触发,但它并不总是触发 当我将文件上传到bucket时,该函数触发并生成CloudWatch中的日志。但是,当我在大约一分钟后将相同或不同的文件上载到同一个bucket时,该函数不会再次触发 如果我重新保存该函数并再次将文件上载到bucket,该函数将再次触发。如果我在大约一分钟后再次上传该文件,则该函数不会触发 如果我实际等待大约30分钟(而不仅仅是一两分钟)并再次上传一个文件,该函数将触发而不重新保存 下面是函数代码Py

我已经创建了一个简单的Lambda函数,在S3 bucket中创建对象时触发,但它并不总是触发

  • 当我将文件上传到bucket时,该函数触发并生成CloudWatch中的日志。但是,当我在大约一分钟后将相同或不同的文件上载到同一个bucket时,该函数不会再次触发

  • 如果我重新保存该函数并再次将文件上载到bucket,该函数将再次触发。如果我在大约一分钟后再次上传该文件,则该函数不会触发

  • 如果我实际等待大约30分钟(而不仅仅是一两分钟)并再次上传一个文件,该函数将触发而不重新保存

  • 下面是函数代码Python3.7。为什么每次我上传文件到bucket时它都不会触发

    import json
    
    print("This is a test")
    
    def lambda_handler(event, context):
        # Setting variables to equal values from the event object passed in.
        bucket = event['Records'][0]['s3']['bucket']['name']
        region = event['Records'][0]['awsRegion']
        object = event['Records'][0]['s3']['object']['key']
        user = event['Records'][0]['userIdentity']['principalId']
    
        print("Bucket: " + bucket)
        print("Region: " + region)
        print("User is " + user)
    
        return(object)
    

    谢谢:)

    对于无版本控制的S3对象,同时发生的写入可能不会创建单独的写入。AWS建议,如果您希望确保为每次写入创建事件,请启用对象版本控制。这也意味着每次写入都会创建一个新版本


    上述行为的文档可在此处找到:

    对于无版本的S3对象,同时发生的写入可能不会创建单个写入。AWS建议,如果您希望确保为每次写入创建事件,请启用对象版本控制。这也意味着每次写入都会创建一个新版本


    上述行为的文档可在此处找到:

    实际上,这不是问题。显然,AWS在CloudWatch的同一个日志流中捆绑了多个lambda执行。因此,我的Lambda函数确实在每次将文件上载到bucket时执行,我只是没有注意到执行记录在同一个日志流中,而是希望为每次Lambda执行创建一个新的日志流。

    实际上,这不是问题。显然,AWS在CloudWatch的同一个日志流中捆绑了多个lambda执行。因此,我的Lambda函数确实在每次我将文件上传到bucket时执行,我只是没有注意到执行记录在同一个日志流中,而是希望为每次Lambda执行创建一个新的日志流。

    @Nathan是对的。在cloudwatch中查找日志消息时也是如此。请记住,日志消息
    这是一个测试
    应该每15分钟只记录一次。因为lambda处于温暖状态15分钟。但每次调用都应该打印其他日志。@Nathan是对的。在cloudwatch中查找日志消息时也是如此。请记住,日志消息
    这是一个测试
    应该每15分钟只记录一次。因为lambda处于温暖状态15分钟。但每次调用时都应该打印其他日志。