aws-sdk-java-v2-rds

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

AWS SDK for Java v2 - RDS Management

AWS SDK for Java v2 - RDS管理

This skill provides comprehensive guidance for working with Amazon RDS (Relational Database Service) using the AWS SDK for Java 2.x, covering database instance management, snapshots, parameter groups, and RDS operations.
本技能提供了使用AWS SDK for Java 2.x操作Amazon RDS(关系型数据库服务)的全面指南,涵盖数据库实例管理、快照、参数组及各类RDS操作。

When to Use This Skill

何时使用本技能

Use this skill when:
  • Creating and managing RDS database instances (PostgreSQL, MySQL, Aurora, etc.)
  • Taking and restoring database snapshots
  • Managing DB parameter groups and configurations
  • Querying RDS instance metadata and status
  • Setting up Multi-AZ deployments
  • Configuring automated backups
  • Managing security groups for RDS
  • Connecting Lambda functions to RDS databases
  • Implementing RDS IAM authentication
  • Monitoring RDS instances and metrics
在以下场景中使用本技能:
  • 创建和管理RDS数据库实例(PostgreSQL、MySQL、Aurora等)
  • 创建和恢复数据库快照
  • 管理DB参数组与配置
  • 查询RDS实例元数据与状态
  • 搭建多可用区(Multi-AZ)部署
  • 配置自动备份
  • 管理RDS安全组
  • 连接Lambda函数与RDS数据库
  • 实现RDS IAM认证
  • 监控RDS实例与指标

Getting Started

快速入门

RDS Client Setup

RDS客户端设置

The
RdsClient
is the main entry point for interacting with Amazon RDS.
Basic Client Creation:
java
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rds.RdsClient;

RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_EAST_1)
    .build();

// Use client
describeInstances(rdsClient);

// Always close the client
rdsClient.close();
Client with Custom Configuration:
java
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.http.apache.ApacheHttpClient;

RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_WEST_2)
    .credentialsProvider(ProfileCredentialsProvider.create("myprofile"))
    .httpClient(ApacheHttpClient.builder()
        .connectionTimeout(Duration.ofSeconds(30))
        .socketTimeout(Duration.ofSeconds(60))
        .build())
    .build();
RdsClient
是与Amazon RDS交互的主要入口。
基础客户端创建:
java
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rds.RdsClient;

RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_EAST_1)
    .build();

// 使用客户端
describeInstances(rdsClient);

// 务必关闭客户端
rdsClient.close();
自定义配置客户端:
java
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.http.apache.ApacheHttpClient;

RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_WEST_2)
    .credentialsProvider(ProfileCredentialsProvider.create("myprofile"))
    .httpClient(ApacheHttpClient.builder()
        .connectionTimeout(Duration.ofSeconds(30))
        .socketTimeout(Duration.ofSeconds(60))
        .build())
    .build();

Describing DB Instances

描述DB实例

Retrieve information about existing RDS instances.
List All DB Instances:
java
public static void describeInstances(RdsClient rdsClient) {
    try {
        DescribeDbInstancesResponse response = rdsClient.describeDBInstances();
        List<DBInstance> instanceList = response.dbInstances();

        for (DBInstance instance : instanceList) {
            System.out.println("Instance ARN: " + instance.dbInstanceArn());
            System.out.println("Engine: " + instance.engine());
            System.out.println("Status: " + instance.dbInstanceStatus());
            System.out.println("Endpoint: " + instance.endpoint().address());
            System.out.println("Port: " + instance.endpoint().port());
            System.out.println("---");
        }
    } catch (RdsException e) {
        System.err.println(e.getMessage());
        System.exit(1);
    }
}
检索现有RDS实例的信息。
列出所有DB实例:
java
public static void describeInstances(RdsClient rdsClient) {
    try {
        DescribeDbInstancesResponse response = rdsClient.describeDBInstances();
        List<DBInstance> instanceList = response.dbInstances();

        for (DBInstance instance : instanceList) {
            System.out.println("Instance ARN: " + instance.dbInstanceArn());
            System.out.println("Engine: " + instance.engine());
            System.out.println("Status: " + instance.dbInstanceStatus());
            System.out.println("Endpoint: " + instance.endpoint().address());
            System.out.println("Port: " + instance.endpoint().port());
            System.out.println("---");
        }
    } catch (RdsException e) {
        System.err.println(e.getMessage());
        System.exit(1);
    }
}

Key Operations

核心操作

Creating DB Instances

创建DB实例

Create new RDS database instances with various configurations.
Create Basic DB Instance:
java
public static String createDBInstance(RdsClient rdsClient,
                                     String dbInstanceIdentifier,
                                     String dbName,
                                     String masterUsername,
                                     String masterPassword) {
    try {
        CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbName(dbName)
            .engine("postgres")
            .engineVersion("14.7")
            .dbInstanceClass("db.t3.micro")
            .allocatedStorage(20)
            .masterUsername(masterUsername)
            .masterUserPassword(masterPassword)
            .publiclyAccessible(false)
            .build();

        CreateDbInstanceResponse response = rdsClient.createDBInstance(request);
        System.out.println("Creating DB instance: " + response.dbInstance().dbInstanceArn());

        return response.dbInstance().dbInstanceArn();
    } catch (RdsException e) {
        System.err.println("Error creating instance: " + e.getMessage());
        throw e;
    }
}
创建具有多种配置的新RDS数据库实例。
创建基础DB实例:
java
public static String createDBInstance(RdsClient rdsClient,
                                     String dbInstanceIdentifier,
                                     String dbName,
                                     String masterUsername,
                                     String masterPassword) {
    try {
        CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbName(dbName)
            .engine("postgres")
            .engineVersion("14.7")
            .dbInstanceClass("db.t3.micro")
            .allocatedStorage(20)
            .masterUsername(masterUsername)
            .masterUserPassword(masterPassword)
            .publiclyAccessible(false)
            .build();

        CreateDbInstanceResponse response = rdsClient.createDBInstance(request);
        System.out.println("Creating DB instance: " + response.dbInstance().dbInstanceArn());

        return response.dbInstance().dbInstanceArn();
    } catch (RdsException e) {
        System.err.println("Error creating instance: " + e.getMessage());
        throw e;
    }
}

Managing DB Parameter Groups

管理DB参数组

Create and manage custom parameter groups for database configuration.
Create DB Parameter Group:
java
public static void createDBParameterGroup(RdsClient rdsClient,
                                         String groupName,
                                         String description) {
    try {
        CreateDbParameterGroupRequest request = CreateDbParameterGroupRequest.builder()
            .dbParameterGroupName(groupName)
            .dbParameterGroupFamily("postgres15")
            .description(description)
            .build();

        CreateDbParameterGroupResponse response = rdsClient.createDBParameterGroup(request);
        System.out.println("Created parameter group: " + response.dbParameterGroup().dbParameterGroupName());
    } catch (RdsException e) {
        System.err.println("Error creating parameter group: " + e.getMessage());
        throw e;
    }
}
创建和管理用于数据库配置的自定义参数组。
创建DB参数组:
java
public static void createDBParameterGroup(RdsClient rdsClient,
                                         String groupName,
                                         String description) {
    try {
        CreateDbParameterGroupRequest request = CreateDbParameterGroupRequest.builder()
            .dbParameterGroupName(groupName)
            .dbParameterGroupFamily("postgres15")
            .description(description)
            .build();

        CreateDbParameterGroupResponse response = rdsClient.createDBParameterGroup(request);
        System.out.println("Created parameter group: " + response.dbParameterGroup().dbParameterGroupName());
    } catch (RdsException e) {
        System.err.println("Error creating parameter group: " + e.getMessage());
        throw e;
    }
}

Managing DB Snapshots

管理DB快照

Create, restore, and manage database snapshots.
Create DB Snapshot:
java
public static String createDBSnapshot(RdsClient rdsClient,
                                     String dbInstanceIdentifier,
                                     String snapshotIdentifier) {
    try {
        CreateDbSnapshotRequest request = CreateDbSnapshotRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbSnapshotIdentifier(snapshotIdentifier)
            .build();

        CreateDbSnapshotResponse response = rdsClient.createDBSnapshot(request);
        System.out.println("Creating snapshot: " + response.dbSnapshot().dbSnapshotIdentifier());

        return response.dbSnapshot().dbSnapshotArn();
    } catch (RdsException e) {
        System.err.println("Error creating snapshot: " + e.getMessage());
        throw e;
    }
}
创建、恢复和管理数据库快照。
创建DB快照:
java
public static String createDBSnapshot(RdsClient rdsClient,
                                     String dbInstanceIdentifier,
                                     String snapshotIdentifier) {
    try {
        CreateDbSnapshotRequest request = CreateDbSnapshotRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbSnapshotIdentifier(snapshotIdentifier)
            .build();

        CreateDbSnapshotResponse response = rdsClient.createDBSnapshot(request);
        System.out.println("Creating snapshot: " + response.dbSnapshot().dbSnapshotIdentifier());

        return response.dbSnapshot().dbSnapshotArn();
    } catch (RdsException e) {
        System.err.println("Error creating snapshot: " + e.getMessage());
        throw e;
    }
}

Integration Patterns

集成模式

Spring Boot Integration

Spring Boot集成

Refer to references/spring-boot-integration.md for complete Spring Boot integration examples including:
  • Spring Boot configuration with application properties
  • RDS client bean configuration
  • Service layer implementation
  • REST controller design
  • Exception handling
  • Testing strategies
完整的Spring Boot集成示例请参考references/spring-boot-integration.md,包括:
  • 使用应用属性进行Spring Boot配置
  • RDS客户端Bean配置
  • 服务层实现
  • REST控制器设计
  • 异常处理
  • 测试策略

Lambda Integration

Lambda集成

Refer to references/lambda-integration.md for Lambda integration examples including:
  • Traditional Lambda + RDS connections
  • Lambda with connection pooling
  • Using AWS Secrets Manager for credentials
  • Lambda with AWS SDK for RDS management
  • Security configuration and best practices
Lambda集成示例请参考references/lambda-integration.md,包括:
  • 传统Lambda + RDS连接
  • 带连接池的Lambda
  • 使用AWS Secrets Manager管理凭证
  • 结合AWS SDK的Lambda RDS管理
  • 安全配置与最佳实践

Advanced Operations

高级操作

Modifying DB Instances

修改DB实例

Update existing RDS instances.
java
public static void modifyDBInstance(RdsClient rdsClient,
                                   String dbInstanceIdentifier,
                                   String newInstanceClass) {
    try {
        ModifyDbInstanceRequest request = ModifyDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbInstanceClass(newInstanceClass)
            .applyImmediately(false) // Apply during maintenance window
            .build();

        ModifyDbInstanceResponse response = rdsClient.modifyDBInstance(request);
        System.out.println("Modified instance: " + response.dbInstance().dbInstanceIdentifier());
        System.out.println("New class: " + response.dbInstance().dbInstanceClass());
    } catch (RdsException e) {
        System.err.println("Error modifying instance: " + e.getMessage());
        throw e;
    }
}
更新现有RDS实例。
java
public static void modifyDBInstance(RdsClient rdsClient,
                                   String dbInstanceIdentifier,
                                   String newInstanceClass) {
    try {
        ModifyDbInstanceRequest request = ModifyDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .dbInstanceClass(newInstanceClass)
            .applyImmediately(false) // 在维护窗口应用
            .build();

        ModifyDbInstanceResponse response = rdsClient.modifyDBInstance(request);
        System.out.println("Modified instance: " + response.dbInstance().dbInstanceIdentifier());
        System.out.println("New class: " + response.dbInstance().dbInstanceClass());
    } catch (RdsException e) {
        System.err.println("Error modifying instance: " + e.getMessage());
        throw e;
    }
}

Deleting DB Instances

删除DB实例

Delete RDS instances with optional final snapshot.
java
public static void deleteDBInstanceWithSnapshot(RdsClient rdsClient,
                                               String dbInstanceIdentifier,
                                               String finalSnapshotIdentifier) {
    try {
        DeleteDbInstanceRequest request = DeleteDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .skipFinalSnapshot(false)
            .finalDBSnapshotIdentifier(finalSnapshotIdentifier)
            .build();

        DeleteDbInstanceResponse response = rdsClient.deleteDBInstance(request);
        System.out.println("Deleting instance: " + response.dbInstance().dbInstanceIdentifier());
    } catch (RdsException e) {
        System.err.println("Error deleting instance: " + e.getMessage());
        throw e;
    }
}
删除RDS实例,可选择创建最终快照。
java
public static void deleteDBInstanceWithSnapshot(RdsClient rdsClient,
                                               String dbInstanceIdentifier,
                                               String finalSnapshotIdentifier) {
    try {
        DeleteDbInstanceRequest request = DeleteDbInstanceRequest.builder()
            .dbInstanceIdentifier(dbInstanceIdentifier)
            .skipFinalSnapshot(false)
            .finalDBSnapshotIdentifier(finalSnapshotIdentifier)
            .build();

        DeleteDbInstanceResponse response = rdsClient.deleteDBInstance(request);
        System.out.println("Deleting instance: " + response.dbInstance().dbInstanceIdentifier());
    } catch (RdsException e) {
        System.err.println("Error deleting instance: " + e.getMessage());
        throw e;
    }
}

Best Practices

最佳实践

Security

安全

Always use encryption:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .storageEncrypted(true)
    .kmsKeyId("arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012")
    .build();
Use VPC security groups:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .vpcSecurityGroupIds("sg-12345678")
    .publiclyAccessible(false)
    .build();
始终使用加密:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .storageEncrypted(true)
    .kmsKeyId("arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012")
    .build();
使用VPC安全组:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .vpcSecurityGroupIds("sg-12345678")
    .publiclyAccessible(false)
    .build();

High Availability

高可用性

Enable Multi-AZ for production:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .multiAZ(true)
    .build();
生产环境启用多可用区:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .multiAZ(true)
    .build();

Backups

备份

Configure automated backups:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .backupRetentionPeriod(7)
    .preferredBackupWindow("03:00-04:00")
    .build();
配置自动备份:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .backupRetentionPeriod(7)
    .preferredBackupWindow("03:00-04:00")
    .build();

Monitoring

监控

Enable CloudWatch logs:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .enableCloudwatchLogsExports("postgresql", "upgrade")
    .build();
启用CloudWatch日志:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .enableCloudwatchLogsExports("postgresql", "upgrade")
    .build();

Cost Optimization

成本优化

Use appropriate instance class:
java
// Development
.dbInstanceClass("db.t3.micro")

// Production
.dbInstanceClass("db.r5.large")
使用合适的实例类型:
java
// 开发环境
.dbInstanceClass("db.t3.micro")

// 生产环境
.dbInstanceClass("db.r5.large")

Deletion Protection

删除保护

Enable for production databases:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .deletionProtection(true)
    .build();
生产数据库启用删除保护:
java
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .deletionProtection(true)
    .build();

Resource Management

资源管理

Always close clients:
java
try (RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_EAST_1)
    .build()) {
    // Use client
} // Automatically closed
务必关闭客户端:
java
try (RdsClient rdsClient = RdsClient.builder()
    .region(Region.US_EAST_1)
    .build()) {
    // 使用客户端
} // 自动关闭

Dependencies

依赖

Maven Dependencies

Maven依赖

xml
<dependencies>
    <!-- AWS SDK for RDS -->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>rds</artifactId>
        <version>2.20.0</version> // Use the latest version available
    </dependency>

    <!-- PostgreSQL Driver -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.6.0</version> // Use the correct version available
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>
xml
<dependencies>
    <!-- AWS SDK for RDS -->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>rds</artifactId>
        <version>2.20.0</version> <!-- 使用最新可用版本 -->
    </dependency>

    <!-- PostgreSQL驱动 -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.6.0</version> <!-- 使用可用的正确版本 -->
    </dependency>

    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>

Gradle Dependencies

Gradle依赖

gradle
dependencies {
    // AWS SDK for RDS
    implementation 'software.amazon.awssdk:rds:2.20.0'

    // PostgreSQL Driver
    implementation 'org.postgresql:postgresql:42.6.0'

    // MySQL Driver
    implementation 'mysql:mysql-connector-java:8.0.33'
}
gradle
dependencies {
    // AWS SDK for RDS
    implementation 'software.amazon.awssdk:rds:2.20.0'

    // PostgreSQL驱动
    implementation 'org.postgresql:postgresql:42.6.0'

    // MySQL驱动
    implementation 'mysql:mysql-connector-java:8.0.33'
}

Reference Documentation

参考文档

For detailed API reference, see:
  • API Reference - Complete API documentation and data models
  • Spring Boot Integration - Spring Boot patterns and examples
  • Lambda Integration - Lambda function patterns and best practices
如需详细API参考,请查看:
  • API参考 - 完整的API文档与数据模型
  • Spring Boot集成 - Spring Boot模式与示例
  • Lambda集成 - Lambda函数模式与最佳实践

Error Handling

错误处理

See API Reference for comprehensive error handling patterns including common exceptions, error response structure, and pagination support.
完整的错误处理模式请参考API参考,包括常见异常、错误响应结构及分页支持。

Performance Considerations

性能考量

  • Use connection pooling for multiple database operations
  • Implement retry logic for transient failures
  • Monitor CloudWatch metrics for performance optimization
  • Use appropriate instance types for workload requirements
  • Enable Performance Insights for database optimization
  • 对多数据库操作使用连接池
  • 为瞬时故障实现重试逻辑
  • 监控CloudWatch指标以优化性能
  • 根据工作负载需求选择合适的实例类型
  • 启用Performance Insights进行数据库优化

Support

支持

For support with AWS RDS operations using AWS SDK for Java 2.x:
如需获取使用AWS SDK for Java 2.x进行AWS RDS操作的支持: