mcpField
A
aws-sdk-java-v2-rds

aws-sdk-java-v2-rds

github.com/giuseppe-trisciuoglioクラウド・DevOps3653.7k 回インストール7 週間前に更新
リポジトリ

aws-sdk-java-v2-rds について

AWS SDK for Java 2.x で Amazon RDS と関連リソースを管理する Java 開発者向けのガイドスキルです。基本操作に加え、Spring Boot と Lambda の連携パターンを扱います。

主な機能

  1. 01DB インスタンスの作成・変更・削除
  2. 02スナップショットとパラメータグループの管理
  3. 03バックアップと Multi-AZ の設定
  4. 04インスタンス状態の監視
  5. 05Spring Boot と Lambda の連携パターン

活用シーン

  1. 01RDS データベースの作成や更新
  2. 02大きな変更前のスナップショット作成
  3. 03バックアップと高可用性の設定
  4. 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.md
lambda-integration.md
spring-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 を使用するには、次の手順に従ってください。

  1. 依存関係の追加 - AWS RDS SDK の依存関係とデータベースドライバーを含めます
  2. RDS クライアントの作成 - 適切なリージョンと認証情報を使用して RdsClient をインスタンス化します
  3. DB インスタンスの作成 - 適切な設定を指定して 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();
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 リファレンス を参照してください。

制約と警告

  • インスタンス数の上限:リージョンごとに、アカウントで作成できる DB インスタンス数には上限があります
  • Multi-AZ のコスト:コンピューティングコストは約 2 倍になります
  • スナップショットのコスト:手動スナップショットには使用したストレージ容量に応じて料金が発生します
  • 削除保護:削除保護が有効なインスタンスは削除できません
  • メンテナンス時間枠:更新中はインスタンスを利用できない場合があります

コメント