【问题标题】:AWS S3 get object using URLAWS S3 使用 URL 获取对象
【发布时间】:2017-10-24 22:02:40
【问题描述】:
我有一组可能属于或不属于特定存储桶的 URL。这些不公开。
我正在使用 nodejs aws-sdk 来获取它们。
但是,getObject 函数需要单独的参数 Bucket 和 Key,它们已经在我的 URL 中。
有什么方法可以使用这个网址吗?
我尝试通过用/ 拆分URL 来提取密钥,并通过用. 拆分来获取存储桶。但问题是存储桶名称也可以有.,我不确定键名是否也可以有/。
【问题讨论】:
标签:
node.js
amazon-web-services
amazon-s3
aws-sdk
aws-sdk-js
【解决方案1】:
amazon-s3-uri 库可以解析出 Amazon S3 URI:
const AmazonS3URI = require('amazon-s3-uri')
try {
const uri = 'https://bucket.s3-aws-region.amazonaws.com/key'
const { region, bucket, key } = AmazonS3URI(uri)
} catch((err) => {
console.warn(`${uri} is not a valid S3 uri`) // should not happen because `uri` is valid in that example
})
【解决方案2】:
使用这个模块parse-s3-url来设置getObject的参数。
bucket.getObject( parseS3Url('https://s3.amazonaws.com/mybucket/mykey'), (err:any, data:any) =>{
if (err) {
// alert("Failed to retrieve an object: " + error);
} else {
console.log("Loaded " + data.ContentLength + " bytes");
// do something with data.Body
}
});