初始化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();