我使用AWS Lambda函数创建文件并将其保存到S3上的存储桶中,它运行正常。执行putObject
方法后,我得到一个data
对象,但它只包含最近添加的对象的Etag
。
s3.putObject(params, function(err, data) {
//data only contains Etag
});
我需要知道我可以在浏览器中使用的确切URL,以便客户端可以看到该文件。该文件夹已经公开,如果我从S3控制台复制链接,我可以看到该文件。
我尝试使用getSignedUrl
但是它返回的网址用于其他目的,我相信。
谢谢!
答案 0 :(得分:13)
当您调用PutObject时,您提供了存储桶和对象的密钥。您可以简单地组合它们来制作对象的URL,例如:
因此,例如,如果您的存储桶是 pablo 且对象键是 dogs / toto.png ,请使用:
有关特定区域的存储分区,请参阅Working with Amazon S3 Buckets。
注意: object keys的一般指导,其中某些字符需要特殊处理。例如,空格被编码为+(加号),而加号被编码为%2B。还here。
答案 1 :(得分:1)
您可以通过以下方式拨打另一个电话:
var params = {Bucket: 'bucket', Key: 'key'};
s3.getSignedUrl('putObject', params, function (err, url) {
console.log('The URL is', url);
});
答案 2 :(得分:0)
如果您有s3bucket和filename对象并想要提取url,请使用以下选项:
const getUrlFromBucket=(s3Bucket,fileName)=>{
return 'https://'+s3Bucket.config.params.Bucket+'.s3-'+s3Bucket.config.region+'.amazonaws.com/'+fileName
};