java - 如何对 AWS Presigned URL 执行 HEAD 操作?
问题描述
我正在尝试获取 S3 中对象的大小。我知道我可以通过GET
但我想使用该HEAD
方法。但我无法在 AWS SDK HeadObjectPresignRequest
only中找到GetObjectPresignRequest
。在预签名的 URL 上使用HEAD
会给我一个 403
现在我正在做的是取消获取请求
解决方案
我们需要传递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'
推荐阅读
- vue.js - VueJS 构建开始抛出错误:冲突:多个资产发射到相同的文件名
- angular - Angular 7:发送 post 请求给出错误 405(不允许的方法)
- mysql - MYSQL - groupby 函数在 5.7 中不起作用
- python-3.x - 在python3中使用默认值将字符串拆分为字典的唯一方法是什么?
- haskell - 方阵的嵌套数据类型
- vhdl - 我们如何将不同的信号分配给单个整数值?
- mongodb - 开发POJO类时如何在@Document注解中添加两个集合?
- python - Gspread 应用程序可在笔记本电脑上运行,但在 android 上崩溃?
- css - 是否可以使用带有标签的媒体查询,例如?
- linux - 在 Linux 中使用信号量的有界缓冲区问题