Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Topik ini memberikan instruksi untuk membuat Amazon RDS menggunakan konsol Elastic Beanstalk. Anda dapat menggunakan instans DB Amazon Relational Database Service (Amazon RDS) untuk menyimpan data yang dikumpulkan dan dimodifikasi oleh 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 uji dengan menggunakan konsol Elastic Beanstalk dan verifikasi apakah aplikasi Anda dapat terhubung ke sana.
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. |
Di tab Konektivitas & keamanan di konsol Amazon RDS: Titik akhir. |
|
Port tempat instans DB menerima koneksi. Nilai default bervariasi di antara mesin DB. |
Di tab Konektivitas & keamanan di konsol Amazon RDS: Port. |
|
Nama basis data, |
Di tab Konfigurasi di konsol Amazon RDS: Nama DB. |
|
Nama pengguna yang Anda konfigurasi untuk basis data Anda. |
Di tab Konfigurasi di konsol Amazon RDS: Nama pengguna utama. |
|
Kata sandi yang Anda konfigurasi untuk basis data Anda. |
Tidak tersedia untuk referensi di konsol Amazon RDS. |
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 basis data, tambahkan driver file JAR yang sesuai ke aplikasi Anda, muat kelas driver di kode Anda, dan buat objek koneksi dengan properti lingkungan yang disediakan oleh Elastic Beanstalk.
Bagian
Mengunduh driver JDBC
Anda akan membutuhkan file JAR driver JDBC untuk mesin DB yang Anda pilih. Simpan file JAR di kode sumber Anda dan sertakan ke dalam classpath Anda ketika Anda mengompilasi kelas yang membuat koneksi ke basis data.
Anda dapat menemukan driver terbaru untuk mesin DB Anda di lokasi-lokasi berikut:
-
MySQL – MySQL Connector/J
-
Oracle SE-1 – Oracle JDBC Driver
-
Postgres – PostgreSQL JDBC Driver
-
SQL Server – Microsoft JDBC Driver
Untuk menggunakan driver JDBC, panggil Class.forName()
untuk memuatnya sebelum membuat koneksi dengan DriverManager.getConnection()
di kode Anda.
JDBC menggunakan string koneksi dengan 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 MySQL -
postgresql
untuk PostgreSQL -
oracle:thin
untuk Oracle Thin -
oracle:oci
untuk Oracle OCI -
oracle:oci8
untuk Oracle OCI 8 -
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 membuat koneksi ke basis data 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 membuat koneksi ke basis data 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 pernyataan SQL, cobalah menempatkan kode berikut di file JSP. 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 bodi bagian HTML dari file JSP.
<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 WTP Editor 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. Hal ini menyebabkan penangkapan pengecualian SQL di setiap memuat 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 DB RDS
Anda dapat terhubung langsung ke instans DB RDS di lingkungan Elastic Beanstalk Anda dengan menggunakan aplikasi klien MySQL.
Pertama, buka grup keamanan untuk instans DB RDS Anda untuk mengizinkan 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 samping Titik akhir, pilih tautan konsol Amazon RDS.
-
Di halaman detail instans Dasbor RDS, di bawah Keamanan dan Jaringan, pilih grup keamanan yang dimulai dengan RDS di samping 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 (Amazon VPC) default.
-
Di Detail grup keamanan, pilih tab Masuk, dan kemudian pilih Edit.
-
Tambahkan aturan untuk MySQL (port 3306) yang mengizinkan lalu lintas dari alamat IP Anda, ditentukan dalam format CIDR.
-
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 DB RDS.
Instal klien MySQL dan mulai koneksi ke basis data di port 3306. Di Windows, instal MySQL Workbench dari beranda MySQL dan ikuti petunjuknya.
Di Linux, instal klien MySQL 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 Anda terhubung, Anda dapat menjalankan perintah SQL untuk melihat status basis data, apakah tabel dan baris Anda sudah dibuat, dan informasi lainnya.
mysql> SELECT Resource from Beanstalk;
+--------------+
| Resource |
+--------------+
| EC2 Instance |
| RDS Instance |
+--------------+
2 rows in set (0.01 sec)