当前位置: 首页 > 知识库问答 >
问题:

正在将文件上传到Amazon S3 Bucket。使用AWS SDK for Java v2

昌招
2023-03-14

我正在尝试使用AWS SDK 2.0将文件上传到AWS S3存储桶Java,但我在尝试这样做时收到错误。

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;
}

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

共有2个答案

班建义
2023-03-14

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

童琪
2023-03-14

这个Java示例工作正常。以下是Java代码工作的屏幕截图:

您声明:

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

键是要更新的对象的名称。例如,book.pdf上传一个PDF文件。JavaAWS V2示例的所有输入都记录在main方法的start中。

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

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

此外,在每个程序的开头,都有一个指向Java V2开发指南的链接,该指南介绍了如何设置开发环境,包括Cred。

 类似资料:
  • 问题内容: 实际上,我正在使用带有Angular 2编码的接口的Spring REST API。 我的问题是我无法使用Angular 2上传文件。 我在Java中的Webresources是: 当我通过带有Auth标头等的URL请求调用它时(它具有适用于Chrome的Advanced Rest Client扩展),它完全可以正常工作 证明:(在这种情况下,一切正常) Spring配置文件和Pom依

  • 问题内容: 尝试将文件上传到S3存储桶时遇到问题。一切正常,除了我的文件参数似乎不合适。我正在使用Amazon S3 SDK从Node.js上载到S3。 这些是我的路线设置: 这是items.upload()函数: 将param 设置为类似字符串的效果很好。根据doc,param必须获取 (缓冲区,类型数组,Blob,字符串,ReadableStream)对象数据。 但是,上传文件对象失败,并显示

  • 问题内容: 是否可以使用http put方法将本地文件上传到保管箱?我正在上传文件,但没有文件?(“字节”:0) 如何向文件添加内容? 我的代码如下: 我的文件已成功上传,但没有内容?它是空的!该文档对我来说有点困惑:https : //www.dropbox.com/developers/core/docs#files_put 问题答案: @smarx:我正在发送一个空的HTTP PUT请求,最

  • 问题内容: 我试图了解如何使用Node.js在Firebase Storage中上传文件。我的第一次尝试是使用Firebase库: 但是事实证明,Firebase无法从服务器端上传文件,正如在文档中明确指出的那样: Firebase存储不包含在服务器端Firebase npm模块中。相反,您可以使用gcloud Node.js客户端。 在代码中,您可以使用以下方式访问存储分区: 我们可以在没有Go

  • 我的upload.js文件包含以下代码: 它通过终端工作,但我如何调用它在表单提交按钮点击或只是从不同的文件? 当我尝试的时候,它给我: 无法读取未定义的属性“prototype” 我对NodeJs还很陌生,我真的不知道该怎么做。 Google文档对我一点帮助都没有:/

  • 我在dropbox示例中没有看到任何有用的上传。 你能帮帮我吗?我在用Angularjs。