Dịch vụ vi mô tiếp theo mà chúng ta cần cho ứng dụng không máy chủ TravelBuddy của chúng ta là FlightSpecials API. Chúng ta đã xem FlightSpecials trước đây trong các phần trước, vì vậy nó sẽ quen thuộc với bạn. Nó hoạt động giống như HotelSpecials API ở chỗ nó phải được triển khai tích hợp với VPC để nó có thể kết nối với cơ sở dữ liệu MySQL để truy vấn dữ liệu. Thay vì đóng gói và triển khai microservice này theo cách thủ công, chúng ta sẽ sử dụng CodeStar để xây dựng CI/CD pipeline đầy đủ cho chúng ta, như chúng ta đã làm trong các bài thực hành trước đây. Vì vậy, do bạn đã tạo CI/CD pipeline bằng AWS CodeStar một vài lần, nên chúng ta sẽ không cung cấp cho bạn hướng dẫn từng bước đầy đủ. Nếu bạn cần trợ giúp, hãy tham khảo các tài liệu về cách hoàn thành các tác vụ cần thiết để tạo một dự án CodeStar mới và triển khai mã FlightSpecials trên ứng dụng mẫu do CodeStar cung cấp.
Nội dung
swagger.yml
FlightSpecialsAPI
. git config helpers
.new-implementation
.copy_files.sh
trong tập tin FlightSpecials.zip
mà bạn có thể dùng như trong các bài thực hành trước. Để sử dụng, thực thi lệnh sau sau khi thay đường dẫn path/to/your/working/folder
. Ví dụ:copy_files.sh /path/to/your/working/folder
Đừng quên sử dụng Maven | Update Project của IDE Eclipse để cập nhật lại project sau khi có thay đổi mã nguồn.
Cấp quyền cho CloudFormation để tạo IAM role
Là một phần của việc thiết lập microservice của chúng ta, chúng ta sẽ chỉ định IAM Role mới cho hàm Lambda của chúng ta để cho phép nó thực hiện các tác vụ khác nhau. Khi CodeStar tạo project, nó đã tạo một IAM Role cấp cho CloudFormation vừa đủ quyền để triển khai dịch vụ Hello World example. Các quyền này không đủ cho các yêu cầu nâng cao hơn của chúng ta. Vì vậy, chúng ta cần điều chỉnh các chính sách được chỉ định cho CloudFormation role, để mở rộng các quyền đó.
CodeStarWorker-flightspecialsa-CloudFormation
để tìm đúng IAM Role.Nếu bạn không thể tìm thấy role, có thể do còn quá sớm - CodeStar vẫn đang trong quy trình cấp phát và có thể chưa tạo role. Kiểm tra tiến trình cung cấp trong CodeStar dashboard.
idevelop
để chọn các chính sách có sẵn. Chọn chính sách idevelopCodeStarCloudFormationPolicy
trong danh sách. Chính sách này đã được tạo cho bạn bởi quá trình thiết lập bài thực hành và có các quyền được chỉ định cho nó để cho phép CloudFormation làm việc thay mặt chúng ta khi tạo role thực thi Lambda.template.yml
được cung cấp là một phần của FlightSpecials.zip
. Tập tin có một số vị trí mà bạn cần cập nhật để khớp với các giá trị từ tài khoản lab của bạn trước khi bạn có thể triển khai cập nhật. Bao gồm Subnet Ids, Security Group Ids và RDS Instance Endpoint là các tài nguyên duy nhất của tài khoản của bạn.Trong Eclipse IDE, mở tập tin template.yml
và tìm kiếm từng mục trong bảng dưới đây trong cột Item to replace, và thay thế chúng bằng các giá trị được tìm thấy trong Cloudformation Outputs:
Mục để thay thế | Mô tả |
---|---|
Mạng con đầu tiên cho cơ sở dữ liệu MySQL | |
Mạng con thứ hai cho cơ sở dữ liệu MySQL | |
Security group cho cơ sở dữ liệu MySQL | |
MySQL database endpoint |
VpcConfig:
SecurityGroupIds:
- sg-858e61e3
SubnetIds:
- subnet-3c989d4a
- subnet-a04255c4
Environment:
Variables:
JDBC_CONNECTION_STRING: jdbc:mysql://qlxx5jzrxxxby.cig0rzmdedgf.ap-northeast-1.rds.amazonaws.com:3306/travelbuddy?useSSL=false&serverTimezone=UTC&autoReconnect=true
JDBC_UID: root
JDBC_PWD: labpassword
swagger.yml
Tập tin swagger.yml
được cung cấp trong gói zip là định nghĩa cho API sẽ cung cấp microservice thông qua Amazon API Gateway. Nó cần được cập nhật thông tin chi tiết về AWS Account ID trong bài thực hành của bạn và Region AWS mục tiêu trước khi bạn có thể triển khai dịch vụ vi mô của mình.
swagger.yml
và mở ra trong trình soạn thảo văn bản.REPLACE_AWS_REGION
và thay thế nó bằng khu vực bạn đang sử dụng(VD: ap-northeast-1
)REPLACE_AWS_ACCOUNTID
và thay thế nó bằng AWS Account Id. Bạn có thể tìm thấy AWS Account ID của mình trong trang tổng quan của bài thực hành.new-implementation
git branch và xác nhận các thay đổi. Bạn có thể dùng Eclipse IDE hoặc CLI. Trong ví dụ này, chúng ta sẽ sử dụng Eclipse IDE, nhưng lưu ý đối với lần đẩy cuối cùng, bạn sẽ cần sử dụng IDE Eclipse vì nó được định cấu hình bằng thông tin đăng nhập Git của bạn, trong khi cửa sổ lệnh thì không:
git status
để kiểm tra lại các thay đổi về code.git add .
để thêm vào các tập tin đã thay đổi.git commit -m "Baseline implementation"
xác nhận các thay đổi và cung cấp một thông báogit checkout master
để chuyển trở lại master branchgit merge new-implementation
Bạn cần thực hiện đẩy từ Eclipse vì thông tin xác thực git được nhúng trong môi trường Eclipse. Bạn cũng có thể định cấu hình môi trường dòng lệnh bằng thông tin đăng nhập git nhưng điều đó nằm ngoài phạm vi của phòng thí nghiệm này.
Sẽ mất một vài phút để đẩy mã và bắt đầu triển khai. Kiểm tra mã nguồn và các template sẽ kích hoạt quá trình xây dựng và triển khai thực hiện mới. AWS CodePipeline hiện sẽ sử dụng CloudFormation để triển khai các tài nguyên sau:
- Hàm Lambda được triển khai bởi mã Java mà bạn đã kiểm tra trong CodeCommit
- IAM role cho hàm Lambda
- Cấu hình API Gateway cho API
Trong khi bạn có chút thời gian, hãy dành vài phút để khám phá buildspec.yml
, swagger.yml
và template.yml
các tệp xác định Amazon API Gateway, hàm AWS Lambda và quá trình build/deploy thông qua AWS CodeBuild. Bạn sẽ nhận thấy rằng tập tin builspec.yml
sử dụng cùng một lệnh AWS CLI để đóng gói triển khai mà bạn đã sử dụng khi đóng gói HotelSpecials API theo cách thủ công trước đó
Đừng thực thi lệnh bên dưới, chúng chỉ để bạn tham khảo thêm.
mvn package shade:shade
aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml
Tập tin template.yml
sử dụng Serverless Application Model (SAM) chuyển đổi để xác định API REST, trái ngược với cách chúng ta tiếp cận điều này trong HotelSpecials API
Ví dụ: Trong HotelSpecials, CloudFormation template đã sử dụng CloudFormation chuẩn để xác định API REST để nó có thể rõ ràng về định nghĩa API và bao gồm swagger
. Ví dụ FlightSpecials sử dụng cách tiếp cận khai báo nhiều hơn và để lại thông tin chi tiết cho SAM. Bạn có thể tự do kết hợp CloudFormation và SAM trong cùng một template, như bạn có thể thấy từ các ví dụ này.
Lưu ý rằng biến môi trường $S3_BUCKET
được CodeBuild tự động thay thế khi bước xây dựng được thực hiện và được thay thế bằng S3 bucket mà CodeStar đã cung cấp khi thiết lập dự án.
Bạn có thể kiểm tra trạng thái của việc triển khai thay đổi mã nguồn thông qua đường dẫn trên CodeStar project dashboard. Khi quá trình triển khai đã hoàn tất thông qua CI/CD pipeline, bạn đã sẵn sàng để kiểm tra API.
iDevelop - Flight Specials API
để tiết lộ các tài nguyên cho API.{
"succeeded": true,
"message": "",
"errorCode": 0,
"data": [
{
"id": 1,
"header": "London to Prague",
"body": "Jewel of the East",
"cost": 93,
"expiryDate": 1504072439813
},
{
"id": 2,
"header": "Paris to London",
"body": "Weekend getaway!",
"cost": 182,
"expiryDate": 1504074888702
}
]
}
Nếu bạn thấy một JSON payload không có lỗi, bạn đã triển khai thành công một API và hỗ trợ hàm Lambda truy vấn cơ sở dữ liệu MySQL. Lưu ý rằng việc triển khai nhanh hơn và dễ dàng hơn mà không cần bất kỳ sự can thiệp thủ công nào và bạn thậm chí không phải tương tác với AWS CLI hoặc Bảng điều khiển? Mọi thứ được thúc đẩy bởi quá trình đăng ký kiểm soát nguồn.
Bây giờ bạn đã sẵn sàng tích hợp các API này với website TravelBuddy.