Trong php ngắn

Trong những năm gần đây, một cách khác để xây dựng các ứng dụng đã xuất hiện được gọi là điện toán không có máy chủ. Thuật ngữ này không phải là một tên hay; . đặt tên mọi thứ, vô hiệu hóa bộ đệm và lỗi từng cái một. Điện toán không máy chủ như một cái tên ngụ ý không có máy chủ, nhưng vẫn có máy chủ—mặc dù bạn không nghĩ về chúng. Một cách tốt hơn để nghĩ về nó là các máy chủ và việc quản lý chúng được trừu tượng hóa và nhà cung cấp quản lý việc phân bổ tài nguyên chứ không phải kiến ​​trúc sư ứng dụng

Nhận toàn bộ vấn đề

Bài viết này đã được xuất bản trong số tháng 5 năm 2019 của tạp chí php[architect]. Tải xuống Bài báo miễn phí PDF để xem nó trông như thế nào trên tạp chí đã xuất bản

Nếu bạn muốn nhiều bài viết như thế này, hãy đăng ký ngay hôm nay. Bạn có thể nhận từng số phát hành hàng tháng ở dạng kỹ thuật số và tùy chọn in hoặc mua từng số phát hành riêng lẻ

Đặt mua

Amazon Lambda được cho là đã bắt đầu điện toán không có máy chủ. Đó là một hệ thống nơi mã của bạn chạy theo yêu cầu và thậm chí không có trong bộ nhớ nếu nó không chạy. Chúng tôi gọi các chức năng này là một dịch vụ [FaaS]. Mã mô-đun thực thi để phản hồi lại một sự kiện và do đó, các phần khác nhau trong ứng dụng của chúng tôi có thể được mở rộng một cách độc lập mà không cần bất kỳ nỗ lực bổ sung nào từ phía chúng tôi. Ưu điểm chính là chúng tôi dành nhiều thời gian hơn để tập trung vào cốt lõi của một ứng dụng mang lại giá trị và ít lo lắng hơn về cách chạy và mở rộng ứng dụng đó. Ngoài ra còn có một lợi ích phụ đáng yêu là bạn chỉ trả tiền khi mã của bạn đang chạy, vì vậy chi phí của bạn tỷ lệ thuận với việc sử dụng. Vì FaaS khuyến khích xây dựng các đơn vị chức năng nhỏ độc lập, nên bạn cũng có được các ứng dụng mô-đun

Tất nhiên, cũng có những nhược điểm. Khó lý giải hơn về một ứng dụng trải rộng trên nhiều chức năng và dịch vụ riêng biệt. Việc gỡ lỗi và theo dõi chức năng nào được triển khai ở đâu cũng khó hơn. FaaS và serverless không phải là giải pháp cho mọi vấn đề nhưng là giải pháp tốt cho nhiều trường hợp sử dụng

Trong bài viết này, tôi sẽ hướng dẫn cách sử dụng Lambda với PHP để thực thi một hàm. Trong phần hai, tôi sẽ xây dựng một trang web tĩnh được lưu trữ trên S3, với CDN được cập nhật thông qua chức năng Lambda. Để làm điều này, chúng tôi sử dụng Bref. Được tạo bởi Matthieu Napoli, Bref chứa tất cả các chức năng cần thiết để triển khai các hàm PHP vào Lambda theo cách đơn giản, rõ ràng và dễ dàng. Nó cung cấp thời gian chạy cho PHP 7. 2 và 7. 3. Nó được liên kết chặt chẽ với Amazon, vì vậy nếu bạn quan tâm đến việc chạy PHP trong IBM Cloud Function, bạn sẽ sử dụng một công cụ khác, chẳng hạn như Serverless Framework

Hãy bắt đầu bằng cách thiết lập AWS

Thiết lập AWS

Hãy bắt đầu bằng cách tạo một ứng dụng Lambda Hello World duy nhất. Trước tiên, chúng ta phải bắt đầu với các điều kiện tiên quyết của mình. công cụ dòng lệnh AWS và tài khoản AWS. Điều này bao gồm nhiều bước hơn bạn nghĩ ban đầu vì AWS có một hệ thống quyền mạnh mẽ và đầy đủ được gọi là IAM kiểm soát quyền truy cập của người dùng, do đó, ngoài việc cài đặt các công cụ dòng lệnh, chúng tôi cũng cần thiết lập một người dùng có đủ quyền để tạo ứng dụng của mình

Có hai công cụ dòng lệnh chúng ta cần.

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
4 và
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
5. Như bạn có thể đoán, từ cái tên của nó,
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
4 là công cụ dòng lệnh cho phép truy cập vào tất cả hệ thống AWS. Công cụ khác,
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
5 là cách chúng tôi tương tác với hệ thống AWS Serverless Application Model [SAM] được Bref sử dụng. Để cài đặt công cụ dòng lệnh
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
4, hãy truy cập https. //aws. amazon. com/cli/ và làm theo hướng dẫn;

Bây giờ chúng tôi có các công cụ cần thiết để thiết lập thông tin đăng nhập để SAM có thể tạo và quản lý tài nguyên ứng dụng cho chúng tôi. Nếu bạn không có tài khoản AWS, hãy truy cập https. // bảng điều khiển. aws. amazon. com và tạo một. Các công cụ dòng lệnh yêu cầu các phím truy cập. Để làm điều này, chúng tôi cần một người dùng mới vì chúng tôi không muốn sử dụng người dùng chính của mình. Quá trình này được mô tả rõ trong tài liệu Serverless Framework

Tóm tắt

  1. Tạo hoặc đăng nhập vào tài khoản AWS của bạn và truy cập trang Quản lý danh tính và truy cập [IAM]
  2. Nhấp vào Người dùng sau đó Thêm người dùng và nhập tên người dùng
    $ mkdir bref-hello-world
    $ cd bref-hello-world
    $ composer require mnapoli/bref
    0
  3. Đối với loại Quyền truy cập, hãy chọn Chỉ quyền truy cập có lập trình vì người dùng này cần quyền truy cập CLI và API chứ không phải quyền truy cập bảng điều khiển web
  4. Bấm tiếp. Quyền để đặt quyền cho người dùng của chúng tôi
  5. Nhấp vào Đính kèm trực tiếp các chính sách hiện có rồi nhấp vào Tạo chính sách
  6. Trong tab mới mở ra, nhấp vào JSON và dán JSON từ Liệt kê 1
  7. Nhấp vào Xem lại chính sách và đặt tên cho nó là "chính sách bref-agent-policy", sau đó nhấp vào Tạo chính sách và đóng tab để quay lại tab nơi chúng tôi sẽ thêm người dùng của mình
  8. Nhấp vào nút làm mới [hai mũi tên trong vòng tròn] ở bên phải để làm mới danh sách các chính sách hiện có
  9. Tìm bref-agent-policy trong danh sách, chọn hộp bên cạnh và nhấp vào Tiếp theo. thẻ
  10. Chúng tôi không muốn thêm bất kỳ thẻ nào, vì vậy hãy nhấp vào Tiếp theo. Xem lại, sau đó Tạo người dùng

Liệt kê 1

{
    "Statement": [
        {
            "Action": [
                "apigateway:*",
                "cloudformation:*",
                "dynamodb:*",
                "events:*",
                "iam:*",
                "lambda:*",
                "logs:*",
                "s3:*",
                "sns:*",
                "states:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ],
    "Version": "2012-10-17"
}

Liệt kê 1 là tập hợp các quyền mà chúng tôi cấp cho người dùng tạo ứng dụng serverless của chúng tôi, do đó, ứng dụng này có quyền quản trị để tạo bộ chứa S3, bảng DynamoDB, ngăn xếp CloudFormation, chính sách IAM, v.v. Đó là một chính sách khá cởi mở nên để sản xuất sử dụng;

Bây giờ chúng tôi có một người dùng mới được gọi là

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
0. Lưu ý ID khóa truy cập và khóa truy cập Bí mật

Định cấu hình AWS CLI

Cách dễ nhất để cấu hình các công cụ

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
4 và
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
5 là chạy
$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
4

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

Sử dụng ID khóa truy cập và Khóa truy cập bí mật theo lời nhắc, đặt khu vực của bạn thành

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
5 và sử dụng JSON cho định dạng đầu ra của bạn

Bây giờ chúng ta đã thiết lập AWS, chúng ta có thể viết hàm Lambda đầu tiên của mình

Xin chào thế giới với Bref

Để tạo hàm Lambda bằng Bref, chúng ta bắt đầu với một thư mục mới và cài đặt Bref vào đó

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref

Các lệnh này đã cài đặt mã Bref vào thư mục

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
6, vì vậy chúng ta có thể tiếp tục và tạo dự án ngay bây giờ. Bạn sẽ thấy một cái gì đó giống như Đầu ra 1

Đầu ra 1

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
6

Bref hỗ trợ ba loại dự án serverless khác nhau tùy thuộc vào nhu cầu của bạn. Đối với trường hợp của chúng tôi, chúng tôi muốn có một hàm Lambda tiêu chuẩn, vì vậy chúng tôi chọn tùy chọn

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
7, sau đó Bref tạo các tệp của chúng tôi. Để tìm hiểu thêm về các tùy chọn, hãy xem tài liệu Bref về thời gian chạy

Chúng tôi có những tập tin nào?

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
8 đã tạo hai tệp quan tâm.
$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
9 và
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
60. Bắt đầu với
$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
9, chúng ta có mẫu SAM là tệp cấu hình xác định ứng dụng của chúng ta và trong trường hợp của chúng ta chứa định nghĩa về hàm Lambda đầu tiên của chúng ta [xem Liệt kê 2]

Liệt kê 2

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

Tệp mẫu bao gồm một tiêu đề nhỏ và phần

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
62 chứa chức năng của chúng tôi. Tên tài nguyên của nó là
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
63 và nó có kiểu là
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
64. Để xác định các thuộc tính của chức năng, chúng tôi cung cấp một bộ thông tin cấu hình theo khóa
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
65. Bảng bên dưới hiển thị các thuộc tính chính của hàm Lambda

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
66
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
67 Tên của hàm Lambda. Lưu ý rằng tên này không giống với tên tài nguyên CloudFormation [
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
63].
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
69
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
20 Đường dẫn đến mã nguồn.
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
21
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
60Tệp PHP chứa hàm lambda mà lớp thời gian chạy Bref sẽ gọi.
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
23
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
24 Thời gian chạy ngôn ngữ sẽ gọi hàm. Đối với Bref, đây là
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
24 vì chúng tôi cung cấp lớp thời gian chạy cho Lambda.
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
26A Danh sách các lớp Theo mặc định, đây là Bref's PHP 7. 3 lớp thời gian chạy từ khu vực chúng tôi-đông-1. Xem danh sách này https. // thời gian chạy. Nói ngắn gọn. sh để biết các ARN chính xác cho các khu vực và phiên bản PHP khác

Như bạn có thể thấy, mẫu của chúng tôi xác định một tài nguyên duy nhất. một hàm Lambda có tên là

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
67 nằm trong
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
60 trong thư mục hiện tại. Hãy xem
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
60

Hàm
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
1____410. Nó nhận một mảng
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
11 chứa dữ liệu đầu vào cho hàm và bạn có thể trả về bất cứ thứ gì bạn muốn miễn là nó có thể tuần tự hóa JSON.
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
11 này chứa thông tin về yêu cầu đã kích hoạt chức năng lambda của bạn. Trong trường hợp này, chúng tôi trả về chuỗi
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
13 theo sau là tên nếu nó tồn tại, nếu không thì
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
14

Triển khai chức năng của chúng tôi

Nếu bạn đã sử dụng vùng

$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
5 cho cấu hình của mình như được đề xuất, thì chúng tôi có thể tiếp tục và triển khai chức năng của mình ngay lập tức

Việc triển khai được thực hiện bằng công cụ

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
5;

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
9

Bạn có thể đặt tên cho nhóm của mình theo bất kỳ thứ gì bạn thích, nhưng tên đó phải là duy nhất trên toàn cầu. Tôi muốn thêm hậu tố bằng tên viết tắt của mình và lý do tạo ra thùng để đảm bảo nó là duy nhất và tôi có thể nhớ nó dùng để làm gì

Có hai bước để triển khai ứng dụng của chúng tôi. Đầu tiên, chúng tôi tải mã lên và tạo ngăn xếp CloudFormation vào bộ chứa S3, sau đó chúng tôi triển khai ngăn xếp

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
0

Tệp mẫu đầu ra [

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
17] là tệp CloudFormation trung gian và không cần thiết sau khi triển khai. Tên ngăn xếp phải là duy nhất trong khu vực AWS, vì vậy tôi đặt tên nó giống với nhóm S3 của mình

Chạy chức năng của chúng tôi

Để gọi chức năng của chúng tôi, chúng tôi có thể sử dụng

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
18

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
3

Để gửi dữ liệu đến chức năng của chúng tôi, chúng tôi có thể chuyển đối tượng JSON vào tham số ______419 như thế này

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
5

Kết quả là đầu ra của

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
90

Làm sạch

Chúng tôi có thể xóa ứng dụng bằng cách sử dụng

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
0

Chúng ta cũng cần xóa nhóm S3 với

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

Các cách khác để gọi chức năng của chúng tôi

Gọi một hàm bằng dòng lệnh hoặc lệnh gọi API AWS đã được xác thực không phải là cách dễ dàng nhất để thực thi mã của chúng tôi; . Lambda hỗ trợ nhiều nguồn sự kiện khác nhau, chẳng hạn như hàng đợi, thay đổi cơ sở dữ liệu, thay đổi bộ chứa S3, yêu cầu HTTP hoặc lịch biểu kiểu cron. Để chức năng của bạn phản hồi một sự kiện, bạn cần cập nhật định nghĩa mẫu với sự kiện mà bạn muốn phản hồi. Bạn có thể tìm thấy danh sách các loại nguồn sự kiện trong tài liệu SAM

Để lên lịch cho chức năng của chúng tôi theo các khoảng thời gian đều đặn, chúng tôi thêm một sự kiện

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
91 vào chức năng của chúng tôi trong
$ mkdir bref-hello-world
$ cd bref-hello-world
$ composer require mnapoli/bref
9 như Liệt kê 4

Liệt kê 4

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

Chúng tôi thêm một thuộc tính mới có tên là sự kiện và sau đó có thể thêm bao nhiêu nguồn sự kiện tùy thích. Trong trường hợp này, chúng tôi tạo một nguồn sự kiện, MySchedule có tốc độ một phút. Thuộc tính lịch trình có thể là một cron hoặc một biểu thức tốc độ như được giải thích trong Biểu thức lịch trình cho các quy tắc trong tài liệu CloudWatch

Chúng tôi chạy lại các lệnh

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
93 và
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
94 để triển khai thay đổi cho Lambda và hiện tại chức năng của chúng tôi đang thực thi mỗi phút một lần

Để chứng minh chức năng của chúng tôi đang thực thi một lần mỗi phút, chúng tôi có thể xem nhật ký CloudWatch. Bạn có thể thực hiện việc này qua bảng điều khiển AWS trên web hoặc qua dòng lệnh bằng cách sử dụng lệnh sau để xem quá trình thực thi hàm Lambda diễn ra mỗi phút

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/EXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json
3

Đừng quên xóa sự kiện MySchedule và triển khai lại để tắt lại

Phần kết luận

Tôi đã cho bạn biết cách viết các hàm phi máy chủ bằng PHP. Đó là một mô hình mạnh mẽ và với Bref, chúng tôi có thể sử dụng PHP của mình một cách dễ dàng trên AWS Lambda. Là nhà phát triển PHP, chúng tôi cũng có thể hưởng lợi từ môi trường này, nơi mã của chúng tôi thực thi để đáp ứng với một sự kiện, tự động thay đổi quy mô theo yêu cầu và tốt nhất là chúng tôi chỉ trả tiền khi mã của chúng tôi chạy. Có nhiều tình huống mà mô hình này có thể được sử dụng để thêm chức năng cho một ứng dụng hiện có hoặc để viết một ứng dụng hoàn toàn mới chẳng hạn như API

Vì các ứng dụng serverless có xu hướng sử dụng các dịch vụ khác nên trong phần hai của loạt bài này, tôi xem xét cách chúng ta có thể viết một ứng dụng thực tích hợp chức năng Lambda với bộ lưu trữ đám mây AWS S3 và CDN CloudFront để tạo một trang web tĩnh được cập nhật với phiên bản mới. hình ảnh từ Flickr

Tiểu sử

Rob Allen là nhà tư vấn và phát triển phần mềm có nhiều năm kinh nghiệm và viết mã bằng PHP, Python, Swift và các ngôn ngữ thú vị khác. Anh ấy đã lãnh đạo nhóm phát triển của Slim Framework và đóng góp cho rst2pdf, Apache OpenWhisk và các dự án mã nguồn mở khác. Rob là một tác giả đã xuất bản và có trụ sở tại Vương quốc Anh, nơi ông điều hành Nineteen Feet Limited, tập trung vào phát triển, đào tạo và tư vấn API. Trong thời gian rảnh rỗi, Rob viết blog tại akrabat. com và thường có thể được nhìn thấy với một chiếc máy ảnh trên tay. @akrabat

Chủ Đề