gpt4 book ai didi

Java : How to print the content of s3 bucket

转载 作者:行者123 更新时间:2023-12-02 08:40:38 25 4
gpt4 key购买 nike

我正在使用 jdk 11 和virtual-host-style-access(AWS SDK for Java 版本 2)在 AWS s3 存储桶中创建/访问对象,如下所示:

https://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/examples-s3-objects.html#list-object

虽然我能够在指定存储桶中创建对象,但我无法打印存储桶中的内容/对象列表,但正如我所检查的权限,每个人都可以查看桶中的对象。错误消息是:

software.amazon.awssdk.services.s3.model.NoSuchKeyException: The specified key does not exist. (Service: S3, Status Code: 404

这是创建 s3client 的方式:

    adapterSmsS3Client = S3Client.builder()
.region(Region.US_WEST_2)
.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(ACCESS_KEY,SECRET_KEY)))
.endpointOverride(URI.create(BASE_URL))
.build();

这就是我尝试打印列表的方式:

public static void listBucketObjects(  S3Client s3, String bucketName ) {
ListBucketsResponse res1 = s3.listBuckets();

ListObjectsRequest listObjects = ListObjectsRequest
.builder()
.bucket(BUCKET_NAME)
.build();

ListObjectsResponse res = s3.listObjects(listObjects);
List<S3Object> objects = res.contents();

for (ListIterator iterVals = objects.listIterator(); iterVals.hasNext(); ) {
S3Object myValue = (S3Object) iterVals.next();
System.out.print("\n The name of the key is " + myValue.key());
System.out.print("\n The object is " + calKb(myValue.size()) + " KBs");
System.out.print("\n The owner is " + myValue.owner());
}

}

BUCKET_NAME 是 s3 上存储桶的名称(不是任何 URL)

不过,我想提一下,如果我使用 Path-style-request(AWS SDK for Java 版本 1),请执行以下操作:

https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-objects.html

我能够打印同一个存储桶中的内容。然而我们并不打算走这条路。

您知道为什么我会收到“ key 不存在”错误或可能的解决方案吗?

最佳答案

如果您遇到任何权限问题,您将收到403禁止;不是 404 NoSuchKey

存储桶中的对象的名称是什么?我的猜测是您有一些特殊字符或 url 编码字符导致了问题。请参阅https://aws.amazon.com/premiumsupport/knowledge-center/404-error-nosuchkey-s3/?nc1=h_ls了解更多详情。

我建议您使用 listObjectsV2 而不是 V1。

关于Java : How to print the content of s3 bucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61411993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com