这是由于AWS S3不允许在2秒内对同一对象进行超过一次更新。因此,如果您想在2秒内对同一S3对象进行多次更新,只会触发单个AWS SNS事件。如果要将每个更新视为独立事件,则可以解决此问题的一种方法是将事件处理程序添加到AWS Lambda函数,并通过触发 Lambda 函数来发送 SNS 通知。
以下是一个示例Lambda函数,可用于在S3对象更新时发送SNS通知:
import boto3
def lambda_handler(event, context):
# Get the S3 bucket and object key from the event
s3_bucket = event['Records'][0]['s3']['bucket']['name']
s3_key = event['Records'][0]['s3']['object']['key']
# Send the SNS notification
sns = boto3.client('sns')
sns.publish(
TopicArn='arn:aws:sns:us-east-1:123456789012:my-topic',
Subject='S3 Object Updated',
Message=f'The S3 object {s3_key} in bucket {s3_bucket} has been updated'
)
您需要将Lambda函数的触发器配置为S3事件通知(例如PUT、POST、COPY和DELETE)。这样,每当S3对象更新时,Lambda函数都会被触发,并发送SNS通知。