Guia do AWS Aurora RDS com Java

Guia do AWS Aurora RDS com Java

1. Introdução

Amazon Aurora is a MySQL and PostgreSQL compatible relational database built for the cloud que combina o desempenho e a disponibilidade de bancos de dados comerciais de ponta com a simplicidade e a economia dos bancos de dados de código aberto.

Neste tutorial, vamos cobrir como criar e interagir com a instância do Amazon RDS com Java, também vamos conectar e executar testes de SQL no Amazon RDS.

Vamos começar configurando o projeto.

2. Dependências do Maven

Vamos criar um projeto Java Maven e adicionar AWS SDK ao nosso projeto:


    com.amazonaws
    aws-java-sdk
    1.11.377

Para ver a versão mais recente, verifiqueMaven Central.

3. Pré-requisitos

Para usar o AWS SDK, precisaremos de algumas coisas para configurar:

  • Conta da AWS

  • Credenciais de segurança da AWS

  • Escolhendo a região da AWS

We need an Amazon Web Services account. Se você ainda não tem nenhum, vá em frente ecreate an account

AWS Security Credentialsare the access keys that allow us to make programmatic calls to AWS API actions. Podemos obter essas credenciais de duas maneiras, usando as credenciais da conta raiz da AWS na seção de chaves de acesso dohttps://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) onde queremos armazenar nosso Amazon RDS. Lembre-se de que os preços do RDS variam de acordo com a região. Para obter mais detalhes, vá paraofficial documentation.

Para este tutorial, usaremos Ásia-Pacífico (Sydney) (regiãoap-southeast-2).

4. Conectar-se aos serviços da Web do AWS RDS

Primeiro, precisamos criar uma conexão do cliente para acessar o serviço web Amazon RDS.

UsaremosAmazonRDS interface para esta finalidade:

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

Em seguida, configure oRDS Builder com osregionecredentials apropriados:

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

5. Instância do Amazon Aurora

Agora vamos criar a instância Amazon Aurora RDS.

5.1. Criar instância do RDS

Para criar a instância RDS, precisamos instanciar umCreateDBInstanceRequest com os seguintes atributos:

  • Identificador de instância de banco de dados exclusivo em todos os nomes de instâncias existentes no Amazon RDS

  • A classe de instância de banco de dados especifica a configuração para CPU, ECU, memória, etc., deInstance Class Table

  • Mecanismo de Banco de Dados. PostgreSQL ou MySQL, usaremos PostgreSQL

  • Mestre do banco de dados / superusuário

  • Senha do usuário principal do banco de dados

  • Nome do banco de dados para criar um banco de dados inicial com o nome especificado

  • Para Tipo de armazenamento, especifique um tipo deAmazon EBS volume. A lista está disponívelhere

  • Alocação de armazenamento no GiB

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

Agora, vamos criar nossa primeira instância chamandocreateDBInstance(): _ _

amazonRDS.createDBInstance(request);

A instância do RDS será criada em alguns minutos.

Não obteremos o URL do endpoint na resposta, pois esta chamada é assíncrona.

5.2. Listar instância do banco de dados

Nesta seção, veremos como listar a instância de banco de dados criada.

Para listar a instância RDS, precisamos usardescribeDBInstances da 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. Este URL será fornecido como host durante a conexão com o banco de dados.

5.3. Execute o teste JDBC

Agora vamos conectar nossa instância RDS e criar nossa primeira tabela.

Vamos criar um arquivo db.properties e adicionar as informações do banco de dados:

db_hostname=
db_username=username
db_password=password
db_database=mydb

Depois de criar o arquivo, vamos nos conectar à instância RDS e criar a tabela chamadajdbc_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);

Depois, inseriremos e recuperaremos os dados da tabela:

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. Excluir a instância

Para excluir a instância do banco de dados, precisamos gerarDeleteDBInstanceRequest.It requires the DB instance identifier and skipFinalSnapshot parameter.

OskipFinalSanpshot is para especificar se queremos tirar o instantâneo antes de excluir a instância:

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

6. Conclusão

Neste artigo, nos concentramos nos conceitos básicos de interação com o Amazon Aurora (PostgreSQL) RDS via Amazon SDK. Este tutorial se concentrou no PostgreSQL. Também existem outras opções, incluindo o MySQL.

Embora o método de interação permaneça o mesmo no RDS. O Aurora é a escolha preferida para muitos clientes, pois é até cinco vezes mais rápido que os bancos de dados MySQL padrão e três vezes mais rápido que os bancos de dados PostgreSQL padrão.

Para mais informações, visiteAmazon Aurora.

E, como sempre, o código pode ser encontradoover on Github.