将文件上传到S3并触发lambda的最佳实践

时间:2016-03-06 16:06:27

标签: amazon-web-services amazon-s3 aws-lambda

我想使用AWS S3和Lambda实现以下方案。

用户从移动设备上拍摄照片,将描述,位置和更多属性添加为单独的元数据。将图像文件上载到S3,并将元数据作为文件内部元数据。根据{{​​3}}链接,我可以通过向" x-amz-meta - "添加一个键值对到ObjectMetadata来实现。作为关键。

我设法在我的S3存储桶中每次创建文件时调用lambda,但是在Lambda的调用方法的S3Event中,我没有获得我在ObjectMetadata中放置的元数据。

上传过程的代码示例:

PutObjectRequest por = new PutObjectRequest(BUCKET_NAME, KEY_NAME, file);
ObjectMetadata metadata = new ObjectMetadata();
metadata.addUserMetadata("x-amz-meta-xxxxx", "test123");
por.setMetadata(metadata);
s3client.putObject(por);

我希望我提供了足够的信息

2 个答案:

答案 0 :(得分:1)

AWS建议在S3上存储文件,在DynamoDB上存储文件的元数据。使用这种方法可以轻松且经济高效地执行元数据搜索。请记住,根据S3定价模型,您需要为每次API调用付费。

答案 1 :(得分:0)

您可以在上传过程中添加元数据。我使用了upload_file,但putObject也可以使用:

s3client.putobject(por, ExtraArgs={"Metadata":metadata})