更新时间:2024-10-28 GMT+08:00

初始化DIS客户端

您可以使用以下两种方法初始化DIS SDK客户端实例,优先选择使用代码进行初始化。其中,“endpoint”“ak”“sk”“region”“projectId”信息请参考获取认证信息

  • 使用代码初始化DIS SDK客户端实例。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    // 创建DIS客户端实例
    DIS dic = DISClientBuilder.standard()
        .withEndpoint("YOUR_ENDPOINT")
         // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
        // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
        .withAk(System.getenv("HUAWEICLOUD_SDK_AK"))
        .withSk(System.getenv("HUAWEICLOUD_SDK_SK"))
        .withProjectId("YOUR_PROJECT_ID")
        .withRegion("YOUR_REGION")
        // 以下配置失败时的重试次数
        .withProperty(DISConfig.PROPERTY_PRODUCER_RECORDS_RETRIES, "-1")
        .withProperty(DISConfig.PROPERTY_PRODUCER_EXCEPTION_RETRIES, "-1")
        .build();
    
  • 若需要使用代理,请使用如下方法初始化DIS客户端:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 创建DIS客户端实例 
    DIS dic = DISClientBuilder.standard() 
        .withEndpoint("YOUR_ENDPOINT") 
         // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
        // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
        .withAk(System.getenv("HUAWEICLOUD_SDK_AK")) 
        .withSk(System.getenv("HUAWEICLOUD_SDK_SK")) 
        .withProjectId("YOUR_PROJECT_ID") 
        .withRegion("YOUR_REGION") 
        .withProxyHost("YOUR_PROXY_HOST") // 代理IP
        .withProxyPort("YOUR_PROXY_PORT") // 代理端口
        .withProxyProtocol(Protocol.HTTP) // 代理协议,默认为HTTP
        .withProxyUsername("YOUR_PROXY_USER_NAME") // 代理用户名(可选)
        .withProxyPassword("YOUR_PROXY_PASSWORD") // 代理密码(可选)    
        // 以下配置失败时的重试次数
        .withProperty(DISConfig.PROPERTY_PRODUCER_RECORDS_RETRIES, "-1")
        .withProperty(DISConfig.PROPERTY_PRODUCER_EXCEPTION_RETRIES, "-1")
        .build();
    
  • 若需在客户端设置DIS连接超时时间,请使用如下方法初始化DIS客户端:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 创建DIS客户端实例 
    DIS dic = DISClientBuilder.standard() 
        .withEndpoint("YOUR_ENDPOINT") 
        .withAk(System.getenv("HUAWEICLOUD_SDK_AK")) 
        .withSk(System.getenv("HUAWEICLOUD_SDK_SK")) 
        .withProjectId("YOUR_PROJECT_ID") 
        .withRegion("YOUR_REGION") 
        .withProperty(DISConfig.PROPERTY_CONNECTION_TIMEOUT, "60")  // 单位:秒
        .build();
    
  • 若需要开启传输压缩,请使用如下方法初始化DIS客户端:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    // 创建DIS客户端实例
    DIS dic = DISClientBuilder.standard()
        .withEndpoint("YOUR_ENDPOINT")
        .withAk(System.getenv("HUAWEICLOUD_SDK_AK"))
        .withSk(System.getenv("HUAWEICLOUD_SDK_SK"))
        .withProjectId("YOUR_PROJECT_ID")
        .withRegion("YOUR_REGION")
        .withBodyCompressEnabled(true)
        .withBodyCompressType(CompressionType.ZSTD) // 配置压缩算法,当前支持lz4和zstd,默认值为lz4
        // 以下配置失败时的重试次数
        .withProperty(DISConfig.PROPERTY_PRODUCER_RECORDS_RETRIES, "-1")
        .withProperty(DISConfig.PROPERTY_PRODUCER_EXCEPTION_RETRIES, "-1")
        .build();
    
  • 若需在客户端将数据加密后再上传到DIS,DIS SDK提供了加密方法。即在构建disclient时增加参数DataEncryptEnabled和data.password。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    // 创建DIS客户端实例
    DIS dic = DISClientBuilder.standard()
        .withEndpoint("YOUR_ENDPOINT")
        .withAk(System.getenv("HUAWEICLOUD_SDK_AK"))
        .withSk(System.getenv("HUAWEICLOUD_SDK_SK"))
        .withProjectId("YOUR_PROJECT_ID")
        .withRegion("YOUR_REGION")
        .withDataEncryptEnabled(true)
        .withProperty("data.password", "xxx") //xxx替换为用户配置的数据加密密钥
        // 以下配置失败时的重试次数
        .withProperty(DISConfig.PROPERTY_PRODUCER_RECORDS_RETRIES, "-1")
        .withProperty(DISConfig.PROPERTY_PRODUCER_EXCEPTION_RETRIES, "-1")
        .build();
    

    若使用JAVA SDK加密上传数据,读取数据也需要使用JAVA SDK配置相同的密钥。

  • 使用配置文件初始化DIS SDK客户端实例。

    “dis-sdk-demo\src\main\resources”目录下的“dis.properties”文件中添加如下配置项。

    • ak/sk:用户在IAM中创建的AK/SK。
    • region:用户使用通道所在的区域。
    • endpoint:DIS的访问地址。
    • projectId:通道所在的资源ID。
    1
    2
    // 创建DIS客户端实例
                DIS dic = DISClientBuilder.standard().build();