Anleitung zu AWS Aurora RDS mit Java

1. Einleitung

Amazon Aurora ist eine MySQL- und PostgreSQL-kompatible relationale Datenbank für die Cloud , die die Leistung und Verfügbarkeit von kommerziellen High-End-Datenbanken mit der Einfachheit und Kosteneffizienz von Open Source-Datenbanken kombiniert.

In diesem Tutorial erfahren Sie, wie Sie eine Amazon RDS-Instanz mit Java erstellen und mit ihr interagieren. Außerdem werden SQL-Tests auf Amazon RDS verbunden und ausgeführt.

Beginnen wir mit dem Einrichten des Projekts.

2. Maven-Abhängigkeiten

Erstellen wir ein Java Maven-Projekt und fügen unserem Projekt AWS SDK hinzu:

 com.amazonaws aws-java-sdk 1.11.377 

Überprüfen Sie Maven Central, um die neueste Version anzuzeigen.

3. Voraussetzungen

Um AWS SDK verwenden zu können, müssen einige Dinge eingerichtet werden:

  • AWS-Konto
  • AWS-Sicherheitsanmeldeinformationen
  • AWS-Region auswählen

Wir benötigen ein Amazon Web Services-Konto . Wenn Sie noch keine haben, erstellen Sie ein Konto

AWS-Sicherheitsanmeldeinformationen sind die Zugriffsschlüssel, mit denen wir programmgesteuerte Aufrufe von AWS-API-Aktionen ausführen können . Wir können diese Anmeldeinformationen auf zwei Arten abrufen, entweder mithilfe der Anmeldeinformationen des AWS-Stammkontos im Abschnitt "Zugriffsschlüssel" auf der Seite "Sicherheitsanmeldeinformationen" oder mithilfe der IAM-Benutzeranmeldeinformationen über die IAM-Konsole

Wir müssen eine oder mehrere AWS-Regionen auswählen, in denen wir unser Amazon RDS speichern möchten. Beachten Sie, dass die RDS-Preise je nach Region variieren. Weitere Informationen finden Sie in der offiziellen Dokumentation.

Für dieses Tutorial verwenden wir den asiatisch-pazifischen Raum (Sydney) (Region ap-südöstlich-2 ).

4. Stellen Sie eine Verbindung zu AWS RDS Webservices her

Zunächst müssen wir eine Clientverbindung herstellen, um auf den Amazon RDS-Webdienst zugreifen zu können.

Wir werden die AmazonRDS- Schnittstelle für diesen Zweck verwenden:

AWSCredentials credentials = new BasicAWSCredentials( "", "" ); 

Konfigurieren Sie dann den RDS Builder mit der entsprechenden Region und den entsprechenden Anmeldeinformationen :

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

5. Amazon Aurora-Instanz

Jetzt erstellen wir die Amazon Aurora RDS-Instanz.

5.1. Erstellen Sie eine RDS- Instanz

Um die RDS-Instanz zu erstellen, müssen wir eine CreateDBInstanceRequest mit den folgenden Attributen instanziieren :

  • DB-Instanzkennung, die für alle vorhandenen Instanznamen in Amazon RDS eindeutig ist
  • Die DB-Instanzklasse gibt die Konfiguration für CPU, ECU, Speicher usw. in der Instanzklassentabelle an
  • Datenbankmodul. PostgreSQL oder MySQL verwenden wir PostgreSQL
  • Datenbankmaster / Super-Benutzername
  • Kennwort des Datenbank-Master-Benutzers
  • DB-Name zum Erstellen einer anfänglichen Datenbank mit dem angegebenen Namen
  • Geben Sie als Speichertyp einen Amazon EBS-Volume- Typ an. Die Liste finden Sie hier
  • Speicherzuordnung in 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); 

Jetzt erstellen wir unsere erste Instanz, indem wir createDBInstance () aufrufen :

amazonRDS.createDBInstance(request); 

Die RDS-Instanz wird in wenigen Minuten erstellt.

Die Endpunkt-URL wird in der Antwort nicht angezeigt, da dieser Aufruf asynchron ist.

5.2. Listen Sie die DB-Instanz auf

In diesem Abschnitt erfahren Sie, wie Sie die erstellte DB-Instanz auflisten.

Um die RDS - Instanz aufzulisten, müssen wir nutzen describeDBInstances der AmazonRDS Schnittstelle:

DescribeDBInstancesResult result = amazonRDS.describeDBInstances(); List 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(); }

Endpunkt- URL ist die Verbindungs-URL für unsere neue DB-Instanz . Diese URL wird beim Herstellen einer Verbindung zur Datenbank als Host bereitgestellt.

5.3. Führen Sie den JDBC-Test aus

Verbinden wir nun unsere RDS-Instanz und erstellen unsere erste Tabelle.

Erstellen wir eine Datei db.properties und fügen die Datenbankinformationen hinzu:

db_hostname= db_username=username db_password=password db_database=mydb 

Stellen Sie nach dem Erstellen der Datei eine Verbindung zur RDS-Instanz her und erstellen Sie die Tabelle mit dem Namen 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); 

Anschließend fügen wir Daten ein und rufen sie aus der Tabelle ab:

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. Löschen Sie die Instanz

Um die DB-Instanz zu löschen, müssen wir DeleteDBInstanceRequest generieren . Es erfordert die DB- Instanzkennung und den Parameter skipFinalSnapshot.

Mit skipFinalSanpshot wird angegeben, ob der Snapshot vor dem Löschen der Instanz erstellt werden soll:

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

6. Fazit

In diesem Artikel haben wir uns auf die Grundlagen der Interaktion mit dem Amazon Aurora (PostgreSQL) RDS über das Amazon SDK konzentriert. Dieses Tutorial hat sich auf PostgreSQL konzentriert. Es gibt auch andere Optionen, einschließlich MySQL.

Obwohl die Interaktionsmethode für RDS gleich bleibt. Aurora ist für viele Kunden eine bevorzugte Wahl, da es bis zu fünfmal schneller als Standard-MySQL-Datenbanken und dreimal schneller als Standard-PostgreSQL-Datenbanken ist.

Weitere Informationen finden Sie unter Amazon Aurora.

Und wie immer ist der Code auf Github zu finden.