Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列出aws bucket中的对象_Java_Amazon Web Services_Amazon S3 - Fatal编程技术网

Java 列出aws bucket中的对象

Java 列出aws bucket中的对象,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,我试图打印一个桶中的所有对象,但出现了一个错误 线程“main”com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:301,AWS服务:Amazon s3,AWS请求ID:758A7CBF1A29FD74,AWS错误代码:PermanentRedirect,AWS错误消息:您尝试访问的存储桶必须使用指定的端点寻址。请将所有未来的请求发送到此终结点 目前我只有以下代码: public class S3Download { /**

我试图打印一个桶中的所有对象,但出现了一个错误

线程“main”com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:301,AWS服务:Amazon s3,AWS请求ID:758A7CBF1A29FD74,AWS错误代码:PermanentRedirect,AWS错误消息:您尝试访问的存储桶必须使用指定的端点寻址。请将所有未来的请求发送到此终结点

目前我只有以下代码:

public class S3Download {

    /**
     * @param args
     */
    public static void main(String[] args) {
        AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider());
        Region usWest2 = Region.getRegion(Regions.US_WEST_2);
        s3.setRegion(usWest2);
        String bucketName = "apireleasecandidate1";

        ListObjectsRequest listObjectRequest = new ListObjectsRequest().withBucketName(bucketName);
        ObjectListing objectListing;

        do{
            objectListing = s3.listObjects(listObjectRequest);
            for(S3ObjectSummary objectSummary : objectListing.getObjectSummaries()){
                System.out.println(" - " + objectSummary.getKey() + " " + "(size = " +
            objectSummary.getSize() + ")");
            }
            listObjectRequest.setMarker(objectListing.getNextMarker());
        }while(objectListing.isTruncated());
    }

}
我在亚马逊的网站上找到了


有人知道我遗漏了什么吗?

看来您的桶“apireleasecandidate1”不在美国西部地区。我认为这是在美国的经典地区。您应该修改代码以删除setRegion()调用。

对于Scala开发人员,这里是一个递归函数,用于执行完全扫描并使用官方

import com.amazonaws.services.s3.AmazonS3Client
导入com.amazonaws.services.s3.model.{S3ObjectSummary,ObjectListing,GetObjectRequest}
导入scala.collection.JavaConversions.{collectionAsScalaIterable=>asScala}
defmap[T](s3:AmazonS3Client,bucket:String,prefix:String)(f:(S3ObjectSummary)=>T){
def扫描(acc:List[T],listing:ObjectListing):List[T]={
val summaries=asScala[S3ObjectSummary](listing.getObjectSummaries())
val mapped=(对于(摘要打印项次))
将打印所有文件

val tuple=map(s3,bucket,前缀)(s=>(s.getKey,s.getOwner,s.getSize))
将返回该bucket/前缀中的
(键、所有者、大小)
元组的完整列表

val totalSize=map(s3,“bucket”,“prefix”)(s=>s.getSize)
将返回其内容的总大小(请注意在表达式末尾应用的附加
sum()
折叠函数;-)


您可以将
map()