Guide d'AWS Aurora RDS avec Java

1. Introduction

Amazon Aurora est une base de données relationnelle compatible MySQL et PostgreSQL conçue pour le cloud qui combine les performances et la disponibilité des bases de données commerciales haut de gamme avec la simplicité et la rentabilité des bases de données open source.

Dans ce didacticiel, nous verrons comment créer et interagir avec une instance Amazon RDS avec Java, nous connecterons et exécuterons également des tests SQL sur Amazon RDS.

Commençons par mettre en place le projet.

2. Dépendances de Maven

Créons un projet Java Maven et ajoutons AWS SDK à notre projet:

 com.amazonaws aws-java-sdk 1.11.377 

Pour afficher la dernière version, consultez Maven Central.

3. Prérequis

Pour utiliser AWS SDK, nous avons besoin de quelques éléments à configurer:

  • Compte AWS
  • Informations d'identification de sécurité AWS
  • Choisir la région AWS

Nous avons besoin d'un compte Amazon Web Services . Si vous n'en avez toujours pas, allez-y et créez un compte

Les informations d'identification de sécurité AWS sont les clés d'accès qui nous permettent d'effectuer des appels par programmation aux actions d'API AWS . Nous pouvons obtenir ces informations d'identification de deux manières, soit en utilisant les informations d'identification du compte racine AWS à partir de la section des clés d'accès de la page Informations d'identification de sécurité, soit en utilisant les informations d'identification utilisateur IAM de la console IAM.

Nous devons sélectionner une ou plusieurs régions AWS dans lesquelles nous souhaitons stocker notre Amazon RDS. Gardez à l'esprit que les prix RDS varient selon les régions. Pour plus de détails, rendez-vous sur la documentation officielle.

Pour ce didacticiel, nous utiliserons la région Asie-Pacifique (Sydney) (région ap-sud-est-2 ).

4. Connectez-vous aux services Web AWS RDS

Tout d'abord, nous devons créer une connexion client pour accéder au service Web Amazon RDS.

Nous utiliserons l' interface AmazonRDS à cette fin:

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

Ensuite, configurez RDS Builder avec la région et les informations d'identification appropriées :

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

5. Instance Amazon Aurora

Créons maintenant l'instance Amazon Aurora RDS.

5.1. Créer une instance RDS

Pour créer l'instance RDS, nous devons instancier un CreateDBInstanceRequest avec les attributs suivants:

  • Identificateur d'instance de base de données unique pour tous les noms d'instances existants dans Amazon RDS
  • La classe d'instance DB spécifie la configuration pour le processeur, l'ECU, la mémoire, etc.
  • Moteur de base de données. PostgreSQL ou MySQL, nous utiliserons PostgreSQL
  • Maître de la base de données / super nom d'utilisateur
  • Mot de passe de l'utilisateur principal de la base de données
  • Nom de la base de données pour créer une base de données initiale avec le nom spécifié
  • Pour Type de stockage, spécifiez un type de volume Amazon EBS . La liste est disponible ici
  • Allocation de stockage en Gio
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); 

Créons maintenant notre première instance en appelant createDBInstance () :

amazonRDS.createDBInstance(request); 

L'instance RDS sera créée dans quelques minutes.

Nous n'obtiendrons pas l'URL du point de terminaison dans la réponse car cet appel est asynchrone.

5.2. Répertorier l'instance de base de données

Dans cette section, nous verrons comment répertorier l'instance de base de données créée.

Pour répertorier l'instance RDS, nous devons utiliser describeDBInstances de l' interface AmazonRDS :

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 du point de terminaison est l'URL de connexion de notre nouvelle instance de base de données . Cette URL sera fournie en tant qu'hôte lors de la connexion à la base de données.

5.3. Exécuter le test JDBC

Maintenant, connectons notre instance RDS et créons notre première table.

Créons un fichier db.properties et ajoutons les informations de la base de données:

db_hostname= db_username=username db_password=password db_database=mydb 

Après avoir créé le fichier, connectons-nous à l'instance RDS et créons la table nommée 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); 

Ensuite, nous insérerons et récupérerons les données de la table:

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. Supprimer l'instance

Pour supprimer une instance de base de données, nous devons générer DeleteDBInstanceRequest. Il nécessite l'identificateur d'instance de base de données et le paramètre skipFinalSnapshot.

Le skipFinalSanpshot consiste à spécifier si nous voulons prendre l'instantané avant de supprimer l'instance:

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

6. Conclusion

Dans cet article, nous nous sommes concentrés sur les bases de l'interaction avec le RDS Amazon Aurora (PostgreSQL) via Amazon SDK. Ce tutoriel s'est concentré sur PostgreSQL, il existe également d'autres options, notamment MySQL.

Bien que la méthode d'interaction reste la même dans RDS. Aurora est un choix préféré pour de nombreux clients car il est jusqu'à cinq fois plus rapide que les bases de données MySQL standard et trois fois plus rapide que les bases de données PostgreSQL standard.

Pour plus d'informations, visitez Amazon Aurora.

Et, comme toujours, le code peut être trouvé sur Github.