【问题标题】:How do I do a HEAD operation on an AWS Presigned URL?如何对 AWS Presigned URL 执行 HEAD 操作?
【发布时间】:2021-04-19 08:24:47
【问题描述】:

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

现在我正在做的是Cancelling the fetch request

【问题讨论】:

    标签: java amazon-s3 file-transfer


    【解决方案1】:

    我们需要将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);
      }
    );
    

    Java:

    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'
    

    【讨论】:

    • thx 我意识到我错过了 java 标签。我在 Java SDK 中需要这个。
    • @ArchimedesTrajano 已更新 java 示例
    • 谢谢。看来 GeneratePresignedUrlRequest 在 SDK 1 上,但不在 SDK2 上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多