使用Amazon AWS S3进行简单文件共享

时间:2017-10-30 17:09:44

标签: amazon-web-services amazon-s3 aws-sdk amazon-cognito branch.io

我正在尝试将AWS s3集成到我的应用中以共享图片。

我目前正在使用Branch.io在使用深层链接的设备之间共享内容。但这种方法存在问题。我无法使用深层链接as explained in this post.

发送图像数据

因此,在使用与参考相同的帖子时,我尝试使用AWS S3上传文件然后共享链接。但我相信这种方法要求我的应用程序具有Cognito的登录功能,但我不希望这样。

我还尝试为图片生成预先签名的网址,但之后,我的凭据在一小时后过期,我得到一个"过期的令牌"错误。我目前正在使用这种方法,我只是希望它不会在一小时后过期。 7天左右对我来说已经足够了,但是一个小时太短了。

我还可以上传图片以供公众共享,因此可以从任何地方免费访问,但出于安全考虑,我不喜欢这样。

处理此问题的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

生成URL时,需要传递timeout参数

  

var params = {Bucket:' myBucket',Key:' myKey', Expires:604800 };

生成getSigned网址的示例代码。

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

var params = {Bucket: 'myBucket', Key: 'myKey', Expires: 604800};
var url = s3.getSignedUrl('getObject', params);
console.log("get URL is", url);
一周内604800秒。

希望它有所帮助。

答案 1 :(得分:0)

您可以使用S3预签名网址,其最长截止日期为7天。您可以使用查询字符串参数“X-Amz-Expires”设置它。

答案 2 :(得分:0)

Amruta来自分公司:

不幸的是,没有办法使用Branch SDK将图像添加到链接。作为解决方法,如您已标记的帖子中所述,您可以在分支仪表板上创建链接,并在社交媒体选项卡中上传图像。保存链接后,相同的标签将为您提供分支托管图像的链接。

enter image description here

不幸的是,这只有在您拥有一组预定义图像时才有效。

答案 3 :(得分:0)

我通过不使用AWS SDK生成的临时凭证解决了这个问题。相反,我通过AWS仪表板为应用程序创建了一个新用户,为其提供了上传对象所需的权限。在代码中,我使用新用户的id和密钥生成了一个新的基本AWS凭证。

现在我可以创建一个预先签名的网址,它可以使用1周。我甚至可以通过使用V2签名来增加过期日期。