mcpField
A
aws-sdk-java-v2-rds

aws-sdk-java-v2-rds

github.com/giuseppe-trisciuoglio云与 DevOps3653.7k 次安装7 周前更新
代码仓库

关于 aws-sdk-java-v2-rds

面向 Java 开发者的指导技能,介绍如何使用 AWS SDK for Java 2.x 管理 Amazon RDS 实例及相关资源,并涵盖 Spring Boot 和 Lambda 集成模式。

主要功能

  1. 01创建、修改和删除数据库实例
  2. 02管理快照和参数组
  3. 03配置备份与 Multi-AZ
  4. 04监控实例状态
  5. 05Spring Boot 和 Lambda 集成模式

适用场景

  1. 01创建或更新 RDS 数据库
  2. 02在重大变更前创建快照
  3. 03配置备份和高可用性
  4. 04将 Lambda 函数连接到 RDS

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-rds

安装后在 Claude Code 中输入/aws-sdk-java-v2-rds确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-reference.md
lambda-integration.md
spring-boot-integration.md

详细介绍

AWS SDK for Java v2 - RDS 管理

概述

本技能全面介绍如何使用 AWS SDK for Java 2.x 操作 Amazon RDS(关系数据库服务),涵盖数据库实例管理、快照、参数组和 RDS 操作。

使用场景

  • 创建、修改或删除 RDS 数据库实例
  • 管理数据库快照、参数组和配置
  • 设置 Multi-AZ 部署和自动备份
  • 将 Lambda 函数连接到 RDS 数据库
  • 监控实例状态和性能

说明

按照以下步骤使用 Amazon RDS:

  1. 添加依赖项 - 包含 AWS RDS SDK 依赖项和数据库驱动程序
  2. 创建 RDS 客户端 - 使用正确的区域和凭证实例化 RdsClient
  3. 创建数据库实例 - 使用 createDBInstance() 并设置适当的配置
  4. 配置安全性 - 设置 VPC 安全组和加密
  5. 设置备份 - 配置自动备份时段和保留期
  6. 监控状态 - 使用 describeDBInstances() 检查实例状态
  7. 创建快照 - 在重大更改前创建手动快照
  8. 处理故障转移 - 配置 Multi-AZ 以实现高可用性

入门

RDS 客户端设置

RdsClient 是与 Amazon RDS 交互的主要入口。

创建基本客户端:

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();

使用自定义配置的客户端:

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();
查看数据库实例
DescribeDbInstancesResponse response = rdsClient.describeDBInstances();
for (DBInstance instance : response.dbInstances()) {
    System.out.println(instance.dbInstanceArn() + " - " + instance.dbInstanceStatus());
}

主要操作

创建数据库实例
CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
    .dbInstanceIdentifier(dbInstanceIdentifier)
    .dbName(dbName)
    .engine("postgres")
    .engineVersion("15.4")
    .dbInstanceClass("db.t3.micro")
    .allocatedStorage(20)
    .masterUsername(masterUsername)
    .masterUserPassword(masterPassword)
    .publiclyAccessible(false)
    .build();

CreateDbInstanceResponse response = rdsClient.createDBInstance(request);

// VALIDATION CHECKPOINT: Wait for instance to be available
rdsClient.waiter().waitUntilDBInstanceAvailable(
    DescribeDbInstancesRequest.builder().dbInstanceIdentifier(dbInstanceIdentifier).build()
);
System.out.println("Instance " + dbInstanceIdentifier + " is available!");
管理数据库参数组
CreateDbParameterGroupRequest request = CreateDbParameterGroupRequest.builder()
    .dbParameterGroupName(groupName)
    .dbParameterGroupFamily("postgres15")
    .description(description)
    .build();
rdsClient.createDBParameterGroup(request);
管理数据库快照
CreateDbSnapshotRequest request = CreateDbSnapshotRequest.builder()
    .dbInstanceIdentifier(dbInstanceIdentifier)
    .dbSnapshotIdentifier(snapshotIdentifier)
    .build();
CreateDbSnapshotResponse response = rdsClient.createDBSnapshot(request);

集成模式

Spring Boot 集成

请参阅 references/spring-boot-integration.md,了解完整的 Spring Boot 集成示例,包括:

  • 使用应用程序属性配置 Spring Boot
  • RDS 客户端 Bean 配置
  • 服务层实现
  • REST 控制器设计
  • 异常处理
  • 测试策略
Lambda 集成

请参阅 references/lambda-integration.md,了解 Lambda 集成示例,包括:

  • 传统的 Lambda + RDS 连接
  • 使用连接池的 Lambda
  • 使用 AWS Secrets Manager 管理凭证
  • 使用 AWS SDK 管理 RDS 的 Lambda
  • 安全配置和最佳实践

高级操作

修改数据库实例
ModifyDbInstanceRequest request = ModifyDbInstanceRequest.builder()
    .dbInstanceIdentifier(dbInstanceIdentifier)
    .dbInstanceClass(newInstanceClass)
    .applyImmediately(false)
    .build();
rdsClient.modifyDBInstance(request);
删除数据库实例
// VALIDATION CHECKPOINT: Verify instance exists and check status
DBInstance instance = rdsClient.describeDBInstances(
    DescribeDbInstancesRequest.builder().dbInstanceIdentifier(dbInstanceIdentifier).build()
).dbInstances().get(0);

if ("available".equals(instance.dbInstanceStatus())) {
    DeleteDbInstanceRequest request = DeleteDbInstanceRequest.builder()
        .dbInstanceIdentifier(dbInstanceIdentifier)
        .skipFinalSnapshot(false)
        .finalDBSnapshotIdentifier(snapshotId)
        .build();
    rdsClient.deleteDBInstance(request);
}

示例

创建并验证完整的 RDS 实例
public String createSecurePostgreSQLInstance(RdsClient rdsClient,
                                            String instanceIdentifier,
                                            String dbName,
                                            String masterUsername,
                                            String masterPassword,
                                            String vpcSecurityGroupId) {
    // Create instance with security settings
    CreateDbInstanceRequest request = CreateDbInstanceRequest.builder()
        .dbInstanceIdentifier(instanceIdentifier)
        .dbName(dbName)
        .masterUsername(masterUsername)
        .masterUserPassword(masterPassword)
        .engine("postgres")
        .engineVersion("15.4")
        .dbInstanceClass("db.t3.micro")
        .allocatedStorage(20)
        .storageEncrypted(true)
        .vpcSecurityGroupIds(vpcSecurityGroupId)
        .publiclyAccessible(false)
        .multiAZ(true)
        .backupRetentionPeriod(7)
        .deletionProtection(true)
        .build();

    rdsClient.createDBInstance(request);

    // VALIDATION: Wait for instance availability
    rdsClient.waiter().waitUntilDBInstanceAvailable(
        DescribeDbInstancesRequest.builder().dbInstanceIdentifier(instanceIdentifier).build()
    );
    System.out.println("Instance " + instanceIdentifier + " is available!");
    return instanceIdentifier;
}

最佳实践

安全性:启用加密(storageEncrypted=true),使用 VPC 安全组,并禁用公有访问。

高可用性:为生产工作负载启用 Multi-AZ。

备份:配置自动备份,并将保留期设为 7 天或更长。

删除保护:为生产数据库启用 deletionProtection(true)。

资源管理:始终使用 try-with-resources 关闭客户端:

try (RdsClient rdsClient = RdsClient.builder().region(Region.US_EAST_1).build()) {
    // Use client
}

依赖项

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>rds</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.6.0</version>
</dependency>

参考文档

详细的 API 参考请参阅:

错误处理

请参阅 API 参考,了解全面的错误处理模式,包括常见异常、错误响应结构和分页支持。

限制和警告

  • 实例限制:账户对每个区域中的数据库实例数量设有限制
  • Multi-AZ 成本:计算成本约翻倍
  • 快照成本:手动快照按使用的存储量计费
  • 删除保护:无法删除启用了删除保护的实例
  • 维护时段:更新期间实例可能不可用

评论

支持 Markdown