Triển khai Continuous Delivery cho dự án Serverless Backend với Gitlab-CI và AWS Lambda Function

by thangpv12
157 views

Article overview

Giả sử chúng ta phát triển một sản phẩm Serverless Backend với AWS Lambda Function và mong muốn áp dụng CD để tự động hoá công việc deploy lên Cloud.
Bài viết áp dụng cho cấu trúc hệ thống git với mỗi một Function sẽ có một branch phát triển riêng. Ví dụ source code cho Function authentication sẽ được lưu ở branch master-authentication.

Tổng quan về các công nghệ sử dụng:

  • NodeJS
  • Gitlab-CI
  • AWS Lambda Function, AWS CLI
  • Môi trường MacOS, Linux

Table of contents

Chúng ta cần một số bước sau:

Cài đặt và cấu hình môi trường tại thiết bị chạy service runner

Đầu tiên, chúng ta cần cài đặt AWS CLI.
Sau khi cài đặt xong, ta thực hiện config với thông tin của AWS User có quyền deploy lên AWS S3 với câu lệnh sau:

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

Cấu hình các job CI/CD với gitlab-ci.xml và Gitlab-CI

Đầu tiên, để có thể update code lên AWS Lambda chúng ta sẽ sử dụng command aws lambda update-function-code.

Command hỗ trợ tham số –zip-file để upload source code dưới dạng .zip file, nên việc đầu tiên chúng ta cần làm là zip source code lại.
zip -r deploy.zip .
Sau khi zip xong, ta thực hiện deploy zip file lên AWS Lambda bằng câu lệnh sau:

aws lambda update-function-code --function-name authentication --zip-file fileb://deploy.zip

Với authentication là tên của Lambda Function, deploy.zip là tên file zip cần đẩy lên.

Ta sẽ setting command cho package.json như sau:

"scripts": {
    "deploy": "zip -r deploy.zip . && aws lambda update-function-code --function-name authentication --zip-file fileb://deploy.zip"
}

Tiếp đó, ta sẽ cấu hình .gitlab-ci.yml để hệ thống tự động deploy khi có thay đổi trên nhánh master-authentication.

stages:
  - Deployment
deploy:
  stage: Deployment
  before_script: []
  only:
      - master-authentication
  allow_failure: true
  script:
    - yarn install --production 
    - yarn deploy

Sau đó merge code vào master-authentication, và hưởng thành quả. Từ giờ các bạn không cần phải deploy bằng tay nữa rồi, chúc các bạn may mắn.

Authors

ThangPV12

4 comments

Sam August 4, 2021 - 12:36 PM

Amazing, Gút Chóp em!

Reply
Anonymous August 4, 2021 - 12:39 PM

Good job, bro

Reply
minhnn1020 August 4, 2021 - 12:55 PM

Best article, hihi

Reply
AnhLPT August 25, 2021 - 5:22 PM

Hay quá

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

You may also like

%d bloggers like this: