1. Giới thiệu.

AWS: amazon web service là các dịch vụ web do amazon cung cấp trên cloud như là database (RDS đối với mysq, dynamodb đối với nosql), server (EC2), file storate (S3), lambda, ....

Trang chủ AWS: https://aws.amazon.com

Lambda: Là dịch vụ cung cấp giải pháp tự động tính toán khi nhận một sự thay đổi từ DB hoặc S3 (tự động) hoặc được gọi một cách thủ công (thông qua API Gateway).

Assyn: Bình thường nếu gọi hàm lamda thì các lời gọi phải xếp hàng nhau đợi lời gọi trước thực hiện xong thì lời gọi tiếp theo mới được thực thi. Với khai báo assyn, chúng ta có thể cho các lời gọi chạy đồng thời, giúp tiệt kiệm được thời gian trễ đối với các dịch vụ.

API Gateway: Là một service xây dựng api (url) để gọi tới hàm lambda một cách tự động.

2. Cách làm.

B1: Vào mục API Gate way trong trang chủ AWS và tạo các resource và method theo ý của bạn:

             tạo API gateway

Hình trên mình tạo các resource là /lead, /print-dev, /{request_id},... và method là GET.

B2: Khi tạo method các bạn lựa chọn như sau:

         tạo API gateway aws

  • Integration Type: chọn AWS Service
  • AWS Region: chọn region nơi bạn đăng ký dịch vụ.
  • AWS Service: Chọn Lambda
  • Http method: Chọn post
  • Action Type: Chọn Use path override
  • Path override (optional): có định dạng "/2105-03-31/functions/{arn lambda function của bạn}/invocations"

Lưu ý: tiền tố /2015-03-31/functions/ và hậu tố /invocations là cố định

  • Execution Role: Chọn role của bạn.

B3: Sau khi tạo xong method, giao diện sau sẽ xuất hiện:

      tạo API gateway aws

 

B4: Chọn Method Request ở giao diện trên và làm như sau:

tạo api gateway aws

+ Trong phần Request Paths: Thêm các trường tương ứng với params muốn truyền vào qua url (cũng là các resource nằm trong dấu {} ở bước 1)

+ Trong phần HTTP Request Headers: Thêm trường invokeType (tên theo ý bạn, là trường khai báo trong header url nếu muốn gọi assyn).

 

B5: Quay lại B3 và chọn mục Integration Request:

tạo API gateway aws

+ Trong phấn HTTP Headers: Thêm record với Name là X-Amz-Invocation-Type, Mapped from có giá trị là method.request.header.invokeType (invokeType chính là param header mình khai báo ở phần trên, có thể thay đổi tên này tùy theo các bạn đặt tên).

+ Trong phần Body Mapping Template: Chọn Add mapping template, điền application/json vào input:

      tạo API gateway aws

+ Rồi điền vào như hình dưới ở ô bên dưới:

     tạo API gateway aws với laravel

Lưu ý: printRequestId chính là param ta nhận được ở trong hàm lambda khi được gọi, còn param request_id chính là param ta truyền vào url khi gọi.

 

B6: Deploy API để tạo API url từ những thiết đặt mình đã làm ở trên:

Chọn Actions rồi chọn deploy API:

      tạo api gateway gọi async

B7: Sau khi deploy API, ta vào mục Stage ở thanh bên trái màn hình:

Invoke URL ở phía trên bên phải màn hình chính là URL mà ta gọi API tới lambda, thay {request_id} với giá trị bạn muốn truyền vào.

           Tạo api gateway aws