aws-sdk-java-v2-rds について
AWS SDK for Java 2.x で Amazon RDS と関連リソースを管理する Java 開発者向けのガイドスキルです。基本操作に加え、Spring Boot と Lambda の連携パターンを扱います。
主な機能
- 01DB インスタンスの作成・変更・削除
- 02スナップショットとパラメータグループの管理
- 03バックアップと Multi-AZ の設定
- 04インスタンス状態の監視
- 05Spring Boot と Lambda の連携パターン
活用シーン
- 01RDS データベースの作成や更新
- 02大きな変更前のスナップショット作成
- 03バックアップと高可用性の設定
- 04Lambda 関数と 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.mdlambda-integration.mdspring-boot-integration.md詳細
AWS SDK for Java v2 - RDS 管理
概要
このスキルでは、AWS SDK for Java 2.x を使用して Amazon RDS(リレーショナルデータベースサービス)を扱うための包括的なガイダンスを提供します。データベースインスタンスの管理、スナップショット、パラメータグループ、RDS の操作を網羅しています。
使用する場面
- RDS データベースインスタンスの作成、変更、削除
- DB スナップショット、パラメータグループ、設定の管理
- Multi-AZ デプロイと自動バックアップの設定
- Lambda 関数と RDS データベースの接続
- インスタンスの状態とパフォーマンスの監視
手順
Amazon RDS を使用するには、次の手順に従ってください。
- 依存関係の追加 - AWS RDS SDK の依存関係とデータベースドライバーを含めます
- RDS クライアントの作成 - 適切なリージョンと認証情報を使用して RdsClient をインスタンス化します
- DB インスタンスの作成 - 適切な設定を指定して createDBInstance() を使用します
- セキュリティの設定 - VPC セキュリティグループと暗号化を設定します
- バックアップの設定 - 自動バックアップの時間枠と保持期間を設定します
- 状態の監視 - describeDBInstances() を使用してインスタンスの状態を確認します
- スナップショットの作成 - 大きな変更を行う前に手動でスナップショットを作成します
- フェイルオーバーの処理 - 高可用性を実現するために 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();
DB インスタンスの詳細情報の取得
DescribeDbInstancesResponse response = rdsClient.describeDBInstances();
for (DBInstance instance : response.dbInstances()) {
System.out.println(instance.dbInstanceArn() + " - " + instance.dbInstanceStatus());
}
主な操作
DB インスタンスの作成
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!");
DB パラメータグループの管理
CreateDbParameterGroupRequest request = CreateDbParameterGroupRequest.builder()
.dbParameterGroupName(groupName)
.dbParameterGroupFamily("postgres15")
.description(description)
.build();
rdsClient.createDBParameterGroup(request);
DB スナップショットの管理
CreateDbSnapshotRequest request = CreateDbSnapshotRequest.builder()
.dbInstanceIdentifier(dbInstanceIdentifier)
.dbSnapshotIdentifier(snapshotIdentifier)
.build();
CreateDbSnapshotResponse response = rdsClient.createDBSnapshot(request);
統合パターン
Spring Boot との統合
Spring Boot の統合例については、references/spring-boot-integration.md を参照してください。以下の内容を含む完全な例を確認できます。
- application properties を使用した Spring Boot の設定
- RDS クライアントの Bean 設定
- サービス層の実装
- REST コントローラーの設計
- 例外処理
- テスト戦略
Lambda との統合
Lambda の統合例については、references/lambda-integration.md を参照してください。以下の内容を含む例を確認できます。
- 従来の Lambda と RDS の接続
- コネクションプーリングを使用した Lambda
- AWS Secrets Manager を使用した認証情報の管理
- RDS 管理に AWS SDK を使用する Lambda
- セキュリティ設定とベストプラクティス
高度な操作
DB インスタンスの変更
ModifyDbInstanceRequest request = ModifyDbInstanceRequest.builder()
.dbInstanceIdentifier(dbInstanceIdentifier)
.dbInstanceClass(newInstanceClass)
.applyImmediately(false)
.build();
rdsClient.modifyDBInstance(request);
DB インスタンスの削除
// 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);
}
例
検証付きの DB インスタンス作成例
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 リファレンス - API ドキュメントとデータモデルの全容
- Spring Boot との統合 - Spring Boot のパターンと例
- Lambda との統合 - Lambda 関数のパターンとベストプラクティス
エラー処理
一般的な例外、エラーレスポンスの構造、ページネーションのサポートなど、包括的なエラー処理パターンについては、API リファレンス を参照してください。
制約と警告
- インスタンス数の上限:リージョンごとに、アカウントで作成できる DB インスタンス数には上限があります
- Multi-AZ のコスト:コンピューティングコストは約 2 倍になります
- スナップショットのコスト:手動スナップショットには使用したストレージ容量に応じて料金が発生します
- 削除保護:削除保護が有効なインスタンスは削除できません
- メンテナンス時間枠:更新中はインスタンスを利用できない場合があります