如何根据aws中的文件大小或数量处理文件



比如说,文件每隔一小时左右就会被丢弃到s3位置。文件信息是否可以被推送到队列或类似的东西,这样,这些文件就可以由一些其他aws资源处理,为了简单起见,这里可能是lambda。这些文件不需要单独处理,而是可以批量处理,比如一次处理100个。有没有一种方法可以触发作业,比如说,一旦某个队列中的文件数达到100,就可以在文件通过时进行维护?

有几种方法可以做到这一点。我会推荐最简单、最易维护、最具成本效益的。

首先添加一个S3 Bucket、Lambda,然后添加一个触发器,如本文所述:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html

使用示例Python代码:

s3 = boto3.client('s3')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']

您想找出对象的数量,例如100,为此可以使用CLI(有多种方法https://stackoverflow.com/a/64486330/495455):

aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"

或者使用s3 API,在C#伪代码:中

var response = s3.ListObjects(new ListObjectsRequest {
BucketName = "",
Marker = ""
});
objectsCount = response.S3Objects.Count;

如果计数是>100然后处理这些文件。

最新更新