Triển khai lại thông qua CI/CD pipeline

Trong bài tập này, bạn sẽ cập nhật mã nguồn trong Eclipse, ghi đè lên mẫu Hello World! microservice và thay thế nó bằng mã TravelBuddy FlightService. Sau đó, bạn sẽ commit thay đổi mã vào CodeCommit để kích hoạt triển khai vào môi trường AWS Lambda của bạn và cập nhật cấu hình Amazon API Gateway để phù hợp.

Thêm code microservice vào nhánh mới

  1. Chuyển đường dẫn vào thư mục gốc của CodeStar Project chúng ta vừa import. Dùng câu lệnh sau để tạo nhánh mới:
cd git\dev-flight-svc
git checkout -b "new-implementation"

Createbranch

  1. Tải mã nguồn chương trình FlightSpecials và giải nén.
  2. Trong Eclipse IDE, nhấp chuột phải vào project. chọn Show In và chọn System Explorer.\
  3. Sao chép nội dung trong thư mục FlightSpecials vào thư mục vừa mở. Bạn cần xóa nội dung trong hai thư mục /src/target của project sample trước khi copy đè lên.

    Nếu bạn không xóa nội dung hai thư mục /src/target trước khi copy code mới vào thì quá trình build sẽ bị lỗi vì chúng ta không cấu hình cho HelloWorldController / Handler.

  4. Nhấp chuột phải vào thư mục root của dự án, chọn Maven | Update Project, chọn OK.

Redeploy

Sau khi hoàn tất, bạn sẽ thấy cấu trúc thư mục như sau:

Redeploy

  1. Là một phần của cài đặt microservice, chúng ta sử dụng VPC và gán một IAM Role mới cho hàm Lambda để 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 đủ quyền cho CloudFormation để triển khai dịch vụ HelloWorld. Các quyền này không đủ cho các yêu cầu cao hơn, do đó, chúng ta cần thay đổi policy để gán quyền cho CloudFormation để mở rộng các quyền.\
  2. Mở AWS IAM Console và chọn Roles.\
  3. Trong box Filter, nhập CodeStarWorker-dev-flight-svc-CloudFormation để tìm đúng IAM Role.\
  4. Mở IAM role.

Addpolicy

  • Ấn Add permission, sau đó chọn Add inline policy.

Addpolicy

  1. Chuyển đến tab JSON và dán đoạn mã sau đây vào:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iam:GetRole",
        "iam:CreateRole",
        "iam:DeleteRole",
        "iam:PassRole",
        "iam:PutRolePolicy",
        "iam:DeleteRolePolicy",
        "lambda:ListTags",
        "lambda:TagResource",
        "lambda:UntagResource",
        "lambda:AddPermission",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:CreateNetworkInterface",
        "ec2:AttachNetworkInterface",
        "ec2:DescribeNetworkInterfaces"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

Addpolicy

  1. Nhập tên policy idevelopCodeStarCloudFormationPolicy và chọn Create policy.

Addpolicy

Khi thêm vai trò CodeStarWorker-dev-flight-svc-CloudFormation, các quyền trong idevelopCodeStarCloudFormationPolicy policy cho phép CLoudFormation hành động thay mặt bạn khi các triển khai thay đổi trong môi trường, bao gồm quyền cho phép hàm Lambda gắn với VPC nơi RDS instance lưu trữ trang web TravelBuddy được triển khai. Chúng cũng cho phép CloudFormation tạo một IAM Role mới mà hàm Lambda sử dụng để thực thi.

  1. Tập tin CloudFormation template template.yml được cung cấp trong FlightSpecials.zip có một vài giá trị cần cập nhật trước khi tiến hành triển khai. Những giá trị này bao gồm Subnet Ids, Security Group Ids and the RDS Instance Endpoint.

  2. Mở tập tin template.yml và thay thế giá trị sg- bởi Security Group Id của DBSecurityGroup.

DBSecurityGroup

  1. Thay thế giá trị subnet- bằng 2 privateSubnet ID có tên Module3/DevAxNetworkVPC/privateSubnet

SubnetID

  1. Thay thế giá trị bằng RDSEndpoint được cung cấp trong mục OUTPUT của ClouFormation hoặc Endpoit trong RDS instance

RDSEndpoint

  1. Khi hoàn tất, bạn sẽ có VPCConfig section như sau:

VPCConfig