Chạy AWS Lambda với PHP

Tram Ho

Ở thời điểm hiện tại (22.04.2020) aws lambda không hỗ trợ mặc định các trương trình php trên hệ thống của họ, chỉ hỗ trợ các ngôn ngữ như python, nodejs …
nếu muốn sử dụng được code php trên lambda chúng ta phải tự build runtime của php lên để thực thi code của mình. Bài viết này mình sẽ hướng dẫn các bạn các thao tác cần thiết để chạy được code php trên mỗi trường lambda.

Build php runtime

Thực hiện các bước sau để build custom runtime php.

  1. Khởi tạo EC2 instance amzn-ami-hvm-2018.03.0.20181129-x86_64-gp2. chú ý các bạn bắt bược phải dùng instance của aws để thực hiện build runtime này, bạn không thể build được ở local hay bất kỳ một server nào khác, nếu build trên môi trường khác đưa vào lambda nó sẽ báo lỗi file.
  2. SSh vào server ec2 vừa tạo thực hiện các câu lệnh sau đây.
    Cài các package cần thiết:
  3. Tiến hành Compiling PHP
    1. Tải PHP 7.3 source
    2. Compiling

    Thao tác build này diễn ra khá lâu, các bạn đợi chút nhé 😄
    Sau khi bạn thực hiện các công việc này xong, nó sẽ tạo ra một load các folder trong thưc mục /home/ec2-user/php-7.3-bin/ cho bạn, trong đó có 1 file php trong thư mục ~/php-7.3-bin/bin/php, đây chính là cái các bạn cần để chạy được php trên mỗi trường lambda. Đến đây bạn có thể download cái ~/php-7.3-bin/bin/php này về để thực hiện trên local của bạn.

  4. Bước tiếp theo bạn tạo 1 thư mục có cấu trúc như sau:

Các file sẽ có nội dung như sau:

#composer.json

cuối cùng là hello.php

  1. Bạn vào thưc mục này để cài đặt nội dung tiếp theo
  2. Cài đặt composer, nhiều máy có rồi thì bỏ qua bước này
  3. Install dependencies
  4. Tạo zip file để deploy code

    mình giải thích cụ thể từng file zip này một chút:

    1. cái runtime.zip chính là php runtime để cho lambda chạy được code php
    2. vendor.zip là các package của php như guzzlehttp, aws-sdk-php, bạn có thể thêm bất cứ package nào cho việc code vào đây.
    3. hello.zip chính là source của các bạn.

    ==> cái runtime và vendor mình sẽ upload nó vào phần layer của lambda, còn hellp.zip thì pload vào phần function.

Đến bước này nếu ai đã biết cách deploy lambda thì cũng có thể tự deploy được rồi, mình sẽ hướng dẫn tiếp các bạn mới deploy lambda sử dụng aws cli nhé.

  1. Đầu tiên bạn phải tạo role cho lambda function AWSLambdaBasicExecutionRole and S3FullAccess policies
  2. Configure AWS CLI tool
  3. Tạo layers
    1. Custom runtime layer
    2. Layer with vendor

sau khi chạy xong mỗi câu lệnh ở trên nó sẽ trả cho bạn một cái là version arn các bạn lưu cái này lại để tạo function nhé:

  1. Create function

    ok đến bước này là các bạn đã deploy xong fucntion lambda của mình rồi, bây giờ bạn cần login vào aws console để add trigger hoặc thực hiện thao tác add tương ứng.

    Tài liệu

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo