Javascript 以编码方式发送图像,解码后上传至s3
我正试图上传s3上非常沉重的文件。现在,图像首先转到服务器temp,然后我将其上传到s3。但是这个过程很耗时,如果多个用户同时上传繁重的图像,会消耗大量带宽,从而影响生产站点。鉴于我还有3个尺寸需要上传,因此我正在调整上传图像的大小,并将其他3个调整大小的图像与此一起发送到s3 我对此进行了研究,找到了这三种可能的解决方案Javascript 以编码方式发送图像,解码后上传至s3,javascript,php,image,amazon-web-services,amazon-s3,Javascript,Php,Image,Amazon Web Services,Amazon S3,我正试图上传s3上非常沉重的文件。现在,图像首先转到服务器temp,然后我将其上传到s3。但是这个过程很耗时,如果多个用户同时上传繁重的图像,会消耗大量带宽,从而影响生产站点。鉴于我还有3个尺寸需要上传,因此我正在调整上传图像的大小,并将其他3个调整大小的图像与此一起发送到s3 我对此进行了研究,找到了这三种可能的解决方案 将图像直接上传到s3。这是不可能的,因为在这种情况下,我们必须公开aws密钥,但我们不能 在队列中添加所有图像并运行少量作业。。在这种情况下,作业稍后将在调整图像大小后将图像
请帮助。在处理图像处理时,2号实际上是推荐的选项。还可以使用Lambda函数进行图像转换。() 将映像添加到特定S3存储桶后,将立即触发作业
如果需要,您还可以将图像直接上传到S3()如果可能,您应该直接上传到Amazon S3。这避免了对文件的“双重处理”,是一个更具可扩展性的解决方案 您担心的是“暴露AWS密钥”。没有必要担心。您可以使用有限的权限集生成临时的、有时间限制的凭据。它是这样工作的:
- 您的应用程序对用户进行身份验证,并检查他们是否有权将对象上载到AmazonS3
- 您的应用程序调用安全令牌服务并请求一组临时凭据,其权限仅允许上载到AmazonS3中的特定存储桶和子目录
- 将这些凭据传递给用户,或在网页中使用这些凭据,以允许用户上载对象
AWS的关键概念是为大规模应用而设计。直接上传到Amazon S3可以做到这一点,而首先上传到您自己的服务器会造成瓶颈(而且成本更高!)。我不确定您是否已经这样做了,但我使用了javascript sdk来实现这一点,我正在做的是将图像保存到另一台服务器上,然后将它们转移到S3,但是使用javascriptsdk,您可以直接转到s3,您可以在图像到达后添加事件来处理图像
- 使用Cognito获取未经身份验证的用户/经过身份验证的用户访问权限
- 以相关bucket中经过身份验证的用户的身份授予权限
- 在配置编辑器中编辑COR
- 使用javascript sdk中的代码做任何你想做的事情
我希望这能有所帮助。“在这种情况下,我们必须公开aws密钥,但我们不能公开。”如果这是真的,那么某个地方的某个人就不理解aws是如何工作的。您的AWS访问密钥不是秘密。它被设计为以签名URL和表单的形式公开。这样做是正常的、标准的做法。您的密钥不会公开,没有它,访问密钥就没有用处。嗨,John,这听起来很有希望,而且成本高,而且易于扩展,我们将尝试一下。嗨,非常感谢这个解决方案,我们将尝试一下,看看它能有多高的效率,我认为这肯定会占用一些服务器带宽。