Quarkus Amazon S3 NoSuchBucketException

问题描述 投票:0回答:1

在使用 Amazon S3 和 Quarkus 时,我遇到了一个具有挑战性的问题,即无法识别或找到 S3 存储桶。这很令人困惑,因为所有配置和凭据似乎都是正确的。我仔细检查了 AWS 凭证和存储桶名称,以确保它们在 Quarkus 应用程序属性中准确设置。

然后,我查看了 Quarkus 文档,了解可能与标准 AWS SDK 用法不同的任何特定要求或配置。我想知道 Quarkus 中是否有其他步骤或配置用于与 S3 集成,例如特定的客户端自定义或策略设置。

确保设置正确后,我开始对网络和权限进行故障排除。我检查了 S3 存储桶是否位于与配置中指定的区域不同的区域,因为这可能会导致找不到该存储桶。我还验证了 IAM 角色和策略,以确保应用程序具有访问 S3 存储桶所需的权限。一切都配置正确,但总是出现相同的错误,即找不到存储桶。

我的应用程序.属性:

bucket.name=bucket-test-flower

quarkus.s3.aws.region=us-east-1
quarkus.s3.aws.credentials.type=static
quarkus.s3.aws.credentials.static-provider.access-key-id=my-key
quarkus.s3.aws.credentials.static-provider.secret-access-my-other-key

我的代码:

这里

public class S3SyncClientResource extends CommonResource {
    @Inject
    S3Client s3;

    @POST
    @Path("upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(FormData formData) throws Exception {

        System.out.println(bucketName);
        System.out.println(formData.data);
        System.out.println(formData.filename);
        System.out.println(formData.mimetype);

        if (formData.filename == null || formData.filename.isEmpty()) {
            return Response.status(Status.BAD_REQUEST).build();
        }

        if (formData.mimetype == null || formData.mimetype.isEmpty()) {
            return Response.status(Status.BAD_REQUEST).build();
        }

        PutObjectResponse putResponse = s3.putObject(buildPutRequest(formData),
                RequestBody.fromFile(formData.data));
        if (putResponse != null) {
            return Response.ok().status(Status.CREATED).build();
        } else {
            return Response.serverError().build();
        }
    }
abstract public class CommonResource {

    @ConfigProperty(name = "bucket.name")
    protected
    String bucketName;

    protected PutObjectRequest buildPutRequest(FormData formData) {
        return PutObjectRequest.builder()
                .bucket(bucketName)
                .key(formData.filename)
                .contentType(formData.mimetype)
                .build();
    }

    protected GetObjectRequest buildGetRequest(String objectKey) {
        return GetObjectRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .build();
    }

}
public class FormData {

    @RestForm("file")
    public File data;

    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    public String filename;

    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    public String mimetype;

}

错误:

software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist (Service: S3, Status Code: 404, Request ID: 5a31b1b4-e4cf-449d-b307-78271669c94b, Extended Request ID: s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=)
amazon-web-services amazon-s3 quarkus
1个回答
0
投票

仍然没有答案? 我也遇到同样的错误。


我想我知道问题是什么...... 在

docker ps
我看到
localstack/localstack:3.0.1
我怀疑在 dev mod s3client 中重新配置错误

© www.soinside.com 2019 - 2024. All rights reserved.