Lần này để hòa theo không khí nhà nhà ChatGPT, người người ChatGPT như ngày hội toàn dân lên đồng vì ChatGPT và cũng để làm tốt công tác đú trend, nên mình sẽ kể về chuyện Xây dựng Bot chat Discord tích hợp ChatGPT hót hòn họt mấy hôm nay. Xin chú ý, mình không có bán account nên mình không giúp gì được về vấn đề này, tuy nhiên có thể giới thiệu bạn đọc cho một vài mối lái lùa gà uy tín, hehe 😁😁
Để tăng phần tin cậy và luận chứng cho nội dung bên dưới thì xin được cung cấp thêm cho quý đọc giả gần xa một vài số liệu nhỏ:
Từ những đúc kết trên, nay mình chia sẻ với bà con source-code chat, cũng như việc vận hành hệ thống trên hạ tầng AWS Cloud sịn sò với đầy đủ từ khóa bao hot: AI, ChatGPT, Transformer, AWS AppRunner, AWS CodePipeline, AWS CodeBuild… Đảm bảo nghe sướng còn hơn…!
Trong phạm vi bài này chủ yếu sẽ tập trung vào việc xây dựng hạ tầng để chạy ứng dụng Chat bot trên AWS Cloud, các vấn đề lập trình sẽ thảo luận ở chủ đề khác.
Tính cho đến thời điểm hiện tại thì có rất rất nhiều thư viện miễn phí để sử dụng cho nhiều ngôn ngữ, các extensions cũng trăm hoa đua nở. Bạn có thể tham khảo để dựng endpoint cho các tools IM hoặc thậm chí tự dựng luôn FE để giao tiếp cũng được.
Một số thư viện cho các ngôn ngữ, bạn có thể tham khảo thử, cùng rất nhiều sourcecode đã sẵn sàng để chạy.
Mỗi ngôn ngữ sẽ có một chút khác biệt chủ yếu ở Dockerfile để build container.
Ở đây mình sẽ xài AWS AppRunner để tối ưu quy trình CI/CD, vì xài mấy cái khác thì ngầu hơn nhưng mà tạm thời mình chưa biết xài. Cho ai chưa xài thì AppRunner cho phép bạn “conatiner hóa ứng dụng web và API một cách nhanh chóng”, hỗ trợ scales như các chuyên gia hạ tầng hàng trăm năm kinh nghiệm mà không đòi người sử dụng phải có gì đặc biệt ngoài tiền!
Ngoài ra thì AppRunner còn giúp scale up/ scale down một cách tự động để đáp ứng nhu cầu traffic của bạn, cho phép bạn dành nhiều thời gian hơn cho việc viết code thay vì phải lọ mọ config server như năm xưa.
Code sẽ được các devs push lên GitHub, mình cần setup CodePipeline để pulls code về, build code bằng CodeBuild, sau đó build image bằng Amazon ECR. AppRunner được setup để tự động deploy lại khi có image mới ở ECR Repository. Log sẽ được bắn vô CloudWatch hoặc Seq, các thông tin hệ thống thì thảy vô Grafana nhìn cho ngầu.
BranchName: repo GitHub để clone clode về, mặc định là main. ECRRepoName: không hiểu sao chỗ này viết hoa thì báo lỗi, viết thường lại OK. GitHubOAthToken: token đã lấy ở trên. RepoOwner: username GitHub. RepositoryName: tên repo trên GitHub.
aws iam create-role --role-name App-Runner-ServiceRole --assume-role-policy-document file://apprunner-role.json
Lệnh này để cấp quyền thao tác với CloudWatch
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess --role-name App-Runner-ServiceRole
Trong phần Configure service theo tiêu chí đánh nhanh rút gọn có sản phẩm để luanching liền nên chúng ta tạm thời không cần quan tâm nhiều, chỉ cần chú ý khai báo Environment variables là được.
Tùy từng source-code khác nhau thì có thể khác nhau.
Đến đây xem như đã hoàn tất cơ bản để có hệ thống chạy được, tuy nhiên lỡ rồi thì làm luôn cho ngầu.
Có 2 loại, Service managed và Customer managed, khác nhau ở phần cấu hình IAM roles để Grafana đọc thông tin từ các data source.
Cách setup khá đơn giản, chỉ cần quan tâm một số tùy chọn sau:
Sau khi tạo xong vào mục Authentication, click Configure users and user groups rồi chọn group, click Assign user, tiếp đến click Action chọn Make admin. Có quyền admin thì mới có thể add được các data source và xây dựng dashboard.
Cái hay của việc dùng CloudFormation là bạn có thể dọn dẹp các tài nguyên nhanh chóng như lúc tạo ra. Tuy nhiên cần chú ý empty các S3 Bucket và tự xóa các IAM đã tạo bằng tay trên CloudShell.
Anh Dũng, Feb 2023.
Saigon, một ngày nắng thấy ông bà ông vãi.