我正在尝试将AWS s3集成到我的应用中以共享图片。
我目前正在使用Branch.io在使用深层链接的设备之间共享内容。但这种方法存在问题。我无法使用深层链接as explained in this post.
发送图像数据因此,在使用与参考相同的帖子时,我尝试使用AWS S3上传文件然后共享链接。但我相信这种方法要求我的应用程序具有Cognito的登录功能,但我不希望这样。
我还尝试为图片生成预先签名的网址,但之后,我的凭据在一小时后过期,我得到一个"过期的令牌"错误。我目前正在使用这种方法,我只是希望它不会在一小时后过期。 7天左右对我来说已经足够了,但是一个小时太短了。
我还可以上传图片以供公众共享,因此可以从任何地方免费访问,但出于安全考虑,我不喜欢这样。
处理此问题的最佳方法是什么?
答案 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将图像添加到链接。作为解决方法,如您已标记的帖子中所述,您可以在分支仪表板上创建链接,并在社交媒体选项卡中上传图像。保存链接后,相同的标签将为您提供分支托管图像的链接。
不幸的是,这只有在您拥有一组预定义图像时才有效。
答案 3 :(得分:0)
我通过不使用AWS SDK生成的临时凭证解决了这个问题。相反,我通过AWS仪表板为应用程序创建了一个新用户,为其提供了上传对象所需的权限。在代码中,我使用新用户的id和密钥生成了一个新的基本AWS凭证。
现在我可以创建一个预先签名的网址,它可以使用1周。我甚至可以通过使用V2签名来增加过期日期。