boto3是否有内置方法将AWS S3 pre-signed post转为pre-signed url
S3预签名POST凭证转预签名URL的boto3支持说明
boto3没有提供将已生成的generate_presigned_post()预签名POST凭证直接转换为generate_presigned_url()格式预签名链接的内置方法,核心原因如下:
- 两种预签名的底层实现逻辑完全不兼容:
generate_presigned_post()生成的是适配POST请求的表单凭证,签名范围覆盖了你预设的所有表单限制规则(比如文件大小区间、允许的Content-Type、自定义元数据等),校验逻辑完全绑定POST请求场景generate_presigned_url()生成的是适配GET/PUT/DELETE等单请求方法的URL签名,签名参数全部拼接在URL查询串中,校验逻辑和请求方法、对象路径、指定请求头强绑定
- 两者的签名计算输入参数、签名覆盖范围没有对应转换的通用规则,因此不存在标准化的转换方案,boto3也不会提供这类内置实现。
如果你需要获取对应对象的预签名URL,仅能基于原始的桶名、对象Key、需要开放的请求方法、有效期等参数,重新调用generate_presigned_url()生成。如果你的业务场景不允许直接调用该方法重新生成,目前也没有公开的可靠转换方案,自行实现签名转换的风险很高,容易出现签名校验失败、权限不符合预期的问题。
内容的提问来源于stack exchange,提问作者Artic
相关产品推荐
相关产品推荐

