我有一组可能属于或不属于特定存储桶的 URL。这些不是公开的。
我正在使用 nodejsaws-sdk
来获取它们。
但是,该getObject
函数需要参数Bucket
和Key
单独的参数,它们已经在我的 URL 中。
有什么办法可以使用网址吗?
我尝试通过拆分 URL 来提取密钥,/
并通过拆分来获取存储桶.
。但问题是存储桶名称也可以有.
,我不确定键名是否也可以有/
。
我有一组可能属于或不属于特定存储桶的 URL。这些不是公开的。
我正在使用 nodejsaws-sdk
来获取它们。
但是,该getObject
函数需要参数Bucket
和Key
单独的参数,它们已经在我的 URL 中。
有什么办法可以使用网址吗?
我尝试通过拆分 URL 来提取密钥,/
并通过拆分来获取存储桶.
。但问题是存储桶名称也可以有.
,我不确定键名是否也可以有/
。
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
})
使用此模块 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
}
});