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

Gọi các Chức năng đám mây đượ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 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 từ proxy API bằng Chính sách chú thích tiện ích, bạn phải:

  1. Bật Cloud Functions API.

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

Với Google Cloud Functions, bạn có thể tạo và triển khai các chức năng trên Google Cloud, sau đó gọi các chức năng đó từ đoạn mã khác. Để tìm hiểu giới thiệu về Hàm đám mây, hãy thử một trong các cách 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 Chú thích phần mở rộng.

Gọi hàm Node.js

Ví dụ sau đây mô tả Chính sách chú thích tiện ích gọi một tiện ích Google Cloud Functions. Tiện ích này sẽ gọi hàm "xin chào thế giới" mặc định khi bạn bật Cloud Functions API.

JavaScript Node.js sau đây được triển khai trong Hàm đám mây cho một tài khoản GCP. Nếu yêu cầu có chứa một thuộc tính tin nhắn, thì mã sẽ trả về thuộc tính đó. Nếu không, hệ thống sẽ trả về "Hello World!" (Xin chào mọi ngườ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 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 thông tin cụ thể của môi trường Hàm đám mây nơi triển khai chức năng.

<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áchAssignMessage 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, để 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". Xem phần tử<Output> để biết thêm thông tin.

Nếu Hàm Cloud trả về phản hồi JSON và bạn đặt parsed="true", thì phản hồi qua tiện ích sẽ là tham chiếu đối tượng. Để trích xuất phản hồi từ 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 hàm Cloud.

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

Thông số yêu cầu

Thông số Nội dung mô tả Loại Mặc định Bắt buộc
region Khu vực Google Cloud nơi triển khai chức năng. Chuỗi. Không nội dung nào. Có.
projectId Mã dự án GCP. Chuỗi. Không nội dung nào. 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 từ mã của hàm). Chuỗi. Không nội dung nào. Có.
method Phương thức HTTP để sử dụng khi gọi hàm. Chuỗi. GET Không.
payload Tải trọng cần gửi kèm theo lệnh gọi hàm. JSON. Không nội dung nào. Không.

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 nội dung nào.

Tài liệu tham khảo về cấu hình

Sử dụng các đoạn mã 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 bài viết Thêm và định cấu hình tiện ích.

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

Tài sản Nội dung 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 của 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à giá trị được mã hoá base64 từ tệp khoá tài khoản dịch vụ. Không nội dung nào. Có.