Tiện ích mở rộng chức năng của Google Cloud

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:

  1. Bật Cloud Functions API.

  2. Xác địnhtriển khai các hàm trong Cloud Functions cho dự án của bạn trên Google Cloud.

  3. 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.

  4. Sử dụng GCP Console để tạo khoá cho tài khoản dịch vụ.

  5. 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 parsedtrue. 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ó
packageName Tên của gói tiện ích do Apigee Edge cung cấp. Không 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ó
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 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ó.