1、SLB(Server Load Balancing) 负载均衡
1.1、官方实例
根据官方实例,我们所需要使用到的参数有
accessKeyId
(必选): key
accessKeySecret
(必选): keySecret
endpoint
(必选): 地域节点
RegionId
(必选): 访问控制策略组的地域ID。
AclId
(必选): 访问控制策略组ID。
AclEntrys
: 设置访问控制策略组。
- entry:访问控制策略组中要添加的IP条目,可以指定IP地址段(CIDR block),多个IP地址段之间用逗号隔开。
- comment:访问控制策略组备注说明。
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.slb20140515.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
.setAccessKeyId(accessKeyId)// 您的 AccessKey ID
.setAccessKeySecret(accessKeySecret);// 您的 AccessKey Secret
config.endpoint = "slb.cn-zhangjiakou.aliyuncs.com";// 访问的域名
return new com.aliyun.slb20140515.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.slb20140515.Client client = Sample.createClient("accessKeyId", "accessKeySecret");
AddAccessControlListEntryRequest addAccessControlListEntryRequest = new AddAccessControlListEntryRequest();
RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.addAccessControlListEntryWithOptions(addAccessControlListEntryRequest, runtime);
} catch (TeaException error) {
com.aliyun.teautil.Common.assertAsString(error.message); // 如有需要,请打印 error
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
com.aliyun.teautil.Common.assertAsString(error.message); // 如有需要,请打印 error
}
}
}
1.2、具体实现
properties文件
@Getter
@Setter
@ConfigurationProperties(SLB_AUTHORIZE_STRATEGY_GROUP)
public class AliyunAuthorizeStrategyGroupProperties {
private ConfigEntity devResource;
@Getter
@Setter
public static class ConfigEntity {
private List<ObjectEntity> strategyGroupList;
@Getter
@Setter
public static class ObjectEntity {
/**
* regionId
*/
private String regionId;
/**
* endpoint 如果是VPC调用应当使用内网endpoint
*/
private String endpoint;
/**
* SLB实例id
*/
private String aclId;
}
}
}
具体实现
@Slf4j
@RequiredArgsConstructor
@Service(SLB_STRATEGY_GROUP_RELEASE_SERVICE_NAME)
public class SlbIpReleaseStrategyImpl implements IpReleaseStrategy {
private static final String IP_SUFFIX = "/32";
private final AliyunRamBossAccountProperties aliyunRamBossAccountProperties;
private final AliyunAuthorizeStrategyGroupProperties aliyunAuthorizeStrategyGroupProperties;
@Override
public void ipRelease(AddIpRequest request) {
List<AliyunAuthorizeStrategyGroupProperties.ConfigEntity.ObjectEntity> strategyGroupList = aliyunAuthorizeStrategyGroupProperties.getDevResource().getStrategyGroupList();
//region 配制 列表非空判断
if (strategyGroupList.isEmpty()) {
return;
}
//endregion
strategyGroupList.forEach(strategyGroup -> {
try {
Client client = getSlbClient(strategyGroup.getEndpoint(), strategyGroup.getRegionId());
//region 参数添加
String formatEbtrys = String.format("[{\"entry\":\"%s\",\"comment\":\"%s\"}]", request.getIp() + IP_SUFFIX, request.getDescription());
AddAccessControlListEntryRequest addAccessControlListEntryRequest = new AddAccessControlListEntryRequest()
.setRegionId(strategyGroup.getRegionId())
.setAclId(strategyGroup.getAclId())
.setAclEntrys(formatEbtrys);
//endregionc
RuntimeOptions runtime = new RuntimeOptions();
client.addAccessControlListEntryWithOptions(addAccessControlListEntryRequest, runtime);
} catch (TeaException error) {
log.error(error.message);
} catch (Exception errorInfo) {
TeaException error = new TeaException(errorInfo.getMessage(), errorInfo);
log.error(error.message);
}
});
}
/**
* 初始化账号Client
*
* @param endpoint
* @return {@link Client} Client对象
*/
private Client getSlbClient(String endpoint, String regionId) throws Exception {
Config config = new Config()
.setAccessKeyId(aliyunRamBossAccountProperties.getAliyun().getAccess())
.setAccessKeySecret(aliyunRamBossAccountProperties.getAliyun().getSecret());
config.endpoint = endpoint;
config.regionId = regionId;
config.readTimeout = 10000;
return new Client(config);
}
}
2、RDS(Relational Database Service)关系型数据库服务
2.1、官方实例
根据官方实例,我们所需要使用到的参数有
accessKeyId
(必选): key
accessKeySecret
(必选): keySecret
endpoint
(必选): 地域节点
DBInstanceId
(必选) : 实例id
SecurityIps
(必选): 该实例的IP白名单,多个IP地址请以英文逗号(,)隔开,不可重复。
- IP地址形式,例如:10.23.XXXX。
- CIDR形式,例如:10.23.XXXX/24(无类域间略由,24表示了地址中前缀的长度,范围为1~32)。
DBInstanceIPArrayName
: 需要修改的IP白名单分组名称,默认操作“Default”分组。
DBInstanceIPArrayAttribute
: 白名单分组属性,默认为空。
SecurityIPType
: IP地址类型。 暂不支持IPv6,取值固定为IPv4。
WhitelistNetworkType
:白名单的网络类型,取值:(默认MIX)
- Classic:高安全白名单模式下的经典网络
- VPC:高安全白名单模式下的专有网络
- MIX:通用模式
ModifyMode
: 修改方式,取值:(默认Cover)
- Cover:使用SecurityIps参数的值覆盖原IP白名单。
- Append:在原IP白名单中增加。
- Delete:在原IP白名单中删除SecurityIps参数中输入的IP地址。至少需要保留一个IP地址。
FreshWhiteListReadins
: 表示白名单同步到只读实例清单。
- 该参数仅适用于RDS PostgreSQL实例。
- 如果当前实例包含只读实例,可以通过此参数配置白名单同步,将主实例的白名单同步至指定的只读实例。当有多个只读实例时,用逗号(,)分隔。
- 如果当前实例没有只读实例,此参数为空。
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.rds20140815.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
.setAccessKeyId(accessKeyId) // 您的 AccessKey ID
.setAccessKeySecret(accessKeySecret);// 您的 AccessKey Secret
config.endpoint = "rds.aliyuncs.com";// 访问的域名
return new com.aliyun.rds20140815.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.rds20140815.Client client = Sample.createClient("accessKeyId", "accessKeySecret");
ModifySecurityIpsRequest modifySecurityIpsRequest = new ModifySecurityIpsRequest();
RuntimeOptions runtime = new RuntimeOptions()
// 超时设置,该产品部分接口调用比较慢,请您适当调整超时时间。
.setReadTimeout(50000)
.setConnectTimeout(50000);
try {
// 复制代码运行请自行打印 API 的返回值
client.modifySecurityIpsWithOptions(modifySecurityIpsRequest, runtime);
} catch (TeaException error) {
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
3、Redis 云服务
3.1、官方实例
根据官方实例,我们所需要使用到的参数有
accessKeyId
(必选): key
accessKeySecret
(必选): keySecret
endpoint
(必选): 地域节点
InstanceId
(必选) : 实例id
SecurityIps
(必选): IP白名单分组下的IP列表,最多1000个。
- IP之间以逗号隔开,格式如下:0.0.0.0/0,10.23.12.24,或者10.23.12.24/24。
- CIDR模式,无类域间路由,/24表示地址中前缀的长度,范围1-32
SecurityIpGroupName
: IP白名单分组的名称。
SecurityIpGroupAttribute
: 默认为空。用于区分不同的属性值,控制台将不显示该值为hidden的白名单分组。
ModifyMode
: 修改方式,取值:
- Cover:覆盖原白名单。
- Append:追加白名单。
- Delete:删除该白名单。
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.r_kvstore20150101.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
.setAccessKeyId(accessKeyId) // 您的 AccessKey ID
.setAccessKeySecret(accessKeySecret);// 您的 AccessKey Secret
config.endpoint = "r-kvstore.aliyuncs.com";// 访问的域名
return new com.aliyun.r_kvstore20150101.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.r_kvstore20150101.Client client = Sample.createClient("accessKeyId", "accessKeySecret");
ModifySecurityIpsRequest modifySecurityIpsRequest = new ModifySecurityIpsRequest();
RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.modifySecurityIpsWithOptions(modifySecurityIpsRequest, runtime);
} catch (TeaException error) {
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}