Guida ad AWS Aurora RDS con Java

1. Introduzione

Amazon Aurora è un database relazionale compatibile con MySQL e PostgreSQL creato per il cloud che combina le prestazioni e la disponibilità di database commerciali di fascia alta con la semplicità e l'economicità dei database open source.

In questo tutorial, illustreremo come creare e interagire con l'istanza Amazon RDS con Java, connetteremo ed eseguiremo anche test SQL su Amazon RDS.

Cominciamo impostando il progetto.

2. Dipendenze di Maven

Creiamo un progetto Java Maven e aggiungiamo AWS SDK al nostro progetto:

 com.amazonaws aws-java-sdk 1.11.377 

Per visualizzare l'ultima versione, controlla Maven Central.

3. Prerequisiti

Per utilizzare AWS SDK, avremo bisogno di alcune cose da configurare:

  • Account AWS
  • Credenziali di sicurezza AWS
  • Scelta della regione AWS

Abbiamo bisogno di un account Amazon Web Services . Se ancora non ne hai, vai avanti e crea un account

Le credenziali di sicurezza AWS sono le chiavi di accesso che ci consentono di effettuare chiamate programmatiche alle azioni dell'API AWS . Possiamo ottenere queste credenziali in due modi, utilizzando le credenziali dell'account root AWS dalla sezione delle chiavi di accesso della pagina Credenziali di sicurezza o utilizzando le credenziali utente IAM dalla console IAM

Dobbiamo selezionare una o più regioni AWS in cui memorizzare il nostro Amazon RDS. Tieni presente che i prezzi RDS variano in base alla regione. Per maggiori dettagli, vai alla documentazione ufficiale.

Per questo tutorial, utilizzeremo Asia Pacifico (Sydney) (regione ap-sud-est-2 ).

4. Connettersi ai servizi Web AWS RDS

Innanzitutto, dobbiamo creare una connessione client per accedere al servizio Web Amazon RDS.

Useremo AmazonRDS interfaccia per questo scopo:

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

Quindi configurare RDS Builder con la regione e le credenziali appropriate :

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

5. Istanza Amazon Aurora

Ora creiamo l'istanza RDS di Amazon Aurora.

5.1. Crea istanza RDS

Per creare l'istanza RDS, dobbiamo creare un'istanza di CreateDBInstanceRequest con i seguenti attributi:

  • Identificatore istanza database univoco per tutti i nomi di istanze esistenti in Amazon RDS
  • La classe istanza database specifica la configurazione per CPU, ECU, memoria e così via dalla tabella classi istanza
  • Motore di database. PostgreSQL o MySQL, useremo PostgreSQL
  • Nome utente principale / super del database
  • Password dell'utente principale del database
  • Nome DB per creare un database iniziale con il nome specificato
  • Per Tipo di archiviazione, specifica un tipo di volume Amazon EBS . L'elenco è disponibile qui
  • Allocazione dello spazio di archiviazione 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); 

Ora creiamo la nostra prima istanza chiamando createDBInstance () :

amazonRDS.createDBInstance(request); 

L'istanza RDS verrà creata in pochi minuti.

Non otterremo l'URL dell'endpoint nella risposta poiché questa chiamata è asincrona.

5.2. Elenca istanza database

In questa sezione vedremo come elencare l'istanza database creata.

Per elencare l'istanza RDS, abbiamo bisogno di usare describeDBInstances del AmazonRDS dell'interfaccia:

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

L' URL dell'endpoint è l'URL di connessione per la nostra nuova istanza database . Questo URL verrà fornito come host durante la connessione al database.

5.3. Esegui il test JDBC

Ora colleghiamo la nostra istanza RDS e creiamo la nostra prima tabella.

Creiamo un file db.properties e aggiungiamo le informazioni sul database:

db_hostname= db_username=username db_password=password db_database=mydb 

Dopo aver creato il file, connettiamoci all'istanza RDS e creiamo la tabella denominata 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); 

Successivamente, inseriremo e recupereremo i dati dalla tabella:

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. Elimina l'istanza

Per eliminare l'istanza database, dobbiamo generare DeleteDBInstanceRequest. Richiede l'identificatore dell'istanza database e il parametro skipFinalSnapshot.

Lo skipFinalSanpshot serve a specificare se vogliamo acquisire l'istantanea prima di eliminare l'istanza:

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

6. Conclusione

In questo articolo, ci siamo concentrati sulle basi dell'interazione con Amazon Aurora (PostgreSQL) RDS tramite Amazon SDK. Questo tutorial si è concentrato su PostgreSQL, ci sono anche altre opzioni tra cui MySQL.

Sebbene il metodo di interazione rimarrà lo stesso in RDS. Aurora è una scelta preferita per molti clienti perché è fino a cinque volte più veloce dei database MySQL standard e tre volte più veloce dei database PostgreSQL standard.

Per ulteriori informazioni, visita Amazon Aurora.

E, come sempre, il codice può essere trovato su Github.