我使用的是2.x AWS Java SDK (https://docs.aws.amazon.com/sdk-for-java/index.html)。我需要使用友好的HTTP URL (例如https://bucket.s3.region.amazonaws.com/key或https://s3.region.amazonaws.com/bucket/key)获取一个S3对象。
旧的软件开发工具包包含一个AmazonS3URI类,它可以解析网址并提取存储桶和密钥。2.x SDK是否包含类似的功能,或者我是否应该使用Java的URI类来解析URL?
发布于 2019-10-25 02:50:58
目前还没有办法使用SDK完成此操作,但it might be available in the future。同时,您可以使用Java的URI类编写自己的代码,或者使用旧的SDK中的AmazonS3URI,希望它能继续工作。
发布于 2020-03-02 09:17:33
这就是我从java.net使用URI所做的事情
URI uri = new URI(s3Url);
String bucketName = uri.getHost();
// remove the first "/"
String prefix = uri.getPath().substring(1);发布于 2020-05-23 03:41:34
根据@Bao Pham的回答进行扩展,使用new URI(s3Url)需要添加一个try/catch,而如果使用URI.create(s3Url),则不需要它。我还发现,使用解析后的部分中的S3ObjectId来提高可重用性非常有用。
public class S3Url {
public static S3ObjectId decode(String urlStr) {
URI uri = URI.create(urlStr);
return new S3ObjectId(uri.getHost(), uri.getPath().substring(1));
}
}https://stackoverflow.com/questions/58527920
复制相似问题