如何在Java AWS S3 SDK预签名URL中设置策略条件

问题描述

我使用Java AWS S3 SDK对我的请求进行预签名。我有以下代码

var request = new GeneratePresignedUrlRequest(bucketName,filename)
        .withMethod(method)
        .withExpiration(expiration());

// do something with request

return s3Client.generatePresignedUrl(request);

添加content-length-range之类的自定义条件时,我需要写些什么来代替注释?

解决方法

对于基于浏览器的POST上传到S3,AWS Java SDK没有提供一种生成带有条件的预签名URL的方法。有一个开放的feature request将此添加到v2 SDK。请注意,PHP,Node.js和Python SDK都提供了此功能。

对于常规的HTTP PUT预签名URL,您不能将内容长度限制应用于预签名URL。您可以使用conditions 放置custom policy,但仅支持:

  • DateLessThan
  • DateGreaterThan
  • IpAddress

如果您需要处理给定大小范围之外的对象,则可以在上载对象后,在AWS Lambda中进行。