Guide pour AWS Aurora RDS avec Java

Guide de AWS Aurora RDS avec Java

1. introduction

Amazon Aurora is a MySQL and PostgreSQL compatible relational database built for the 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 allons expliquer comment créer et interagir avec une instance Amazon RDS avec Java, nous allons également connecter et exécuter des tests SQL sur Amazon RDS.

Commençons par configurer le projet.

2. Dépendances 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, cochezMaven Central.

3. Conditions préalables

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

  • Compte AWS

  • Informations d'identification de sécurité AWS

  • Choix de la région AWS

We need an Amazon Web Services account. Si vous n'en avez toujours pas, allez-y etcreate an account

AWS Security Credentialsare the access keys that allow us to make programmatic calls to AWS API actions. 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 lahttps://console.aws.amazon.com/iam/home?security_credential[Security Credentials] page or by using IAM user credentials from https://console.aws.amazon.com/iam/home? [console IAM]

We have to select an AWS region(s) où nous voulons stocker notre Amazon RDS. Gardez à l'esprit que les prix RDS varient selon les régions. Pour plus de détails, rendez-vous sur lesofficial documentation.

Pour ce didacticiel, nous utiliserons la région Asie-Pacifique (Sydney) (régionap-southeast-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’interfaceAmazonRDS à cette fin:

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

Puis configurez le commutateurRDS Builder avec lesregion etcredentials appropriés:

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 unCreateDBInstanceRequest w avec les attributs suivants:

  • Identifiant d'instance de base de données unique parmi tous les noms d'instances existants dans Amazon RDS

  • La classe d'instance DB spécifie la configuration pour le CPU, l'ECU, la mémoire, etc., à partir deInstance Class Table

  • Moteur de base de données. PostgreSQL ou MySQL, nous utiliserons PostgreSQL

  • Base de données maître / super utilisateur

  • Mot de passe 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 typeAmazon EBS volume. La liste est disponiblehere

  • Allocation de stockage en Go

CreateDBInstanceRequest request = new CreateDBInstanceRequest();
request.setDBInstanceIdentifier("example");
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 lecreateDBInstance(): _ _

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. Liste des instances de base de données

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

Pour lister l'instance RDS, nous devons utiliserdescribeDBInstances de l'interfaceAmazonRDS:

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

Endpoint URL is the connection URL for our new DB instance. 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éejdbc_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 du tableau:

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érerDeleteDBInstanceRequest.It requires the DB instance identifier and skipFinalSnapshot parameter.

LeskipFinalSanpshot is pour 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 est axé sur PostgreSQL. Il existe également d’autres options, notamment MySQL.

Bien que la méthode d'interaction reste la même sur RDS. Aurora est un choix préféré par 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, visitezAmazon Aurora.

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