1. 序章

Amazon Auroraは、クラウド用に構築されたMySQLおよびPostgreSQL互換のリレーショナルデータベースです。ハイエンドの商用データベースのパフォーマンスと可用性を、オープンソースデータベースのシンプルさと費用対効果と組み合わせています。

このチュートリアルでは、Javaを使用してAmazon RDSインスタンスを作成および操作する方法について説明します。また、AmazonRDSでSQLテストを接続して実行します。

プロジェクトを設定することから始めましょう。

2. Mavenの依存関係

Java Mavenプロジェクトを作成し、AWSSDKをプロジェクトに追加しましょう。

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.11.377</version>
</dependency>

最新バージョンを表示するには、 MavenCentralを確認してください。

3. 前提条件

AWS SDKを使用するには、セットアップするものがいくつか必要です。

  • AWSアカウント
  • AWSセキュリティクレデンシャル
  • AWSリージョンの選択

アマゾンウェブサービスアカウントが必要です。 それでもまだ持っていない場合は、先に進んでアカウントを作成してください

AWSセキュリティクレデンシャルは、AWSAPIアクションへのプログラムによる呼び出しを可能にするアクセスキーです。 これらのクレデンシャルは、セキュリティクレデンシャルページのアクセスキーセクションからAWSルートアカウントクレデンシャルを使用するか、IAMコンソールからIAMユーザークレデンシャルを使用する2つの方法で取得できます。

AmazonRDSを保存するAWSリージョンを選択する必要があります。 RDSの価格は地域によって異なることに注意してください。 詳細については、公式ドキュメントをご覧ください。

このチュートリアルでは、アジアパシフィック(シドニー)(リージョン ap-southeast-2 )を使用します。

4. AWSRDSWebサービスに接続します

まず、AmazonRDSWebサービスにアクセスするためのクライアント接続を作成する必要があります。

この目的のためにAmazonRDSインターフェースを使用します。

AWSCredentials credentials = new BasicAWSCredentials(
  "<AWS accesskey>", 
  "<AWS secretkey>"
);

次に、適切なリージョンおよび資格情報を使用して RDSBuilderを構成します。

AmazonRDSClientBuilder.standard().withCredentials(credentials)
  .withRegion(Regions.AP_SOUTHEAST_2)
  .build();

5. AmazonAuroraインスタンス

それでは、AmazonAuroraRDSインスタンスを作成しましょう。

5.1. RDSインスタンスを作成します

RDSインスタンスを作成するには、次の属性を使用してCreateDBInstanceRequestをインスタンス化する必要があります。

  • AmazonRDSの既存のすべてのインスタンス名で一意のDBインスタンス識別子
  • DBインスタンスクラスは、インスタンスクラステーブルからCPU、ECU、メモリなどの構成を指定します
  • データベースエンジン。 PostgreSQLまたはMySQL、PostgreSQLを使用します
  • データベースマスター/スーパーユーザー名
  • データベースマスターユーザーのパスワード
  • 指定された名前で初期データベースを作成するためのDB名
  • ストレージタイプには、AmazonEBSボリュームタイプを指定します。 リストはこちらから入手できます。
  • GiBでのストレージ割り当て
CreateDBInstanceRequest request = new CreateDBInstanceRequest();
request.setDBInstanceIdentifier("baeldung");   
request.setDBInstanceClass("db.t2.micro");
request.setEngine("postgres");
request.setMultiAZ(false);
request.setMasterUsername("username");
request.setMasterUserPassword("password");
request.setDBName("mydb");       
request.setStorageType("gp2");   
request.setAllocatedStorage(10);

次に、 createDBInstance() を呼び出して、最初のインスタンスを作成しましょう。

amazonRDS.createDBInstance(request);

RDSインスタンスは数分で作成されます。

この呼び出しは非同期であるため、応答でエンドポイントURLを取得しません。

5.2. DBインスタンスの一覧表示

このセクションでは、作成されたDBインスタンスを一覧表示する方法を説明します。

RDSインスタンスを一覧表示するには、AmazonRDSインターフェースのdescribeDBInstancesを使用する必要があります。

DescribeDBInstancesResult result = amazonRDS.describeDBInstances();
List<DBInstance> instances = result.getDBInstances();
for (DBInstance instance : instances) {
    // Information about each RDS instance
    String identifier = instance.getDBInstanceIdentifier();
    String engine = instance.getEngine();
    String status = instance.getDBInstanceStatus();
    Endpoint endpoint = instance.getEndpoint();
}

Endpoint URLは、新しいDBインスタンスの接続URLです。 このURLは、データベースへの接続時にホストとして提供されます。

5.3. JDBCテストを実行する

次に、RDSインスタンスを接続して、最初のテーブルを作成しましょう。

db.propertiesファイルを作成し、データベース情報を追加しましょう。

db_hostname=<Endpoint URL>
db_username=username
db_password=password
db_database=mydb

ファイルを作成したら、RDSインスタンスに接続して、jdbc_testという名前のテーブルを作成しましょう。

Properties prop = new Properties();
InputStream input = AwsRdsDemo.class.getClassLoader().getResourceAsStream("db.properties");
prop.load(input);
String db_hostname = prop.getProperty("db_hostname");
String db_username = prop.getProperty("db_username");
String db_password = prop.getProperty("db_password");
String db_database = prop.getProperty("db_database");
Connection conn = DriverManager.getConnection(jdbc_url, db_username, db_password);
Statement statement = conn.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS jdbc_test (id SERIAL PRIMARY KEY, content VARCHAR(80))";
statement.executeUpdate(sql);

その後、テーブルにデータを挿入して取得します。

PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO jdbc_test (content) VALUES (?)");
String content = "" + UUID.randomUUID();
preparedStatement.setString(1, content);
preparedStatement.executeUpdate();
String sql = "SELECT  count(*) as count FROM jdbc_test";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
    String count = resultSet.getString("count");
    Logger.log("Total Records: " + count);
}

5.4. インスタンスを削除します

DBインスタンスを削除するには、生成する必要があります DeleteDBInstanceRequest。 DBインスタンス識別子とskipFinalSnapshotパラメーターが必要です。

skipFinalSanpshot は、インスタンスを削除する前にスナップショットを取得するかどうかを指定します。

DeleteDBInstanceRequest request = new DeleteDBInstanceRequest();
request.setDBInstanceIdentifier(identifier);
request.setSkipFinalSnapshot(true);
DBInstance instance = amazonRDS.deleteDBInstance(request);

6. 結論

この記事では、AmazonSDKを介したAmazonAurora(PostgreSQL)RDSとのやり取りの基本に焦点を当てました。 このチュートリアルはPostgreSQLに焦点を当てており、MySQLを含む他のオプションもあります。

相互作用の方法はRDS全体で同じままですが。 Auroraは、標準のMySQLデータベースよりも最大5倍、標準のPostgreSQLデータベースよりも3倍高速であるため、多くのお客様に推奨される選択肢です。

詳細については、 AmazonAuroraをご覧ください。

そして、いつものように、コードはGithubにあります。