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.
Chuyển đến Tài liệu về Apigee X.
thông tin

Phiên bản 1.3.1

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ợ 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 tài liệu 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 của một proxy API bằng chính sách ExtensionAnnotation (Chú thích tiện ích), bạn phải:

  1. Bật Cloud Functions API.

  2. Xác địnhtriển khai các chức năng 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 qua IAM cho cấp truy cập mà bạn muốn đối với chức năng. Ví dụ: bạn có thể giới hạn quyền truy cập vào hàm này chỉ cho tài khoản dịch vụ mà bạn sử dụng để định cấu hình tiện ích.

  4. Sử dụng Bảng điều khiển của GCP để tạo khoá cho tài khoản dịch vụ.

  5. Sử dụng nội dung của tệp JSON của 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

Nhờ 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. Để được giới thiệu về Cloud Functions, hãy thử một trong các bước bắt đầu nhanh.

Mẫu

Ví dụ sau minh hoạ cách gọi các hàm trong Chức năng đám mây bằng Chính sách về tiện ích chú thích.

Gọi hàm Node.js

Ví dụ sau đây giới thiệu chính sách ExtensionAnnotation (Chính sách về tiện ích mở rộng chú thích) gọi một tiện ích của Google Cloud Functions. Tiện ích này gọi lệnh "hello world" mặc định đi kèm khi bạn bật Cloud Functions API.

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ó chứa một thuộc tính của tin nhắn, 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 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 đơn giản là helloWorld. Mã cấu hình chính sách ExtensionAnnotation sau đây sử dụng tên này, cùng với các giá trị mã khu vực và mã dự án khớp với các thông tin cụ thể của môi trường Hàm đám mây 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 chỉ định 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ẽ như sau:

Hello yourself!

Giá trị mặc định của parsedtrue. Ví dụ sau sẽ đặt parsed="false" trong thẻ <Output> của chính sách. chính sách này 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 đặt parsed="false". Xem phần <Output> (Đầu ra) để biết thêm thông tin.

Nếu Hàm đám mây trả về phản hồi JSON và bạn đặt parsed="true", thì phản hồi của tiện ích là một 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 Đám mây.

Hiện tại, tiện ích này hỗ trợ 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>

Yêu cầu thông số

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 này. Chuỗi. Không có. Có.
projectId Mã dự án GCP. Chuỗi. Không có. Có.
functionName Tên hàm HTTP cần gọi. Đây là tên mà 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 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ó.

Tham chiếu cấu hình

Sử dụng mã sau 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 một tiện ích bằng bảng điều khiển Apigee, hãy xem bài viết Thêm và định cấu hình tiện ích.

Các thuộc tính tiện ích 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ó
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 của gói tiện ích này

Chỉ định giá trị cho các thuộc tính cấu hình sau 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ụ của bạn. Khi được gửi qua API quản lý, giá trị nà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ó.