当前位置: 首页 > 工具软件 > Browser V2 > 使用案例 >

AWS S3 对象存储 API 鉴权:签名版本的切换 v2 v4

唐声
2023-12-01

一、AWS S3 对象存储API 切换签名版本示例

示例代码摘抄自 DELL ECS EMC aws-java-workshop

    public static AmazonS3 getS3ClientWithV4Signatures() {
        System.out.println("Running with V4 Signatures:\n");
        return getBasicS3ClientBuilder().build();
    }

    public static AmazonS3 getS3ClientWithV2Signatures() {

        AmazonS3ClientBuilder builder = getBasicS3ClientBuilder();

        // switch to v2 auth
        builder.setClientConfiguration(new ClientConfiguration().withSignerOverride("S3SignerType"));
        System.out.println("Running with V2 Signatures:\n");

        return builder.build();

    }

二、经验总结

文档上提到的已经被弃用的API,一定还有人在用

否则不会有人写文档让大家迁移到新接口。

故,一定要让调用API的应用可配置,兼容接口,以应对可能的变化。

绝不能认为“文档说旧接口废弃了,那我就只支持新接口”,这样遇到生产环境是旧接口,就要手忙脚乱,甚至重新发版了。
比如,业务方测试环境用了V41,但生产还是V22,理由是生产不好迁移。

三、后记

其实对于 AWS S3 来讲,v4 签名是 v2签名的增强型扩展3,而非是 v2废弃后的替代。我一开始以为是后者,导致应用不兼容V2,其实是失误。


  1. AWS General Referenc: Signature Version 4 signing process ↩︎

  2. AWS General Referenc: Signature Version 2 signing process ↩︎

  3. AWS General Referenc: Changes in Signature Version 4 ↩︎

 类似资料: