Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X. Thông tin
Phiên bản 2.0.2
Gọi Cloud Functions được triển khai thông qua dự án Google Cloud của bạn.
Hiện tại, tiện ích này hỗ trợ việc gọi các hàm kích hoạt HTTP.
Điều kiện tiên quyết
Nội dung này cung cấp thông tin tham khảo để định cấu hình và sử dụng tiện ích này. Trước khi sử dụng tiện ích từ một proxy API bằng chính sách ExtensionCallout, bạn phải:
Bật Cloud Functions API.
Xác định và triển khai các hàm trong Cloud Functions cho dự án của bạn trên Google Cloud.
Cấp quyền truy cập cho người dùng thông qua IAM cho cấp truy cập mà bạn muốn cho hàm. Ví dụ: bạn có thể giới hạn quyền truy cập vào hàm chỉ cho tài khoản dịch vụ mà bạn dùng để định cấu hình tiện ích.
Sử dụng nội dung của tệp JSON khoá thu được khi thêm và định cấu hình tiện ích bằng cách sử dụng tài liệu tham khảo về cấu hình.
Giới thiệu về Cloud Functions
Với Google Cloud Functions, bạn có thể tạo và triển khai các hàm trên Google Cloud, sau đó gọi các hàm đó từ mã khác. Để tìm hiểu về Cloud Functions, hãy thử một trong các hướng dẫn bắt đầu nhanh.
Mẫu
Ví dụ sau minh hoạ cách gọi các hàm trong Cloud Functions bằng cách sử dụng chính sách ExtensionCallout.
Gọi hàm Node.js
Ví dụ sau đây có chính sách ExtensionCallout gọi một tiện ích Google Cloud Functions. Tiện ích này gọi hàm "hello world" mặc định có trong API Cloud Functions khi bạn bật API này.
JavaScript Node.js sau đây được triển khai trong Cloud Functions cho một tài khoản GCP. Nếu yêu cầu có thuộc tính thông báo, thì mã sẽ trả về thuộc tính đó. Nếu không, hàm này sẽ trả về "Hello World!" làm phản hồi.
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.helloWorld = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
res.status(200).send(message);
};
Ví dụ này bao gồm một tiện ích Google Cloud Functions được định cấu hình bằng thông tin đăng nhập cần thiết để xác thực và được phép gọi mã trên Cloud Functions.
Mã hàm nêu trên được lưu trong Cloud Functions dưới dạng helloWorld. Đoạn mã cấu hình chính sách ExtensionCallout sau đây sử dụng tên này, cùng với các giá trị khu vực và mã dự án khớp với thông tin cụ thể về môi trường Cloud Functions nơi hàm được triển khai.
<Action>invoke</Action>
<Input><![CDATA[
{
"region" : "us-central1",
"projectId" : "my-project",
"functionName" : "hello-world",
"method" : "POST",
"payload" : { "message" : "Hello yourself!" }
}
]]></Input>
<Output parsed="false">function.response</Output>
Chính sách AssignMessage sau đây ghi lại giá trị phản hồi cho mục đích gỡ lỗi.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
<DisplayName>Get Function Response</DisplayName>
<AssignTo type="response" createNew="false"/>
<Set>
<Payload contentType="application/json">{function.response}</Payload>
</Set>
</AssignMessage>
Phản hồi cho yêu cầu ở trên sẽ có dạng như sau:
Hello yourself!
Giá trị mặc định của parsed là true. Ví dụ này đặt parsed="false" trong thẻ <Output> của chính sách, điều này ngăn chính sách phân tích cú pháp phản hồi JSON.
Đối với hầu hết các trường hợp khi sử dụng tiện ích Cloud Functions, bạn sẽ đặt parsed="false".
Hãy xem phần tử<Output> để biết thêm thông tin.
Nếu Cloud Functions trả về một phản hồi JSON và bạn đặt parsed="true", thì phản hồi từ tiện ích sẽ là một tham chiếu đối tượng. Để trích xuất câu trả lời từ tài liệu tham khảo, hãy sử dụng cú pháp sau: {objectName}.{jsonKey}. Ví dụ:
function.response.message
Thao tác
gọi
Gọi một hàm trên đám mây.
Hiện tại, tiện ích này hỗ trợ việc gọi các hàm kích hoạt HTTP.
Cú pháp
<Action>invoke</Action>
<Input><![CDATA[
{
"region" : "deployment-region",
"projectId" : "project-id",
"functionName" : "function-name",
"method" : "http-method",
"payload" : { json-payload }
}
]]></Input>
<Output>function.response</Output>
Ví dụ:
<Action>invoke</Action>
<Input><![CDATA[
{
"region" : "us-central1",
"projectId" : "my-project",
"functionName" : "hello-world",
"method" : "POST",
"payload" : { "message" : "Hello yourself!" }
}
]]></Input>
<Output>function.response</Output>
Tham số yêu cầu
| Tham số | Mô tả | Loại | Mặc định | Bắt buộc |
|---|---|---|---|---|
| khu vực | Khu vực Google Cloud nơi hàm được triển khai. | Chuỗi. | Không có. | Có. |
| projectId | Mã dự án GCP. | Chuỗi. | Không có. | Có. |
| functionName | Tên của hàm HTTP cần gọi. Đây là tên bạn đã dùng khi tạo hàm (không nhất thiết phải là tên trong mã của hàm). | Chuỗi. | Không có. | Có. |
| method | Phương thức HTTP cần dùng khi gọi hàm. | Chuỗi. | GET |
STT |
| tải trọng | Tải trọng cần gửi cùng với lệnh gọi hàm. | JSON. | Không có. | STT |
Phản hồi
Giá trị phản hồi của hàm được chỉ định (nếu có).
Thuộc tính phản hồi
Không có.
Tài liệu tham khảo về cấu hình
Hãy sử dụng những thông tin sau khi bạn định cấu hình và triển khai tiện ích này để sử dụng trong các proxy API. Để biết các bước định cấu hình một tiện ích bằng bảng điều khiển Apigee, hãy xem phần Thêm và định cấu hình tiện ích.
Thuộc tính mở rộng chung
Các thuộc tính sau có sẵn cho mỗi tiện ích.
| Tài sản | Mô tả | Mặc định | Bắt buộc |
|---|---|---|---|
name |
Tên mà bạn đang đặt cho cấu hình của tiện ích này. | Không có | Có |
packageName |
Tên của gói tiện ích do Apigee Edge cung cấp. | Không có | Có |
version |
Số phiên bản của gói tiện ích mà bạn đang định cấu hình tiện ích. | Không có | Có |
configuration |
Giá trị cấu hình cụ thể cho tiện ích bạn đang thêm. Xem Thuộc tính cho gói tiện ích này | Không có | Có |
Các thuộc tính cho gói tiện ích này
Chỉ định các giá trị cho các thuộc tính cấu hình sau đây dành riêng cho tiện ích này.
| Thuộc tính | Mô tả | Mặc định | Bắt buộc |
|---|---|---|---|
| thông tin xác thực | Khi được nhập vào bảng điều khiển Apigee Edge, đây là nội dung của tệp khoá tài khoản dịch vụ. Khi được gửi qua API quản lý, đây là giá trị được mã hoá base64 được tạo từ tệp khoá tài khoản dịch vụ. | Không có. | Có. |