Thực Hành - Kết Nối RDS Private Tới EC2 Instance Và Lambda Function (Nodejs) Chuyên mục RDS, Aurora & ElastiCache 2024-05-07 26 Lượt xem 22 Lượt thích 0 Bình luận Sidebar
Automatically connect EC2 instance Và RDS
Bạn có thể sử dụng Amazon RDS console để đơn giản hóa việc thiết lập kết nối giữa một Amazon Elastic Compute Cloud (Amazon EC2) instance và một DB instance. Thường, DB instance của bạn đặt trong một private subnet và EC2 instance của bạn đặt trong một public subnet trong một VPC. Bạn có thể sử dụng một SQL client trên EC2 instance của mình để kết nối tới DB instance. EC2 instance cũng có thể chạy máy chủ web hoặc ứng dụng để truy cập vào DB instance của bạn đặt trong private. Các bạn có thể tham khảo thêm tại doc của AWS.
Configuring an EC2 instance
- Đăng nhập vào Managment console AWS và điều hướng đến dịch vụ EC2.
- Nhấp vào “Lunch Instance” và làm theo các bước sau đây:
- Configuring DB instance - RDS
Connecting to a MySQL DB instance
Bây giờ chúng ta sẽ kết nối tới instance EC2 mà chúng ta đã tạo trước đó và sau đó cài đặt các packages cần thiết để kết nối với MySQL DB instance của chúng ta.
-
Để kết nối với instance EC2 của chúng ta, sao chép địa chỉ Public IPv4 của máy EC2.
-
Mở terminal và di chuyển đến vị trí lưu trữ tệp key pair.
-
Nhập lệnh sau để sửa đổi quyền tệp .pem. Thay thế aws-key bằng key được tạo khi cấu hình instance EC2.
chmod 400 your-aws-key.pem
-
Nhập lệnh sau để kết nối với instance của chúng ta. Ở đây, ec2-user là người dùng mặc định trong AMI OS.
ssh -i your-aws-key.pem ec2-user@ec2-instance-public-IPv4 address
-
Bây giờ để cài đặt mysql-client dòng lệnh MySQL, chạy các lệnh sau. Nhấn Y khi được yêu cầu.
-
sudo apt-get update sudo apt-get upgrade
-
sudo apt-get install mysql-client
-
mysql --version
-
-
Để kết nối với DB instance, sao chép Endpoint từ tab Connectivity & security trên trang DB-identifier.
-
Nhập lệnh sau để kết nối với MySQL instance. Thay thế endpoint bằng Endpoint của DB instance và nhập mật khẩu chính khi được yêu cầu.
-
mysql -h endpoint -P 3306 -u admin -p
-
Lưu ý: Các bạn cũng có thể sử dụng Browser Connect SSH để truy cập vào server.
Automatically connect Lambda Và RDS
Configuring Lambda
- Lên thanh tìm kiếm và search Lambda sau đó thì làm theo các bước sau:
- Chọn network giống với RDS network và click vào Create.
- Quay lại RDS management và click vào "Set up Lamda connection"
- Copy đoạn code sample vào file index.mjs hoặc tham khảo thêm tại AWS doc
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 /* Node.js code here. hostname: process.env.ProxyHostName, port: process.env.Port, username: process.env.DBUserName, region: process.env.AWS_REGION, */ // ES6+ example import { Signer } from "@aws-sdk/rds-signer"; import mysql from 'mysql2/promise'; async function createAuthToken() { // Define connection authentication parameters const dbinfo = { hostname: "database-2.c4aoqn5ai7fd.ap-southeast-1.rds.amazonaws.com", port: 3306, username: "admin", region: "ap-southeast-1", } // Create RDS Signer object const signer = new Signer(dbinfo); // Request authorization token from RDS, specifying the username const token = await signer.getAuthToken(); return token; } async function dbOps() { // Obtain auth token const token = await createAuthToken(); // Define connection configuration let connectionConfig = { host: "database-2.c4aoqn5ai7fd.ap-southeast-1.rds.amazonaws.com", user: "admin", password: "adminadmin", database: "users", ssl: 'Amazon RDS' } // Create the connection to the DB const conn = await mysql.createConnection(connectionConfig); // Obtain the result of the query const [res,] = await conn.execute('select ?+? as sum', [3, 2]); return res; } export const handler = async (event) => { // Execute database flow const result = await dbOps(); // Return result return { statusCode: 200, body: JSON.stringify("The selected sum is: " + result[0].sum) } };
-
- Mở termial dưới local và cài đặt thư viện mysql cho Nodejs sau đó thì upload lên Lamda.
-
Cài đặt package: 'mysql2': Trong thư mục dự án của bạn, mở terminal hoặc command prompt và chạy lệnh sau để cài đặt 'mysql2':
-
npm install mysql2
-
-
Đóng gói dự án: Đảm bảo rằng tất cả các tệp và thư mục cần thiết cho Lambda function của bạn được đóng gói lại. Bạn cần đóng gói tất cả các thư viện được sử dụng (bao gồm 'mysql2') cùng với mã của bạn.
-
Tải lên Lambda: Tải gói triển khai lên Lambda function. Bạn có thể tải lên bằng cách sử dụng giao diện người dùng của AWS Lambda hoặc sử dụng AWS CLI hoặc các công cụ quản lý AWS khác như AWS Toolkit cho Visual Studio Code hoặc AWS Toolkit cho IntelliJ.
-
- Sau đó thì click vào button "Deploy" và click vào Button "Test" và thấy kết quả dưới đây là thành công.
Bình luận (0)