繁体   English   中英

将文件上传到 Amazon S3 存储桶。 使用适用于 Java v2 的 AWS 开发工具包

[英]Issuing uploading file to Amazon S3 Bucket. using the AWS SDK for Java v2

我正在尝试使用适用于 Java 的 AWS SDK 2.0 将文件上传到 AWS S3 存储桶,但尝试执行此操作时出现错误。

software.amazon.awssdk.services.s3.model.S3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method.

我不确定我错过了什么。 我已经尝试添加一个密钥,但我什至不确定我需要在那里放什么,认为它只是一个名称来指代已上传的内容。

private S3Client s3Client;

private void upload() {
    setUpS3Client();

     PutObjectRequest putObjectRequest = PutObjectRequest.builder()
    .bucket(bucketName) //name of the bucket i am trying to upload to
    .key("testing") //No idea what goes in here.
    .build();

    byte[] objectByteArray = getObjectByteArray(bucketRequest.getPathToFile()); //bucketRequest just holds the data that will be sent
    PutObjectResponse putObjectResponse = s3Client.putObject(putObjectRequest, RequestBody.fromBytes(objectByteArray));
}

  private void setUpS3Client() {

    Region region = Region.AF_SOUTH_1;

    s3Client = S3Client.builder()
    .region(region)
    .credentialsProvider(createStaticCredentialsProvider())
    .build();

    this.s3Client = s3Client;
}

有谁知道这个错误指的是什么以及我需要更改什么才能上传文件? 任何帮助将不胜感激。

这个 Java 示例运行良好。 这是此 Java 代码工作的屏幕截图:

在此处输入图像描述

你说:

key("testing") //No idea what goes in here.
    .build();

是要更新的对象的名称。 例如, book.pdf用于上传 PDF 文件。 Java AWS V2 示例的所有输入都在开始时记录在 main 方法中。

在此处输入图像描述

现在解决您的问题 - 确保您在 POM 文件中具有所需的依赖项。 使用位于此处的 POM 文件:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/s3

同样在每个程序开始时,都有一个指向Java V2 开发指南的链接,该指南讨论了设置您的 DEV 环境,包括您的信用。

问题是我的凭据。 我提供的秘密访问密钥不正确。 :(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM