Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Questo argomento fornisce istruzioni per creare un Amazon RDS utilizzando la console Elastic Beanstalk. Puoi utilizzare un'istanza DB di Amazon Relational Database Service (RDSAmazon) per archiviare i dati raccolti e modificati dall'applicazione. Il database può essere collegato all'ambiente e gestito da Elastic Beanstalk oppure può essere creato e gestito esternamente.
Se utilizzi Amazon RDS per la prima volta, aggiungi un'istanza DB a un ambiente di test utilizzando la console Elastic Beanstalk e verifica che l'applicazione sia in grado di connettersi ad essa.
Per aggiungere un'istanza database al tuo ambiente
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
Nel pannello di navigazione, selezionare Configuration (Configurazione).
-
Nella categoria di configurazione del Database, scegliere Edit (Modifica).
-
Scegliere un motore di database e immettere un nome utente e una password.
-
Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.
L'aggiunta di un'istanza database richiede circa 10 minuti. Quando l'aggiornamento dell'ambiente è completo, il nome host dell'istanza database e altre informazioni di connessione sono disponibili per la tua applicazione tramite le seguenti proprietà dell'ambiente:
Nome proprietà | Descrizione | Valore proprietà |
---|---|---|
|
Il nome host dell'istanza DB. |
Nella scheda Connettività e sicurezza della RDS console Amazon: Endpoint. |
|
La porta su cui l'istanza database accetta le connessioni. Il valore predefinito varia tra i motori di database. |
Nella scheda Connettività e sicurezza della RDS console Amazon: Porta. |
|
Il nome del database, |
Nella scheda Configurazione della RDS console Amazon: DB Name. |
|
Il nome utente configurato per il database. |
Nella scheda Configurazione della RDS console Amazon: nome utente principale. |
|
La password configurata per il database. |
Non disponibile come riferimento nella RDS console Amazon. |
Per ulteriori informazioni sulla configurazione di una istanza database interna, consulta Aggiunta di un database all'ambiente Elastic Beanstalk. Per istruzioni su come configurare un database esterno per l'uso con Elastic Beanstalk, consulta Utilizzo di Elastic Beanstalk con Amazon RDS.
Per connetterti al database, aggiungi il JAR file del driver appropriato all'applicazione, carica la classe del driver nel codice e crea un oggetto di connessione con le proprietà di ambiente fornite da Elastic Beanstalk.
Sections
Scaricamento del driver JDBC
Avrai bisogno del JAR file del JDBC driver per il motore DB che scegli. Salvate il JAR file nel codice sorgente e includetelo nel classpath quando compilate la classe che crea connessioni al database.
Puoi trovare il driver più recente per il motore di database nelle seguenti posizioni:
-
Oracle SE-1 — Driver Oracle JDBC
-
SQLServer — Microsoft JDBC Driver
Per utilizzare il JDBC driver, chiama Class.forName()
per caricarlo prima di creare la connessione DriverManager.getConnection()
inclusa nel codice.
JDBCutilizza una stringa di connessione nel seguente formato:
jdbc:driver
://hostname
:port
/dbName
?user=userName
&password=password
Puoi recuperare il nome host, la porta, il nome del database, il nome utente e la password dalle variabili di ambiente che Elastic Beanstalk fornisce alla tua applicazione. Il nome del driver è specifico per il tuo tipo di database e per la versione del driver. Di seguito vengono riportati esempi di nomi di driver:
-
mysql
per My SQL -
postgresql
per Postgre SQL -
oracle:thin
per Oracle Thin -
oracle:oci
per Oracle OCI -
oracle:oci8
per Oracle OCI 8 -
oracle:kprb
per Oracle KPRB -
sqlserver
per SQL Server
Connessione a un database (piattaforme Java SE)
In un ambiente Java SE, utilizza System.getenv()
per leggere le variabili di connessione dall'ambiente. Il codice di esempio seguente mostra una classe che crea una connessione a un database Postgre. SQL
private static Connection getRemoteConnection() {
if (System.getenv("RDS_HOSTNAME") != null) {
try {
Class.forName("org.postgresql.Driver");
String dbName = System.getenv("RDS_DB_NAME");
String userName = System.getenv("RDS_USERNAME");
String password = System.getenv("RDS_PASSWORD");
String hostname = System.getenv("RDS_HOSTNAME");
String port = System.getenv("RDS_PORT");
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + password;
logger.trace("Getting remote connection with connection string from environment variables.");
Connection con = DriverManager.getConnection(jdbcUrl);
logger.info("Remote connection successful.");
return con;
}
catch (ClassNotFoundException e) { logger.warn(e.toString());}
catch (SQLException e) { logger.warn(e.toString());}
}
return null;
}
Connessione a un database (piattaforme Tomcat)
In un ambiente Tomcat, le proprietà dell'ambiente vengono fornite come proprietà di sistema accessibili con System.getProperty()
.
Il codice di esempio seguente mostra una classe che crea una connessione a un database SQL Postgre.
private static Connection getRemoteConnection() {
if (System.getProperty("RDS_HOSTNAME") != null) {
try {
Class.forName("org.postgresql.Driver");
String dbName = System.getProperty("RDS_DB_NAME");
String userName = System.getProperty("RDS_USERNAME");
String password = System.getProperty("RDS_PASSWORD");
String hostname = System.getProperty("RDS_HOSTNAME");
String port = System.getProperty("RDS_PORT");
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + password;
logger.trace("Getting remote connection with connection string from environment variables.");
Connection con = DriverManager.getConnection(jdbcUrl);
logger.info("Remote connection successful.");
return con;
}
catch (ClassNotFoundException e) { logger.warn(e.toString());}
catch (SQLException e) { logger.warn(e.toString());}
}
return null;
}
Se hai problemi a stabilire una connessione o a eseguire SQL istruzioni, prova a inserire il codice seguente in un JSP file. Questo codice si connette a un'istanza database, crea una tabella e scrive su di essa.
<%@ page import="java.sql.*" %>
<%
// Read RDS connection information from the environment
String dbName = System.getProperty("RDS_DB_NAME");
String userName = System.getProperty("RDS_USERNAME");
String password = System.getProperty("RDS_PASSWORD");
String hostname = System.getProperty("RDS_HOSTNAME");
String port = System.getProperty("RDS_PORT");
String jdbcUrl = "jdbc:mysql://" + hostname + ":" +
port + "/" + dbName + "?user=" + userName + "&password=" + password;
// Load the JDBC driver
try {
System.out.println("Loading driver...");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded!");
} catch (ClassNotFoundException e) {
throw new RuntimeException("Cannot find the driver in the classpath!", e);
}
Connection conn = null;
Statement setupStatement = null;
Statement readStatement = null;
ResultSet resultSet = null;
String results = "";
int numresults = 0;
String statement = null;
try {
// Create connection to RDS DB instance
conn = DriverManager.getConnection(jdbcUrl);
// Create a table and write two rows
setupStatement = conn.createStatement();
String createTable = "CREATE TABLE Beanstalk (Resource char(50));";
String insertRow1 = "INSERT INTO Beanstalk (Resource) VALUES ('EC2 Instance');";
String insertRow2 = "INSERT INTO Beanstalk (Resource) VALUES ('RDS Instance');";
setupStatement.addBatch(createTable);
setupStatement.addBatch(insertRow1);
setupStatement.addBatch(insertRow2);
setupStatement.executeBatch();
setupStatement.close();
} catch (SQLException ex) {
// Handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
System.out.println("Closing the connection.");
if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}
try {
conn = DriverManager.getConnection(jdbcUrl);
readStatement = conn.createStatement();
resultSet = readStatement.executeQuery("SELECT Resource FROM Beanstalk;");
resultSet.first();
results = resultSet.getString("Resource");
resultSet.next();
results += ", " + resultSet.getString("Resource");
resultSet.close();
readStatement.close();
conn.close();
} catch (SQLException ex) {
// Handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} finally {
System.out.println("Closing the connection.");
if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
}
%>
Per visualizzare i risultati, inserite il codice seguente nel corpo della HTML parte del JSP file.
<p>Established connection to RDS. Read first two rows: <%= results %></p>
Risoluzione dei problemi di connessione del database
In caso di problemi di connessione a un database all'interno dell'applicazione, rivedi il log del container Web e il database.
Revisione dei log
Puoi visualizzare tutti i log dall'ambiente Elastic Beanstalk all'interno di Eclipse. Se la visualizzazione AWS Explorer non è aperta, scegliete la freccia accanto all' AWS icona arancione nella barra degli strumenti, quindi scegliete Mostra visualizzazione AWS Explorer. Espandi AWS Elastic Beanstalk e il nome dell'ambiente, quindi apri il menu contestuale (pulsante destro del mouse) per il server. Scegli Apri in WTP Server Editor.
Scegli la scheda Log della vista del Server per visualizzare i log di aggregazione dell'ambiente. Per aprire gli ultimi log, scegli il pulsante Refresh (Aggiorna) nell'angolo in alto a destra della pagina.
Scendi verso il basso per individuare i log Tomcat in /var/log/tomcat7/catalina.out
. Se hai caricato la pagina Web dal nostro esempio precedente più volte, potresti visualizzare quanto segue.
-------------------------------------
/var/log/tomcat7/catalina.out
-------------------------------------
INFO: Server startup in 9285 ms
Loading driver...
Driver loaded!
SQLException: Table 'Beanstalk' already exists
SQLState: 42S01
VendorError: 1050
Closing the connection.
Closing the connection.
Tutte le informazioni che l'applicazione Web invia all'output standard appaiono nel log del container Web. Nell'esempio precedente, l'applicazione cerca di creare la tabella ogni volta che la pagina viene caricata. In questo modo viene rilevata un'SQLeccezione a ogni caricamento di pagina dopo il primo caricamento.
Ad esempio, l'operazione precedente è accettabile. Tuttavia, nelle applicazioni concrete, mantieni le definizioni del tuo database in oggetti dello schema, esegui le transazioni all'interno di classi di modelli e coordina le richieste con servlet di controller.
Connessione a un'istanza database RDS
Puoi connetterti direttamente all'istanza RDS DB nel tuo ambiente Elastic Beanstalk utilizzando l'applicazione My client. SQL
Innanzitutto, apri il gruppo di sicurezza sull'istanza RDS DB per consentire il traffico proveniente dal tuo computer.
Apri la console Elastic Beanstalk
e, nell'elenco Regioni, seleziona la tua. Regione AWS -
Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.
Nota
Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.
Nel pannello di navigazione, selezionare Configuration (Configurazione).
-
Nella categoria di configurazione del Database, scegliere Edit (Modifica).
-
Accanto a Endpoint, scegli il link alla RDS console Amazon.
-
Nella pagina dei dettagli dell'istanza RDSDashboard, in Sicurezza e rete, scegli il gruppo di sicurezza che inizia con rds, accanto a Security Groups.
Nota
Il database potrebbe avere più voci etichettate con Security Groups(Gruppi di sicurezza). Usa il primo, che inizia con awseb, solo se hai un account precedente che non dispone di un Amazon Virtual Private Cloud (AmazonVPC) predefinito.
-
In Security group details (Dettagli gruppi di sicurezza), seleziona la scheda Inbound (In ingresso), quindi Edit (Modifica).
-
Aggiungi una regola per My SQL (porta 3306) che consenta il traffico proveniente dal tuo indirizzo IP, specificato nel formato. CIDR
-
Seleziona Salva. Le modifiche diventano effettive immediatamente.
Torna ai dettagli di configurazione di Elastic Beanstalk per l'ambiente e prendi nota dell'endpoint. Utilizzerai il nome di dominio per connetterti all'istanza RDS DB.
Installa il SQL client My e avvia una connessione al database sulla porta 3306. In Windows, installa My SQL Workbench dalla mia SQL home page e segui le istruzioni.
Su Linux, installa il SQL client My utilizzando il gestore di pacchetti per la tua distribuzione. L'esempio seguente funziona con Ubuntu e altri derivati Debian.
// Install MySQL client
$ sudo apt-get install mysql-client-5.5
...
// Connect to database
$ mysql -h aas839jo2vwhwb.cnubrrfwfka8.us-west-2.rds.amazonaws.com
-u username
-ppassword
ebdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 117
Server version: 5.5.40-log Source distribution
...
Dopo la connessione, puoi eseguire SQL comandi per visualizzare lo stato del database, se le tabelle e le righe sono state create e altre informazioni.
mysql> SELECT Resource from Beanstalk;
+--------------+
| Resource |
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)