【问题标题】:Unable to calculate MD5 : AWS S3 bucket无法计算 MD5:AWS S3 存储桶
【发布时间】:2017-01-12 05:40:46
【问题描述】:

我的应用程序托管在 AWS Elastic Beanstalk - Tomcat 6 上。我的数据文件存储在 S3 存储桶中。当我在我的机器上的本地服务器上托管我的应用程序时,我能够读取数据并将数据写入我的 S3 存储桶(通过 SDK 使用),但是从托管在 Elastic Beanstalk 上的应用程序写入操作显示错误,即在 Elastic Beanstalk 上雄猫。我收到以下错误:

com.amazonaws.AmazonClientException:无法计算 MD5 哈希: visitorsinfo.json(没有这样的文件或目录)

我的 S3 存储桶中有visitorsinfo.json,可以从我机器上的本地服务器成功访问,但不能从 Elastic Beanstalk 访问。..

【问题讨论】:

  • EBS = 弹性块存储。您指的是 Elastic Beanstalk 吗?
  • 此外,该错误消息的关键部分是No such file or directory 而不是您似乎关注的Unable to calculate MD5 hash。该文件实际上并不存在。
  • 嗨,它的 Elastic Beanstalk,文件存在,当我将本地机器指向同一个存储桶时,它被修改了。它的行为很奇怪,有什么猜测吗?
  • 添加一些代码来打印出 S3 对象的完整存储桶和密钥,也许它在服务器上使用了不正确的密钥前缀?
  • 嗨,通过使用运行 Tomcat 7 Java 6 的 64 位 Amazon Linux 2014.03 v1.1.0 创建新应用程序解决了这个问题

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-elastic-beanstalk


【解决方案1】:

老兄,我也有同样的问题。但对我来说,我忘记在发送文件之前设置读取文件的权限。 就这个

ActivityCompat.requestPermissions(activity!!, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE), 300)

【讨论】:

    【解决方案2】:

    如下所示,将 Input Stream 传递给 put 对象,而不是传递文件对象

    InputStream is=file.getInputStream();                                                                           
    s3client.putObject(new PutObjectRequest(bucketName, keyName,is,new ObjectMetadata())); 
    

    【讨论】:

    【解决方案3】:

    通过创建一个配置为 64 位 Amazon Linux 2014.03 v1.1.0 并运行 Tomcat 7 Java 6 的新应用程序解决了这个问题

    【讨论】:

      猜你喜欢
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2014-04-22
      • 2017-06-26
      • 2018-02-01
      • 1970-01-01
      相关资源
      最近更新 更多