Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menambahkan instans Amazon RDS DB ke lingkungan Java Elastic Beanstalk Anda
Topik ini memberikan instruksi untuk membuat Amazon RDS menggunakan konsol Elastic Beanstalk. Anda dapat menggunakan instans DB Amazon Relational Database Service (RDSAmazon) untuk menyimpan data yang dikumpulkan dan dimodifikasi aplikasi Anda. Basis data dapat dilampirkan ke lingkungan Anda dan dikelola oleh Elastic Beanstalk, atau dibuat dan dikelola secara eksternal.
Jika Anda menggunakan Amazon RDS untuk pertama kalinya, tambahkan instans DB ke lingkungan pengujian dengan menggunakan konsol Elastic Beanstalk dan verifikasi bahwa aplikasi Anda dapat terhubung dengannya.
Untuk menambahkan instans DB ke lingkungan Anda
Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic
Beanstalk. Wilayah AWS -
Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.
catatan
Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.
Di panel navigasi, pilih Konfigurasi.
-
Di kategori konfigurasi Basis data, pilih Edit.
-
Pilih mesin DB, dan masukkan nama pengguna dan kata sandi.
-
Untuk menyimpan perubahan pilih Terapkan di bagian bawah halaman.
Menambahkan instans DB memakan waktu sekitar 10 menit. Ketika pembaruan lingkungan selesai, nama host instans DB dan informasi koneksi lainnya tersedia untuk aplikasi Anda melalui properti lingkungan berikut:
Nama properti | Deskripsi | Nilai properti |
---|---|---|
|
Nama host instans DB. |
Pada tab Konektivitas & keamanan di RDS konsol Amazon: Titik akhir. |
|
Port tempat instans DB menerima koneksi. Nilai default bervariasi di antara mesin DB. |
Pada tab Konektivitas & keamanan di RDS konsol Amazon: Port. |
|
Nama basis data, |
Pada tab Konfigurasi di RDS konsol Amazon: Nama DB. |
|
Nama pengguna yang Anda konfigurasi untuk basis data Anda. |
Pada tab Konfigurasi di RDS konsol Amazon: Nama pengguna Master. |
|
Kata sandi yang Anda konfigurasi untuk basis data Anda. |
Tidak tersedia untuk referensi di RDS konsol Amazon. |
Untuk informasi selengkapnya tentang mengonfigurasi instans DB internal, lihat Menambahkan basis data ke lingkungan Elastic Beanstalk Anda. Untuk petunjuk tentang konfigurasi basis data eksternal untuk digunakan dengan Elastic Beanstalk, lihat Menggunakan Elastic Beanstalk dengan Amazon RDS.
Untuk terhubung ke database, tambahkan JAR file driver yang sesuai ke aplikasi Anda, muat kelas driver dalam kode Anda, dan buat objek koneksi dengan properti lingkungan yang disediakan oleh Elastic Beanstalk.
Bagian-bagian
Mengunduh JDBC driver
Anda akan memerlukan JAR file JDBC driver untuk mesin DB yang Anda pilih. Simpan JAR file dalam kode sumber Anda dan sertakan di classpath Anda saat Anda mengkompilasi kelas yang membuat koneksi ke database.
Anda dapat menemukan driver terbaru untuk mesin DB Anda di lokasi-lokasi berikut:
-
Saya SQL - SQLKonektor Saya/J
-
Oracle SE-1 - Pengemudi Oracle JDBC
-
Postgres — Pengemudi SQLJDBCPostgre
-
SQLServer - JDBCPengemudi Microsoft
Untuk menggunakan JDBC driver, panggil Class.forName()
untuk memuatnya sebelum membuat koneksi DriverManager.getConnection()
dengan kode Anda.
JDBCmenggunakan string koneksi dalam format berikut:
jdbc:driver
://hostname
:port
/dbName
?user=userName
&password=password
Anda dapat mengambil hostname, port, nama basis data, nama pengguna, dan kata sandi dari variabel lingkungan yang disediakan Elastic Beanstalk untuk aplikasi Anda. Nama driver khusus untuk tipe basis data dan versi driver Anda. Berikut ini adalah contoh nama driver:
-
mysql
untuk saya SQL -
postgresql
untuk Postgre SQL -
oracle:thin
untuk Oracle Thin -
oracle:oci
untuk Oracle OCI -
oracle:oci8
untuk Oracle 8 OCI -
oracle:kprb
untuk Oracle KPRB -
sqlserver
untuk SQL Server
Menghubungkan ke basis data (platform Java SE)
Di lingkungan Java SE, gunakan System.getenv()
untuk membaca variabel koneksi dari lingkungan. Contoh kode berikut menunjukkan kelas yang menciptakan koneksi ke database PostgreSQL.
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;
}
Menghubungkan ke basis data (platform Tomcat)
Di lingkungan Tomcat, properti lingkungan disediakan sebagai properti sistem yang dapat diakses dengan System.getProperty()
.
Contoh kode berikut menunjukkan kelas yang menciptakan koneksi ke database PostgreSQL.
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;
}
Jika Anda mengalami kesulitan mendapatkan koneksi atau menjalankan SQL pernyataan, coba letakkan kode berikut dalam JSP file. Kode ini menghubungkan ke instans DB, membuat tabel, dan menuliskannya.
<%@ 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) {}
}
%>
Untuk menampilkan hasil, tempatkan kode berikut di badan HTML bagian JSP file.
<p>Established connection to RDS. Read first two rows: <%= results %></p>
Pemecahan masalah koneksi basis data
Jika Anda mengalami masalah menghubungkan ke basis data dari dalam aplikasi Anda, tinjau log kontainer web dan basis data.
Meninjau log
Anda dapat melihat semua log dari lingkungan Elastic Beanstalk Anda dari dalam Eclipse. Jika Anda tidak membuka tampilan AWS Explorer, pilih panah di sebelah AWS ikon oranye di bilah alat, lalu pilih Tampilkan Tampilan AWS Explorer. Perluas AWS Elastic Beanstalk dan nama lingkungan Anda, dan kemudian buka menu konteks (klik kanan) untuk server. Pilih Buka di Editor WTP Server.
Pilih tab Log tampilan Server untuk melihat log agregat dari lingkungan Anda. Untuk membuka log terbaru, pilih tombol Segarkan di sudut kanan atas halaman.
Gulir ke bawah untuk menemukan log Tomcat di /var/log/tomcat7/catalina.out
. Jika Anda memuat halaman web dari contoh kami sebelumnya beberapa kali, Anda mungkin melihat berikut ini.
-------------------------------------
/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.
Semua informasi yang aplikasi web kirim ke output standar muncul di log kontainer web. Di contoh sebelumnya, aplikasi mencoba untuk membuat tabel setiap kali halaman dimuat. Ini menghasilkan penangkapan SQL pengecualian pada setiap pemuatan halaman setelah yang pertama.
Sebagai contoh, sebelumnya dapat diterima. Tetapi, di aplikasi yang sebenarnya, jaga definisi basis data Anda di objek skema, lakukan transaksi dari dalam kelas model, dan koordinasikan permintaan dengan pengendali servlet.
Menghubungkan ke Instans RDS DB
Anda dapat terhubung langsung ke instans RDS DB di lingkungan Elastic Beanstalk Anda dengan menggunakan aplikasi klien Saya. SQL
Pertama, buka grup keamanan ke instans RDS DB Anda untuk memungkinkan lalu lintas dari komputer Anda.
Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic
Beanstalk. Wilayah AWS -
Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.
catatan
Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.
Di panel navigasi, pilih Konfigurasi.
-
Di kategori konfigurasi Basis data, pilih Edit.
-
Di sebelah Endpoint, pilih tautan RDS konsol Amazon.
-
Pada halaman detail instans RDSDasbor, di bawah Keamanan dan Jaringan, pilih grup keamanan yang dimulai dengan rds- di sebelah Grup Keamanan.
catatan
Basis data mungkin memiliki beberapa entri berlabel Grup Keamanan. Gunakan yang pertama, yang dimulai dengan awseb, hanya jika Anda memiliki akun lama yang tidak memiliki Amazon Virtual Private Cloud (AmazonVPC) default.
-
Di Detail grup keamanan, pilih tab Masuk, dan kemudian pilih Edit.
-
Tambahkan aturan untuk My SQL (port 3306) yang memungkinkan lalu lintas dari alamat IP Anda, ditentukan dalam CIDR format.
-
Pilih Simpan. Perubahan segera berlaku.
Kembali ke detail konfigurasi Elastic Beanstalk untuk lingkungan Anda dan perhatikan titik akhir. Anda akan menggunakan nama domain untuk terhubung ke instans RDS DB.
Instal SQL klien saya dan mulai koneksi ke database pada port 3306. Di Windows, instal SQL Meja Kerja Saya dari SQL halaman beranda saya dan ikuti petunjuknya.
Di Linux, instal SQL klien Saya menggunakan manajer paket untuk distribusi Anda. Contoh berikut bekerja di Ubuntu dan turunan Debian lainnya.
// 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
...
Setelah terhubung, Anda dapat menjalankan SQL perintah untuk melihat status database, apakah tabel dan baris Anda dibuat, dan informasi lainnya.
mysql> SELECT Resource from Beanstalk;
+--------------+
| Resource |
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)