Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Phiên bản 2.0.0
Gọi các 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à deploy các hàm trong Cloud Functions cho dự án Google Cloud của bạn.
Cấp quyền truy cập cho người dùng thông qua IAM theo cấp truy cập mà bạn muốn cho hàm. Ví dụ: bạn có thể chỉ giới hạn quyền truy cập vào hàm 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 tệp tham chiếu 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 đây minh hoạ cách gọi các hàm trong Cloud Functions bằ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 đưa vào khi bạn bật API Cloud Functions.
Mã 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 bao gồm 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!" (Xin chào thế giới!) 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 xác thực cần thiết để xác thực và được uỷ quyền gọi mã trên Cloud Functions.
Mã hàm trước đó được lưu trong Cloud Functions dưới dạng helloWorld
. 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 chi tiết của môi trường Cloud Functions nơi triển khai hàm.
<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 sẽ 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, ngăn chính sách phân tích cú pháp phản hồi JSON.
Trong 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 Hàm trên đám mây trả về phản hồi JSON và bạn đặt parsed="true"
, thì phản hồi từ tiện ích sẽ là một tệp tham chiếu đối tượng. Để trích xuất phản hồi từ tệp tham chiếu, 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
Thông số | Mô tả | Loại | Mặc định | Bắt buộc |
---|---|---|---|---|
region | Khu vực Google Cloud nơi triển khai hàm. | 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 đã sử 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 sử dụng khi gọi hàm. | Chuỗi. | GET |
STT |
tải trọng | Trọng tải 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 đã 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 nội dung sau đây khi bạn định cấu hình và triển khai tiện ích này để sử dụng trong proxy API. Để biết các bước định cấu hình 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.
Các thuộc tính mở rộng phổ biến
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ó |
Thuộc tính cho gói tiện ích này
Chỉ định 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 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à một giá trị được mã hoá base64 được tạo từ tệp khoá tài khoản dịch vụ. | Không có. | Có. |