当前位置: 首页 > 知识库问答 >
问题:

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

李凯定
2023-03-14

我想使用AWS S3和Lambda实现以下场景。

用户从手机上拍照,添加描述、位置和更多属性作为单独的元数据。将图像文件上传到S3,元数据作为文件内部元数据。根据这个链接,我可以通过将“x-amz-meta”作为键添加到ObjectMetadata中来实现。

每次在S3存储桶中创建文件时,我都会设法调用lambda,但在S3Event中,从lambda的调用方法中,我无法获得放入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个答案

尚景焕
2023-03-14

您可以在上传期间添加元数据。我使用了upload_file但是putObject也应该工作:

s3client.putobject(por, ExtraArgs={"Metadata":metadata})
索瀚海
2023-03-14

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

 类似资料:
  • filename变量用于获取最新文件的名称。我的目标是监视文件夹,每当检索到新文件时,使用boto3自动将其上载到s3 bucket。 会话=BOT3。会话(aws\u access\u key\u id='aws\u access\u key\u id',aws\u secret\u access\u key='aws\u secret\u access\u key',region\u name

  • 我有一本书。NET核心lambda,我正在将图像上传到S3存储桶中。 这在使用测试工具的开发模式下工作得很好,但一旦发布,它就会超时,并且没有错误消息。 这是我的代码,在尝试上传到S3之前,我将一个bas64图像转换为一个字节数组。 它在上传时被卡住了。我还尝试了方法,该方法也有同样的效果。 我想知道这是否与将对象上传到S3 bucket所需的权限有关? 我目前使用的是一个IAM用户,该用户使用A

  • Amazon s3配置文件 但如果无法上载文件并给出以下错误 错误:无法上载文件java.io.IOException:需要Ant GLOB模式,但看到'/var/lib/jenkins/jobs/narad-dev-clean/workspace/*_audit.csv'。有关语法,请参见http://ant.apache.org/manual/types/fileset.html:hudson

  • 我有一个非常大的文件(估计50MB)。我把这个文件上传到一个S3目录,然后触发一个Lambda函数。我正在使用TransferManager进行S3上传。 我阅读了AWS关于Lambda和S3的文档,它说在S3中创建文件时会触发Lambda函数,但我仍然想知道创建的文件是否意味着文件已完全上载。 我的问题是:由于文件太大,上传会有一点延迟,所以Lambda函数是在文件完全上传之前还是之后触发的?例

  • 我在尝试将文件上传到我的S3存储桶时遇到了问题。一切正常,除了我的文件参数似乎不合适。我正在使用Amazon S3 sdk从nodejs上传到s3。 以下是我的路线设置: 这是个项目。upload()函数: 将“Body”参数设置为类似“hello”的字符串可以正常工作。根据doc,Body必须获取(Buffer、类型化数组、Blob、String、ReadableStream)对象数据。但是,上

  • 我想上传视频到S3使用AWS lambda功能。此视频在我的本地计算机中不可用。我有“下载URL”。我不想下载到我的本地电脑上传到S3。我正在寻找一个使用lambda函数直接将这个视频文件放入S3的解决方案。如果我使用缓冲区或流,我将消耗大量的内存。对此有更好的高效解决方案吗? 我真的很感谢你的帮助。