首页 > 解决方案 > 如何对 AWS Presigned URL 执行 HEAD 操作?

问题描述

我正在尝试获取 S3 中对象的大小。我知道我可以通过GET但我想使用该HEAD方法。但我无法在 AWS SDK HeadObjectPresignRequestonly中找到GetObjectPresignRequest。在预签名的 URL 上使用HEAD会给我一个 403

现在我正在做的是取消获取请求

标签: javaamazon-s3file-transfer

解决方案


我们需要传递headObject给 getSignedUrl 方法本身。

JavaScript:

s3.getSignedUrl(
  "headObject",
  {
    Bucket: "my-test-bucket",
    Key: "path/to/my/object",
  },
  (error, url) => {
    if (error) console.log("error", error);
    if (url) console.log("url", url);
  }
);

爪哇:

AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build();       
URL url = s3Client.generatePresignedUrl(new GeneratePresignedUrlRequest("my-test-bucket", "path/to/my/object",HttpMethod.HEAD));
System.out.println(url.toString());     

然后对对象提出 HEAD 请求。

curl --location --head 'https://my-test-bucket.s3.amazonaws.com/myobject?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA....Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210418T230000Z&X-Amz-Expires=900&X-Amz-Security-Token=....%2B31dbfIXMQ%3D%3D&X-Amz-Signature=...ad&X-Amz-SignedHeaders=host'

推荐阅读