Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在AWS lambda函数执行期间,如何在AWS S3 bucket中写入文件?_Java_Amazon Web Services_Amazon S3_Aws Lambda_Aws Sdk - Fatal编程技术网

Java 在AWS lambda函数执行期间,如何在AWS S3 bucket中写入文件?

Java 在AWS lambda函数执行期间,如何在AWS S3 bucket中写入文件?,java,amazon-web-services,amazon-s3,aws-lambda,aws-sdk,Java,Amazon Web Services,Amazon S3,Aws Lambda,Aws Sdk,我需要使用docx4j和iText生成文件的(.docx.pdf)。最终生成的文档应使用AWS lambda函数存储在S3存储桶中 我试过几种选择,但没有一种对我有效。我可以使用java代码将本地文件上传到S3 bucket,并将普通文本文件写入AWS S3 bucket 然而,我的要求是,首先我必须为所需位置的(.docx,.pdf)创建一个文件路径,即S3 bucket,然后调用我的代码生成文件(.docx,.pdf),并将其保存到S3 bucket 注意:我希望调用我的save方法(lam

我需要使用docx4j和iText生成文件的(.docx.pdf)。最终生成的文档应使用AWS lambda函数存储在S3存储桶中

我试过几种选择,但没有一种对我有效。我可以使用java代码将本地文件上传到S3 bucket,并将普通文本文件写入AWS S3 bucket

然而,我的要求是,首先我必须为所需位置的(.docx,.pdf)创建一个文件路径,即S3 bucket,然后调用我的代码生成文件(.docx,.pdf),并将其保存到S3 bucket

注意:我希望调用我的save方法(lambda处理程序),它将直接将文件保存在S3存储桶中。或者,如果s3不允许直接保存文件,那么aws提供了什么替代方案来本地保存文件/temp,以便以后我可以将这些temp文件推送到s3存储桶中


如果有人对此进行过研究或有想法,请分享他们的意见。

有两种方法可以做到这一点。第一种方法是先将文件存储在
/tmp/
中,然后使用putobject API上传到s3,指定bucket和keyname

第二种方法是使用相同的putobject直接将对象上载到s3,但指定您的对象

可以找到这方面的文档


可以找到一个详细的例子

您需要在本地创建您的文件,执行与此文件相关的所有操作,并最终将其上载到bucket。我不确定您是否可以直接将文件处理程序打开到您的bucket。这不是文件存储,而是对象存储。你的问题很难理解。您目前遇到的具体问题是什么?您是否在询问如何将Lambda函数的
/tmp/
目录中的文件上载到AmazonS3存储桶?请随意编辑您的问题以添加详细信息。@John Rotenstein,请检查“我已经准备好了一张便条”。让我尝试两种方法。如果有人愿意为我工作,我会接受你的回答。您能否共享/temp/文件夹的示例路径层次结构?tmp文件夹只是/tmp/。您可以使用完整路径(例如:/tmp/abc.txt)将其导入或保存好,我将尝试使用该临时路径。让我试一下。我们可以在/temp/folder中创建子目录吗?我不确定,但请记住,这是短暂的存储,这意味着lambda执行完毕后,它会被擦除。它的大小大约是512MB,所以你不能在上面存储任何大的东西。@KhAnSaAb使用
/tmp/
,而不是
/temp/
。另外,请注意,此目录的内容在执行后不会被删除。如果容器稍后被重新使用,则以前的文件仍将位于
/tmp/
中。因此,您应该在结束Lambda函数之前擦除这些文件,否则在以后执行时可能会耗尽存储空间。