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

How to set Policy conditions in Java AWS S3 SDK presigned 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?

对于 browser-based POST 上传到 S3,AWS Java SDK 不提供生成带有条件的 pre-signed URL 的方法。有一个 open feature request 可以将其添加到 v2 SDK。请注意,PHP、Node.js 和 Python SDK 都提供此功能。

对于常规 HTTP PUT pre-signed URL,您不能对 pre-signed URL 应用内容长度限制。您 可以 放置 conditions using a custom policy 但这只支持:

  • 日期小于
  • DateGreaterThan
  • IP地址

如果您需要处理超出给定大小范围的对象,那么您可以在 AWS Lambda 中执行此操作, 对象上传后。