本教程详细介绍如何使用Alibaba Cloud SDK for Java修改RDS实例白名单(并确认修改结果)。

前提条件

在使用本教程之前,请确保已完成以下操作:
  • 使用RDS管理控制台或通过openAPI获取到想要查看日志的RDS实例ID,openAPI的相关操作,请参见DescribeDBInstances
  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-rds -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-rds</artifactId>
            <version>2.3.9</version>
        </dependency>
    </dependencies>

操作示例

import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.rds.model.v20140815.*;
import com.aliyuncs.rds.model.v20140815.DescribeDBInstanceIPArrayListResponse.DBInstanceIPArray;
import com.google.gson.Gson;

/**
 * ModifySecurityIps 修改白名单
 * DescribeDBInstanceIPArrayList 查看RDS实例IP白名单
 */
public class TestModifySecurityIps {

    // 实例ID请根据您的实际情况进行配置。
    private static String dBInstanceId = "rm-bp131g4xxxxxxx";

    public static void main(String[] args) {
        IAcsClient client = Initialization();
        // ModifySecurityIps 修改白名单。
        ModifySecurityIps(client, dBInstanceId);
        // DescribeDBInstanceIPArrayList 查看RDS实例IP白名单。
        List<DBInstanceIPArray> instanceIPArrayList = DescribeDBInstanceIPArrayList(client, dBInstanceId);
        System.out.println("--------------------现白名单配置如下--------------------");
        System.out.println(new Gson().toJson(instanceIPArrayList));
    }

    private static IAcsClient Initialization() {
        // 初始化请求参数。
        DefaultProfile profile = DefaultProfile.getProfile(
                "<your-region-id>",// 地域ID
                "<your-access-key-id>",// 您的AccessKey ID
                "<your-access-key-secret>");// 您的AccessKey Secret
        return new DefaultAcsClient(profile);
    }

    /**
     * ModifySecurityIps 修改白名单
     */
    public static void ModifySecurityIps(IAcsClient client, String id) {
        ModifySecurityIpsRequest request = new ModifySecurityIpsRequest();
        // 实例ID。
        request.setDBInstanceId(id);
        // 该实例的IP白名单,多个IP地址请以英文逗号(,)隔开,不可重复,最多1000个。支持如下两种格式:
        // IP地址形式,例如:10.23.12.24。
        // CIDR形式,例如:10.23.12.24/24(无类域间路由,24表示了地址中前缀的长度,范围为1~32)。
        request.setSecurityIps("10.23.12.24");
        // 修改方式,取值:
        // Cover:覆盖原IP白名单;
        // Append:追加IP;
        // Delete:删除IP。
        // 默认值:Cover。
        request.setModifyMode("Cover");
        try {
            ModifySecurityIpsResponse response = client.getAcsResponse(request);
            System.out.println("--------------------修改实例白名单成功--------------------");
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
    }

    /**
     * DescribeDBInstanceIPArrayList 查看RDS实例IP白名单
     */
    public static List<DBInstanceIPArray> DescribeDBInstanceIPArrayList(IAcsClient client, String id) {
        DescribeDBInstanceIPArrayListRequest request = new DescribeDBInstanceIPArrayListRequest();
        request.setDBInstanceId(id);
        try {
            DescribeDBInstanceIPArrayListResponse response = client.getAcsResponse(request);
            return response.getItems();
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
        return null;
    }

}
			

执行结果

正确的返回结果类似如下:
--------------------修改实例白名单成功--------------------
{
    "requestId": "830DA391-0995-45F8-8885-729AD7DB3DEF", 
    "taskId": "198620275"
}
--------------------现白名单配置如下--------------------
[
    {
        "dBInstanceIPArrayName": "default", 
        "dBInstanceIPArrayAttribute": "", 
        "securityIPType": "IPv4", 
        "securityIPList": "10.23.12.24", 
        "whitelistNetworkType": "MIX"
    }, 
    {
        "dBInstanceIPArrayName": "hdm_security_ips", 
        "dBInstanceIPArrayAttribute": "", 
        "securityIPType": "IPv4", 
        "securityIPList": "10.23.12.24,10.33.12.24", 
        "whitelistNetworkType": "MIX"
    }
]