Cách kết nối với AWS RDS MySQL Java
Bây giờ, chúng ta đã đề cập đến việc thiết lập AWS Lambdas để kết nối với các phiên bản RDS và Proxy RDS, hãy xem qua đoạn mã cần thiết để xác thực Java AWS Lambdas của bạn thông qua Xác thực IAM, cũng như xác thực người dùng/pwd truyền thống. Chúng tôi cũng sẽ đề cập đến việc khắc phục sự cố vì điều này hiếm khi hoạt động trong lần thử đầu tiên. 😅😅😅 Show
từ chối trách nhiệm Xác thực đối với cơ sở dữ liệu RDS (hoặc RDS Proxy) thông qua Người dùng/Pwd trong JavaMã trông giống như một kết nối JDBC thông thường public static Connection createConnectionViaUserPwd( Tuy nhiên, điều nổi bật là kết nối db phải được thiết lập trong khối tĩnh của trình xử lý Lambda public class PopulateFarmDb Lý do khởi tạo kết nối cơ sở dữ liệu trong khối tĩnh chứ không phải trong phương thức handleRequest() là vì chúng tôi muốn duy trì kết nối DB trong Lambda giữa các lần gọi handleRequest. Nói cách khác, chúng tôi muốn Lambda duy trì đối tượng kết nối ngay cả sau khi yêu cầu kết thúc. Bằng cách này, chúng tôi chỉ trả tiền phạt về độ trễ kết nối đối với yêu cầu đầu tiên mà Lambda xử lý và mọi lệnh gọi tiếp theo đều sử dụng kết nối đã thiết lập (hoàn thành sau một phần nghìn giây) Trong trường hợp của Lambda PopulateFarmDb, việc này không quá quan trọng vì chúng tôi chỉ gọi Lambda này một lần để điền vào các bảng và tạo người dùng lambda_iam. nhưng chúng tôi vẫn làm theo cách này để mọi người tập thói quen Sau đó, chúng tôi sử dụng SecretsUtil. lớp java để gọi Trình quản lý bí mật để truy xuất bí mật của người dùng và giải mã thông tin đăng nhập static final JSONObject DB_ADMIN_SECRET = Xác thực qua RDS IAM Authentication trong JavaMặc dù với RDS IAM auth, chúng tôi cũng khởi tạo kết nối DB trong khối tĩnh, mã java để thực hiện IAM auth lại là một câu chuyện hoàn toàn khác. Một trong những lý do chính là chúng tôi cần tạo mã thông báo xác thực thay vì chỉ nhập mật khẩu Mã kết nối trông như thế này public Connection createConnectionViaIamAuth( Để tạo mã thông báo xác thực, trước tiên chúng tôi đã tải xuống chứng chỉ RDS (chúng tôi đã chọn chứng chỉ toàn cầu nhưng bạn cũng có thể thử chứng chỉ khu vực), sau đó lưu trữ chứng chỉ đó trong thư mục ApiHandlers/resources private static String generateAuthToken( Xin lưu ý rằng RdsUtilities là phiên bản Java SDK v2 của RdsIamAuthTokenGenerator của Java SDK v1. Ban đầu chúng tôi sử dụng v1 nhưng sau đó phát hiện ra rằng v2 là anh em họ hiệu suất cao hơn của v1. Để xem triển khai đầy đủ, vui lòng xem DbUtils. java
Điều này đặt nội dung của thư mục tài nguyên vào thư mục gốc của lambda được tạo. zip và do đó làm cho nó có thể truy cập được chỉ bằng tên tệp bên trong Lambda private static final String SSL_CERTIFICATE = Mã hoàn chỉnh quá dài để sao chép toàn bộ trong bài đăng này, nhưng bạn có thể tìm thấy nó trong DbUtil. java Quyết định xử lý sự cố Do đó, hiện tại, chúng tôi đang để ứng dụng khách của ứng dụng khách Lambda (trong trường hợp của chúng tôi là ứng dụng Magento) xử lý các lần thử lại dài dòng và chỉ quan tâm đến các lỗi kết nối ở cấp độ Lambda phục hồi dễ dàng hơn (e. g. lỗi mạng) Khắc phục sự cố kết nối proxy RDSGiúp đỡ. Phải làm gì khi không có gì hoạt độngMẹo. Trước hết, hãy bật Ghi nhật ký nâng cao của Proxy RDS của bạn. tin tôi đi, nó sẽ giúp bạn tiết kiệm rất nhiều thời gian. Khi thực hiện, bạn sẽ tìm thấy nhật ký CloudWatch dưới tên Proxy RDS của mình cùng với một số thông tin kết nối hữu ích Ví dụ: nơi Lambda của bạn chỉ có thể đăng nhập
trong nhật ký RDS Proxy, bạn sẽ tìm thấy một số loại đá quý hữu ích hơn như
hoặc là
Thông tin này giúp tôi nhận ra rằng tôi đã thiếu chính sách IAM phù hợp để truy cập một trong các Bí mật và chứng chỉ của tôi không được sử dụng đúng cách để tạo mã thông báo xác thực Mẹo. Đặt Thời gian chờ không hoạt động của Proxy RDS thành 1 (chỉ thực hiện trong Bảng điều khiển AWS) trong khi bạn kiểm tra. Tôi nhận thấy rằng đôi khi tôi thay đổi cài đặt để ngắt kết nối RDS Proxy nhưng Lambdas của tôi vẫn có thể kết nối. vì vậy rõ ràng là họ có thể cõng trên một kết nối đã được thiết lập đã hoạt động trước đó, mặc dù bây giờ tôi có cấu hình không tốt. Cũng vì lý do này, hãy đảm bảo 'tái chế' Lambda của bạn khi bạn thay đổi cài đặt (e. g. bằng cách thay đổi dung lượng bộ nhớ trên bảng điều khiển) Truy cập Bảng điều khiển AWS và chỉnh sửa Nhóm bảo mật VPC của phiên bản RDS. Thêm Quy tắc gửi đến cho Loại MySql/Aurora và chọn MyIp làm Nguồn. Điều này sẽ cho phép địa chỉ IP của thiết bị của bạn kết nối với phiên bản RDS. Bây giờ hãy thử kết nối với MySql Workbench/Toad/dòng lệnh với tư cách là người dùng quản trị bằng mật khẩu của anh ấy, sau đó cũng thử kết nối với người dùng lambda_iam và mật khẩu của nó. Bạn có thể lấy mật khẩu đã tạo bằng cách vào bảng điều khiển Trình quản lý bí mật của mình và mở tệp DbUserSecret**(i. e. người dùng lambda_iam DB) và DeliveryProjectDbFarmer** (tôi. e. bí mật người dùng DB của quản trị viên) Các vấn đề kết nối khác và giải pháp của họLỗi. Xác thực proxy với xác thực IAM không thành công đối với người dùng “lambda_iam” khi bật TLS. Lý do. Thông tin không hợp lệ. Nếu bạn cung cấp mã thông báo IAM, hãy đảm bảo sử dụng đúng mật khẩu hoặc bật xác thực IAM
Hy vọng bạn thích bài đăng này và nó hữu ích cho bạn. Như mọi khi, phản hồi luôn được hoan nghênh, vì vậy đừng ngại và để lại nhận xét Làm cách nào để kết nối với cơ sở dữ liệu AWS RDS trong Java?Kết nối với Phiên bản CSDL RDS . Mở bảng điều khiển Elastic Beanstalk và trong danh sách Khu vực, hãy chọn Khu vực AWS của bạn Trong ngăn điều hướng, chọn Môi trường rồi chọn tên môi trường của bạn từ danh sách. . Trong ngăn điều hướng, chọn Cấu hình Làm cách nào để kết nối với AWS RDS bằng MySQL Workbench?Độ phân giải . Mở MySQL Workbench, sau đó chọn dấu ⊕ bên cạnh MySQL Connections để thiết lập kết nối mới Trong hộp thoại Thiết lập kết nối mới, nhập tên cho kết nối của bạn Trong phần Tham số, nhập các chi tiết này Tên máy chủ. Nhập điểm cuối RDS Hải cảng. Nhập số cổng Làm cách nào để kết nối cơ sở dữ liệu RDS với Spring Boot?Quy trình phát triển . Đăng nhập vào Bảng điều khiển AWS Thiết lập cơ sở dữ liệu MySQL trên đám mây AWS bằng AWS RDS Kết nối với cơ sở dữ liệu MySQL với bàn làm việc của MySQL để xác minh kết nối Sao chép mã nguồn ứng dụng khởi động Spring từ GitHub Cập nhật ứng dụng. tệp thuộc tính để thay đổi thuộc tính URL cơ sở dữ liệu MySQL Lệnh kết nối phiên bản RDS MySQL là gì?Để kết nối với cơ sở dữ liệu trên phiên bản CSDL bằng màn hình MySQL . Mở bảng điều khiển RDS rồi chọn Cơ sở dữ liệu để hiển thị danh sách các phiên bản CSDL của bạn Chọn tên phiên bản Cơ sở dữ liệu MySQL để hiển thị chi tiết của nó Trên tab Kết nối & bảo mật, sao chép điểm cuối. Ngoài ra, lưu ý số cổng |