您可以使用AWS S3 SDK中提供的getSignedUrl方法生成带签名的URL,以便匿名用户和有限制的用户可以访问您存储在S3中的对象。但是,在某些情况下,您可能会遇到循环版本的问题,其中每次调用getSignedUrl方法时都会返回相同的URL。
这种情况下,您可以通过在对象键中添加随机字符串来解决此问题,从而强制AWS S3生成唯一的URL。
以下是添加随机字符串的示例代码:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const getObjectUrl = (key) => {
const random = Math.floor(Math.random() * 10000000);
const params = { Bucket: 'your-bucket-name', Key: `${key}-${random}` };
const url = s3.getSignedUrl('getObject', params);
return url;
};
console.log(getObjectUrl('your-object-key'));
在上面的代码中,我们使用Math.random()函数生成一个随机数,然后将其用作对象键的一部分。然后,我们使用getSignedUrl方法获取带签名的URL。
如果您遇到循环版本的问题,请尝试这种解决方案,并添加不同的随机字符串值来确保生成的URL是唯一的。