如何使用aws-sdk获取AWS S3上的文件的URL?

时间:2017-06-06 21:37:37

标签: node.js amazon-web-services amazon-s3

我使用AWS Lambda函数创建文件并将其保存到S3上的存储桶中,它运行正常。执行putObject方法后,我得到一个data对象,但它只包含最近添加的对象的Etag

s3.putObject(params, function(err, data) {
    //data only contains Etag
});

我需要知道我可以在浏览器中使用的确切URL,以便客户端可以看到该文件。该文件夹已经公开,如果我从S3控制台复制链接,我可以看到该文件。

我尝试使用getSignedUrl但是它返回的网址用于其他目的,我相信。

谢谢!

3 个答案:

答案 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
};