CHIA SẺ
Contents hide

Chức năng đầu tiên của bạn: Python

Hướng dẫn này sẽ đưa bạn qua quá trình viết Hàm đám mây bằng cách sử dụng thời gian chạy Python. Có hai loại Chức năng đám mây:

  • Một hàm HTTP mà bạn gọi từ các yêu cầu HTTP tiêu chuẩn.
  • Một chức năng nền mà bạn sử dụng để xử lý các sự kiện từ cơ sở hạ tầng Đám mây của mình, chẳng hạn như tin nhắn về chủ đề Cloud Pub / Sub hoặc các thay đổi trong nhóm Cloud Storage.

Mẫu cho thấy cách tạo một hàm HTTP đơn giản.Tìm hiểu thêm : Để biết thêm chi tiết, hãy đọc về các chức năng HTTP và các chức năng nền .

Cấu trúc hướng dẫn

  1. Tạo dự án GCP bằng Cloud SDK
  2. Tạo một hàm
  3. Chỉ định phụ thuộc
  4. Triển khai chức năng của bạn
  5. Kiểm tra chức năng của bạn

Tạo dự án GCP bằng Cloud SDK

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud.Lưu ý : Nếu bạn không có kế hoạch giữ các tài nguyên mà bạn tạo trong quy trình này, hãy tạo một dự án thay vì chọn một dự án hiện có. Sau khi hoàn thành các bước này, bạn có thể xóa dự án, xóa tất cả các tài nguyên được liên kết với dự án.Chuyển đến trang bộ chọn dự án
  2. Đảm bảo rằng thanh toán được bật cho dự án Đám mây của bạn. Tìm hiểu cách xác nhận rằng thanh toán được bật cho dự án của bạn .
  3. Bật các chức năng đám mây và API xây dựng đám mây.Bật các API
  4. Cài đặt và khởi chạy Cloud SDK .
  5. Cập nhật và cài đặt gcloudcác thành phần:cập nhật thành phần gcloud

Cần một dấu nhắc lệnh? Bạn có thể sử dụng Google Cloud Shell . Google Cloud Shell là một môi trường dòng lệnh đã bao gồm Google Cloud SDK, vì vậy bạn không cần cài đặt nó. Google Cloud SDK cũng được cài đặt sẵn trên Máy ảo Google Compute Engine.

  1. Chuẩn bị môi trường phát triển của bạn.Đi tới hướng dẫn thiết lập Python

Tạo một hàm

  1. Tạo một thư mục trên hệ thống cục bộ của bạn cho mã chức năng:Linux hoặc Mac OS Xcác cửa sổmkdir ~/helloworld
    cd ~/helloworld
  2. Tạo một main.pytệp trong helloworldthư mục với nội dung sau:functions / helloworld / main.pyXem trên GitHub Phản hồifrom flask import escape

    def hello_http(request):
    """HTTP Cloud Function.
    Args:
    request (flask.Request): The request object.
    <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
    Returns:
    The response text, or any set of values that can be turned into a
    Response object using `make_response`
    <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
    """
    request_json = request.get_json(silent=True)
    request_args = request.args

    if request_json and 'name' in request_json:
    name = request_json['name']
    elif request_args and 'name' in request_args:
    name = request_args['name']
    else:
    name = 'World'
    return 'Hello {}!'.format(escape(name))
    Hàm ví dụ này lấy một tên được cung cấp trong yêu cầu HTTP và trả về một lời chào hoặc “Hello World!” khi không có tên nào được cung cấp.Lưu ý: Chức năng đám mây tìm kiếm các chức năng có thể triển khai main.pytheo mặc định. Sử dụng --sourcecờ khi triển khai chức năng của bạn thông quagcloud để chỉ định tệp nguồn chức năng khác.

Chỉ định phụ thuộc

Sự phụ thuộc trong Python được quản lý bằng pip và được thể hiện trong một tệp siêu dữ liệu được gọi requirements.txt. Tệp này phải nằm trong cùng thư mục với main.pytệp chứa mã chức năng của bạn.

  1. Tạo một requirements.txttệp trong helloworldthư mục.
  2. Thêm phần phụ thuộc của hàm, trong trường hợp này là gói Flask , vào requirements.txttệp của bạn bằng cách thêm dòng sau:Flask==1.0.2

Tìm hiểu thêm : Để biết thêm chi tiết, hãy đọc về cách chỉ định phần phụ thuộc .

Triển khai chức năng

Để triển khai chức năng với trình kích hoạt HTTP, hãy chạy lệnh sau trong helloworldthư mục:

gcloud functions deploy hello_http --runtime python38 --trigger-http --allow-unauthenticated

Các --allow-unauthenticatedlá cờ cho phép bạn đạt được các chức năng mà không cần xác thực . Để yêu cầu xác thực, hãy bỏ qua cờ.Tìm hiểu thêm : Để biết thêm chi tiết, hãy đọc về triển khai Chức năng đám mây .

Kiểm tra chức năng

  1. Khi chức năng kết thúc triển khai, hãy ghi lại thuộc httpsTrigger.url tính hoặc tìm thuộc tính đó bằng lệnh sau:gcloud functions describe hello_http
    Nó sẽ giống như thế này:https: //GCP_REGIONPROJECT_ID.cloudfunctions.net / hello_http
  2. Truy cập URL này trong trình duyệt của bạn. Bạn sẽ thấy thông báo “Hello World!” thông điệp.Hãy thử chuyển một tên trong yêu cầu HTTP, chẳng hạn bằng cách sử dụng URL sau:https: //GCP_REGIONPROJECT_ID.cloudfunctions.net / hello_http? name =TÊNBạn sẽ thấy thông báo “Xin chào NAME!”

Xem nhật ký

Sử dụng công cụ dòng lệnh

Nhật ký cho Chức năng đám mây có thể xem được trong Giao diện người dùng ghi nhật ký Stackdriver và thông qua gcloudcông cụ dòng lệnh.

Để xem nhật ký cho chức năng của bạn bằng gcloudcông cụ, hãy sử dụng logs readlệnh, theo sau là tên của chức năng:

gcloud functions logs read hello_http

Đầu ra sẽ giống như sau:

LEVEL NAME EXECUTION_ID TIME_UTC LOG
D hello_http pdb5ys2t022n 2019-09-18 23:29:09.791 Function execution started
D hello_http pdb5ys2t022n 2019-09-18 23:29:09.798 Function execution took 7 ms, finished with status code: 200

Lưu ý: Thường có độ trễ nhỏ giữa thời điểm các mục nhật ký được tạo và khi chúng hiển thị trong Stackdriver.

Triển khai các chức năng đám mây từ kho lưu trữ nguồn đám mây

Chủ đề này mô tả cách triển khai Chức năng đám mây bằng cách sử dụng mã được kiểm soát phiên bản trong Kho lưu trữ nguồn đám mây.

Bằng cách tích hợp Chức năng đám mây với Kho lưu trữ nguồn đám mây, bạn có thể sử dụng Kho lưu trữ nguồn trên đám mây để kiểm soát phiên bản mã chứa chức năng của bạn. Khi chức năng thay đổi theo thời gian, bạn có thể tiếp tục truy cập các cam kết trước đó để xem chức năng đã thay đổi như thế nào và khi nào.

Tạo và triển khai chức năng

Với mã của bạn được lưu trữ trong Kho lưu trữ nguồn đám mây, bước tiếp theo của bạn là tạo một hàm và triển khai nó. Bạn có thể thực hiện các tác vụ này với Google Cloud Console hoặc Cloud SDK.Bảng điều khiểnSDK đám mây

  1. Truy cập trang Chức năng đám mây .Truy cập trang Chức năng đám mâyĐảm bảo dự án Google Cloud mà bạn đã bật Chức năng đám mây được chọn.
  2. Nhấp vào Tạo chức năng .Ảnh chụp màn hình hiển thị cách bắt đầu quá trình tạo hàm
  3. Trên trang Tạo chức năng , hãy điền vào các tùy chọn sau:
    • Trong trường Tên , hãy nhập tên cho Chức năng đám mây của bạn.
    • Trong danh sách Trình kích hoạt thả xuống, hãy chọn một trong các tùy chọn sau:
      • HTTP
      • Pub / Sub
      • Lưu trữ đám mây
    • Trong danh sách Mã nguồn , chọn Kho lưu trữ Nguồn đám mây .
    • Trong trường Kho lưu trữ , hãy nhập tên kho lưu trữ của bạn.
    • Trong danh sách Chi nhánh / thẻ , hãy chọn nhánh hoặc thẻ có chứa phiên bản mã nguồn cho chức năng của bạn. Sau đó, trong trường tiếp theo, hãy nhập tên của chi nhánh hoặc thẻ.
    • Trong trường Thư mục có mã nguồn , hãy nhập đường dẫn đến nơi mã chức năng tồn tại trong kho lưu trữ của bạn.
    • Trong trường Hàm để thực thi , hãy nhập tên của hàm.
  4. Nhấp vào Tạo .

Trong khi chức năng đang được triển khai, một con quay nhỏ được hiển thị. Khi quá trình triển khai kết thúc, con quay sẽ trở thành một dấu kiểm màu xanh lục.

Kiểm tra chức năng

Khi chức năng của bạn được triển khai, bạn có thể sử dụng Bảng điều khiển GCP hoặc SDK đám mây để kiểm tra chức năng đó.Bảng điều khiểnSDK đám mây

  1. Truy cập trang Tổng quan về Chức năng Đám mây .Chuyển đến trang Tổng quanĐảm bảo dự án mà bạn đã bật Chức năng đám mây được chọn.
  2. Bấm vào tên của chức năng của bạn.Các chi tiết Chức năng mở ra.
  3. Nhấp vào tab Thử nghiệm .
  4. Nhấp vào Kiểm tra chức năng .

Hướng dẫn HTTP

Hướng dẫn đơn giản này trình bày cách viết, triển khai và kích hoạt Chức năng đám mây HTTP .

Mục tiêu

  • Viết, triển khai và kích hoạt một Hàm đám mây HTTP .

Chi phí

Hướng dẫn này sử dụng các thành phần có thể lập hóa đơn của Nền tảng đám mây, bao gồm:

  • Chức năng đám mây của Google

Sử dụng Công cụ tính giá để tạo ước tính chi phí dựa trên mức sử dụng dự kiến của bạn.

Trước khi bắt đầu

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud.Lưu ý : Nếu bạn không có kế hoạch giữ các tài nguyên mà bạn tạo trong quy trình này, hãy tạo một dự án thay vì chọn một dự án hiện có. Sau khi hoàn thành các bước này, bạn có thể xóa dự án, xóa tất cả các tài nguyên được liên kết với dự án.Chuyển đến trang bộ chọn dự án
  2. Đảm bảo rằng thanh toán được bật cho dự án Đám mây của bạn. Tìm hiểu cách xác nhận rằng thanh toán được bật cho dự án của bạn .
  3. Bật các chức năng đám mây và API xây dựng đám mây.Bật các API
  4. Cập nhật gcloudcác thành phần:cập nhật thành phần gcloud
  5. Chuẩn bị môi trường phát triển của bạn.Node.jsPythonĐiJavaC #Đi tới hướng dẫn thiết lập Python

Chuẩn bị ứng dụng

  1. Sao chép kho ứng dụng mẫu vào máy cục bộ của bạn:Node.jsPythonĐiJavaC #git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitNgoài ra, bạn có thể tải xuống mẫu dưới dạng tệp zip và giải nén.
  2. Thay đổi thư mục chứa mã mẫu Chức năng đám mây:Node.jsPythonĐiJavaC #cd python-docs-samples/functions/helloworld/
  3. Hãy xem mã mẫu:Node.jsPythonĐiJavaC #functions / helloworld / main.pyXem trên GitHubdef hello_get(request):
    """HTTP Cloud Function.
    Args:
    request (flask.Request): The request object.
    <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
    Returns:
    The response text, or any set of values that can be turned into a
    Response object using `make_response`
    <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
    """
    return 'Hello World!'

Triển khai chức năng

Để triển khai chức năng với trình kích hoạt HTTP, hãy chạy lệnh sau trong thư mục chứa mã mẫu (hoặc trong trường hợp là pom.xml tệp Java ):Node.jsPythonĐiJavaC #

gcloud functions deploy hello_get \
--runtime python37 --trigger-http --allow-unauthenticated

Bạn có thể sử dụng các giá trị sau cho --runtime cờ để chỉ định phiên bản Python ưa thích của mình:

  • python37
  • python38

Các --allow-unauthenticatedlá cờ cho phép bạn đạt được các chức năng mà không cần xác thực . Để yêu cầu xác thực, hãy bỏ qua cờ.

Kích hoạt chức năng

Để thực hiện một yêu cầu HTTP cho hàm của bạn, hãy chạy lệnh sau:Node.jsPythonĐiJavaC #

curl "https://REGION-PROJECT_ID.cloudfunctions.net/hello_get" 

Ở đâu

  • REGIONlà khu vực mà chức năng của bạn được triển khai. Điều này hiển thị trong thiết bị đầu cuối của bạn khi chức năng của bạn kết thúc triển khai.
  • PROJECT_IDlà ID dự án đám mây của bạn. Điều này hiển thị trong thiết bị đầu cuối của bạn khi chức năng của bạn kết thúc triển khai.

Bạn cũng có thể truy cập điểm cuối của chức năng đã triển khai trong trình duyệt của mình để xem thông báo “Hello World!” thông điệp.

Dọn dẹp

Để tránh bị tính phí cho tài khoản Google Cloud Platform của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này:

Xóa dự án

Cách dễ nhất để loại bỏ thanh toán là xóa dự án mà bạn đã tạo cho hướng dẫn.

Để xóa dự án:Thận trọng : Xóa dự án có các tác dụng sau:

  • Mọi thứ trong dự án đều bị xóa. Nếu bạn đã sử dụng một dự án hiện có cho hướng dẫn này, khi bạn xóa nó, bạn cũng xóa mọi công việc khác mà bạn đã thực hiện trong dự án.
  • ID dự án tùy chỉnh bị mất. Khi bạn tạo dự án này, bạn có thể đã tạo một ID dự án tùy chỉnh mà bạn muốn sử dụng trong tương lai. Để duy trì các URL sử dụng ID dự án, chẳng hạn như appspot.com URL, hãy xóa các tài nguyên đã chọn bên trong dự án thay vì xóa toàn bộ dự án.

Nếu bạn dự định khám phá nhiều hướng dẫn và khởi động nhanh, việc sử dụng lại các dự án có thể giúp bạn tránh vượt quá giới hạn hạn ngạch dự án.

  1. Trong Bảng điều khiển đám mây, đi tới trang Quản lý tài nguyên .Chuyển đến trang Quản lý tài nguyên
  2. Trong danh sách dự án, chọn dự án mà bạn muốn xóa, sau đó bấm Xóa delete.
  3. Trong hộp thoại, nhập ID dự án và sau đó nhấp vào Tắt để xóa dự án.

Xóa chức năng đám mây

Xóa Chức năng Đám mây không xóa bất kỳ tài nguyên nào được lưu trữ trong Bộ nhớ Đám mây.

Để xóa Chức năng đám mây bạn đã tạo trong hướng dẫn này, hãy chạy lệnh sau:Node.jsPythonĐiJavaC #

gcloud functions delete hello_get 

Hướng dẫn lưu trữ đám mây

Hướng dẫn đơn giản này trình bày cách viết, triển khai và kích hoạt Chức năng đám mây nền với trình kích hoạt Lưu trữ đám mây .

Mục tiêu

  • Viết và triển khai một chức năng đám mây nền .
  • Kích hoạt chức năng bằng cách tải tệp lên Cloud Storage .

Chi phí

Hướng dẫn này sử dụng các thành phần có thể lập hóa đơn của Nền tảng đám mây, bao gồm:

Sử dụng Công cụ tính giá để tạo ước tính chi phí dựa trên mức sử dụng dự kiến của bạn.

Trước khi bắt đầu

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud.Lưu ý : Nếu bạn không có kế hoạch giữ các tài nguyên mà bạn tạo trong quy trình này, hãy tạo một dự án thay vì chọn một dự án hiện có. Sau khi hoàn thành các bước này, bạn có thể xóa dự án, xóa tất cả các tài nguyên được liên kết với dự án.Chuyển đến trang bộ chọn dự án
  2. Đảm bảo rằng thanh toán được bật cho dự án Đám mây của bạn. Tìm hiểu cách xác nhận rằng thanh toán được bật cho dự án của bạn .
  3. Bật API Chức năng đám mây, Tạo đám mây và Lưu trữ đám mây.Bật các API
  4. Cài đặt và khởi chạy Cloud SDK .
  5. Cập nhật gcloud các thành phần:cập nhật thành phần gcloud
  6. Chuẩn bị môi trường phát triển của bạn:Node.jsPythonĐiJavaC #Đi tới hướng dẫn thiết lập Python

Chuẩn bị ứng dụng

  1. Tạo nhóm lưu trữ đám mây để tải lên tệp thử nghiệm, trong đó YOUR_TRIGGER_BUCKET_NAMEtên nhóm duy nhất trên toàn cầu:gsutil mb gs://YOUR_TRIGGER_BUCKET_NAME
  2. Sao chép kho ứng dụng mẫu vào máy cục bộ của bạn:Node.jsPythonĐiJavaC #git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitNgoài ra, bạn có thể tải xuống mẫu dưới dạng tệp zip và giải nén.
  3. Thay đổi thư mục chứa mã mẫu Chức năng đám mây:Node.jsPythonĐiJavaC #cd python-docs-samples/functions/helloworld/

Triển khai và kích hoạt chức năng

Hiện tại, các chức năng của Cloud Storage dựa trên thông báo Pub / Sub từ Cloud Storage và hỗ trợ các loại sự kiện tương tự:

  • hoàn thiện
  • xóa bỏ
  • kho lưu trữ
  • cập nhật siêu dữ liệu

Các phần sau đây mô tả cách triển khai và kích hoạt một chức năng cho từng loại sự kiện này.

Hoàn thiện đối tượng

Sự kiện hoàn thiện đối tượng kích hoạt khi “ghi” của Đối tượng lưu trữ trên đám mây được hoàn tất thành công. Đặc biệt, điều này có nghĩa là việc tạo một đối tượng mới hoặc ghi đè một đối tượng hiện có sẽ kích hoạt sự kiện này. Trình kích hoạt này bỏ qua các thao tác lưu trữ và cập nhật siêu dữ liệu.

Object Finalize: triển khai chức năng

Hãy xem chức năng mẫu xử lý các sự kiện Cloud Storage:Node.jsPythonĐiJavaC #functions / helloworld / main.pyXem trên GitHub

def hello_gcs(event, context): """Background Cloud Function to be triggered by Cloud Storage. This generic function logs relevant data when a file is changed. Args: event (dict): The dictionary with data specific to this type of event. The `data` field contains a description of the event in the Cloud Storage `object` format described here: https://cloud.google.com/storage/docs/json_api/v1/objects#resource context (google.cloud.functions.Context): Metadata of triggering event. Returns: None; the output is written to Stackdriver Logging """ print('Event ID: {}'.format(context.event_id)) print('Event type: {}'.format(context.event_type)) print('Bucket: {}'.format(event['bucket'])) print('File: {}'.format(event['name'])) print('Metageneration: {}'.format(event['metageneration'])) print('Created: {}'.format(event['timeCreated'])) print('Updated: {}'.format(event['updated']))

Để triển khai chức năng, hãy chạy lệnh sau trong thư mục chứa mã mẫu:Node.jsPythonĐiJavaC #

gcloud functions deploy hello_gcs \
--runtime python37 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize

Bạn có thể sử dụng các giá trị sau cho --runtime cờ để chỉ định phiên bản Python ưa thích của mình:

  • python37
  • python38

đâu YOUR_TRIGGER_BUCKET_NAMElà tên của nhóm Lưu trữ đám mây kích hoạt chức năng.

Object Finalize: kích hoạt chức năng

Để kích hoạt chức năng:

  1. Tạo một gcf-test.txttệp trống trong thư mục chứa mã mẫu.
  2. Tải tệp lên Cloud Storage để kích hoạt chức năng:gsutil cp gcf-test.txt gs://YOUR_TRIGGER_BUCKET_NAME
    đâu YOUR_TRIGGER_BUCKET_NAMElà tên nhóm Bộ nhớ đám mây của bạn nơi bạn sẽ tải lên tệp thử nghiệm.
  3. Kiểm tra nhật ký để đảm bảo quá trình thực thi đã hoàn tất:gcloud functions logs read --limit 50

Đối tượng Xóa

Sự kiện xóa đối tượng hữu ích nhất cho nhóm không lập phiên bản . Chúng được kích hoạt khi phiên bản cũ của một đối tượng bị xóa. Ngoài ra, chúng được kích hoạt khi một đối tượng bị ghi đè. Trình kích hoạt xóa đối tượng cũng có thể được sử dụng với nhóm lập phiên bản , kích hoạt khi phiên bản của đối tượng bị xóa vĩnh viễn.

Xóa đối tượng: triển khai chức năng

Sử dụng mã mẫu tương tự như trong ví dụ cuối cùng, triển khai chức năng với xóa đối tượng làm sự kiện kích hoạt. Chạy lệnh sau trong thư mục chứa mã mẫu:Node.jsPythonĐiJavaC #

gcloud functions deploy hello_gcs \
--runtime python37 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.delete

Bạn có thể sử dụng các giá trị sau cho --runtime cờ để chỉ định phiên bản Python ưa thích của mình:

  • python37
  • python38

đâu YOUR_TRIGGER_BUCKET_NAMElà tên của nhóm Lưu trữ đám mây kích hoạt chức năng.

Xóa đối tượng: kích hoạt chức năng

Để kích hoạt chức năng:

  1. Tạo một gcf-test.txttệp trống trong thư mục chứa mã mẫu.
  2. Đảm bảo rằng nhóm của bạn không lập phiên bản:gsutil versioning set off gs://YOUR_TRIGGER_BUCKET_NAME
  3. Tải tệp lên Cloud Storage:gsutil cp gcf-test.txt gs://YOUR_TRIGGER_BUCKET_NAME
    đâu YOUR_TRIGGER_BUCKET_NAMElà tên nhóm Bộ nhớ đám mây của bạn nơi bạn sẽ tải lên tệp thử nghiệm. Tại thời điểm này, hàm vẫn chưa thực thi.
  4. Xóa tệp để kích hoạt chức năng:gsutil rm gs://YOUR_TRIGGER_BUCKET_NAME/gcf-test.txt
  5. Kiểm tra nhật ký để đảm bảo quá trình thực thi đã hoàn tất:gcloud functions logs read --limit 50

Lưu ý rằng có thể mất một khoảng thời gian để thực thi xong hàm.

Lưu trữ đối tượng

Các sự kiện lưu trữ đối tượng chỉ có thể được sử dụng với nhóm lập phiên bản . Chúng được kích hoạt khi phiên bản cũ của một đối tượng được lưu trữ. Đặc biệt, điều này có nghĩa là khi một đối tượng bị ghi đè hoặc bị xóa, một sự kiện lưu trữ sẽ được kích hoạt.

Lưu trữ đối tượng: triển khai chức năng

Sử dụng mã mẫu tương tự như trong ví dụ cuối cùng, triển khai chức năng với kho lưu trữ đối tượng làm sự kiện kích hoạt. Chạy lệnh sau trong thư mục chứa mã mẫu:Node.jsPythonĐiJavaC #

gcloud functions deploy hello_gcs \
--runtime python37 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.archive

Bạn có thể sử dụng các giá trị sau cho --runtime cờ để chỉ định phiên bản Python ưa thích của mình:

  • python37
  • python38

đâu YOUR_TRIGGER_BUCKET_NAMElà tên của nhóm Lưu trữ đám mây kích hoạt chức năng.

Lưu trữ đối tượng: kích hoạt chức năng

Để kích hoạt chức năng:

  1. Tạo một gcf-test.txttệp trống trong thư mục chứa mã mẫu.
  2. Đảm bảo rằng nhóm của bạn đã bật lập phiên bản:gsutil versioning set on gs://YOUR_TRIGGER_BUCKET_NAME
  3. Tải tệp lên Cloud Storage:gsutil cp gcf-test.txt gs://YOUR_TRIGGER_BUCKET_NAME
    đâu YOUR_TRIGGER_BUCKET_NAMElà tên nhóm Bộ nhớ đám mây của bạn nơi bạn sẽ tải lên tệp thử nghiệm. Tại thời điểm này, hàm vẫn chưa thực thi.
  4. Lưu trữ tệp để kích hoạt chức năng:gsutil rm gs://YOUR_TRIGGER_BUCKET_NAME/gcf-test.txt
  5. Xem nhật ký để đảm bảo quá trình thực thi đã hoàn thành:gcloud functions logs read --limit 50

Cập nhật siêu dữ liệu đối tượng

Sự kiện cập nhật siêu dữ liệu được kích hoạt khi siêu dữ liệu của đối tượng hiện có được cập nhật.

Cập nhật siêu dữ liệu đối tượng: triển khai chức năng

Sử dụng cùng một mã mẫu như trong ví dụ cuối cùng, triển khai chức năng với cập nhật siêu dữ liệu làm sự kiện kích hoạt. Chạy lệnh sau trong thư mục chứa mã mẫu:Node.jsPythonĐiJavaC #

gcloud functions deploy hello_gcs \
--runtime python37 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.metadataUpdate

Bạn có thể sử dụng các giá trị sau cho --runtime cờ để chỉ định phiên bản Python ưa thích của mình:

  • python37
  • python38

đâu YOUR_TRIGGER_BUCKET_NAMElà tên của nhóm Lưu trữ đám mây kích hoạt chức năng.

Cập nhật siêu dữ liệu đối tượng: kích hoạt chức năng

Để kích hoạt chức năng:

  1. Tạo một gcf-test.txttệp trống trong thư mục chứa mã mẫu.
  2. Đảm bảo rằng nhóm của bạn không lập phiên bản:gsutil versioning set off gs://YOUR_TRIGGER_BUCKET_NAME
  3. Tải tệp lên Cloud Storage:gsutil cp gcf-test.txt gs://YOUR_TRIGGER_BUCKET_NAME
    đâu YOUR_TRIGGER_BUCKET_NAMElà tên nhóm Bộ nhớ đám mây của bạn nơi bạn sẽ tải lên tệp thử nghiệm. Tại thời điểm này, hàm vẫn chưa thực thi.
  4. Cập nhật siêu dữ liệu của tệp:gsutil -m setmeta -h “Content-Type:text/plain” gs://YOUR_TRIGGER_BUCKET_NAME/gcf-test.txt
  5. Xem nhật ký để đảm bảo quá trình thực thi đã hoàn thành:gcloud functions logs read --limit 50

Lưu ý: Các sự kiện được gửi bằng Google Cloud Storage Cloud Pub / Sub Notifications . Do đó, việc đăng ký quá nhiều thông báo có thể vượt quá giới hạn thông báo cho một nhóm và không thể tạo thêm chức năng với nhóm này. Nỗ lực để làm như vậy sẽ không thành công với lỗi Cloud Storage bucket ...: Pub/Sub notification limit reached. Xem tài liệu Google Cloud Storage Cloud Pub / Sub Notifications để biết thêm thông tin về giới hạn thông báo.

Dọn dẹp

Để tránh bị tính phí cho tài khoản Google Cloud Platform của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này:

Xóa dự án

Cách dễ nhất để loại bỏ thanh toán là xóa dự án mà bạn đã tạo cho hướng dẫn.

Để xóa dự án:Thận trọng : Xóa dự án có các tác dụng sau:

  • Mọi thứ trong dự án đều bị xóa. Nếu bạn đã sử dụng một dự án hiện có cho hướng dẫn này, khi bạn xóa nó, bạn cũng xóa mọi công việc khác mà bạn đã thực hiện trong dự án.
  • ID dự án tùy chỉnh bị mất. Khi bạn tạo dự án này, bạn có thể đã tạo một ID dự án tùy chỉnh mà bạn muốn sử dụng trong tương lai. Để duy trì các URL sử dụng ID dự án, chẳng hạn như appspot.com URL, hãy xóa các tài nguyên đã chọn bên trong dự án thay vì xóa toàn bộ dự án.

Nếu bạn dự định khám phá nhiều hướng dẫn và khởi động nhanh, việc sử dụng lại các dự án có thể giúp bạn tránh vượt quá giới hạn hạn ngạch dự án.

  1. Trong Bảng điều khiển đám mây, đi tới trang Quản lý tài nguyên .Chuyển đến trang Quản lý tài nguyên
  2. Trong danh sách dự án, chọn dự án mà bạn muốn xóa, sau đó bấm Xóa delete.
  3. Trong hộp thoại, nhập ID dự án và sau đó nhấp vào Tắt để xóa dự án.

Xóa chức năng đám mây

Xóa Chức năng Đám mây không xóa bất kỳ tài nguyên nào được lưu trữ trong Bộ nhớ Đám mây.

Để xóa Chức năng đám mây bạn đã tạo trong hướng dẫn này, hãy chạy lệnh sau:Node.jsPythonĐiJavaC #

gcloud functions delete hello_gcs 

Triển khai từ Kiểm soát nguồn

Kho lưu trữ đám mây

Nếu bạn muốn triển khai mã nguồn chức năng của mình từ một kho nguồn như GitHub hoặc Bitbucket, bạn có thể sử dụng Google Cloud Source Repositories để triển khai các chức năng trực tiếp từ các nhánh hoặc thẻ trong kho lưu trữ của mình.

Thiết lập kho lưu trữ nguồn đám mây

  1. Thực hiện theo Kho lưu trữ nguồn đám mây để bắt đầu các bước thiết lập kho lưu trữ của bạn.
  2. Kết nối kho lưu trữ GitHub hoặc Bitbucket của bạn bằng cách làm theo hướng dẫn về kho lưu trữ được sao chép .

Khi kết nối giữa Kho lưu trữ nguồn đám mây và kho lưu trữ bên ngoài của bạn được thiết lập, các kho lưu trữ này được giữ đồng bộ hóa để bạn có thể cam kết với kho lưu trữ đã chọn của mình như bình thường.

Triển khai bằng công cụ gcloud

Để triển khai một hàm từ kho nguồn của bạn, hãy sử dụng --sourceđối số dòng lệnh:

gcloud functions deploy NAME \
--source https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_ID/moveable-aliases/master/paths/SOURCE \
--runtime RUNTIME \
TRIGGER... \
[FLAGS...]

Lưu ý: Trong lệnh trên, lưu ý rằng SOURCE không được để trống. Nó ít nhất phải là ‘ /‘. Ngoài ra, tên nhánh và tên thẻ có dấu gạch chéo (‘ /‘) không được hỗ trợ.

Cũng lưu ý rằng khi bạn triển khai một chức năng lần đầu tiên, bạn phải bao gồm --runtime cờ. Các --runtimecờ không được yêu cầu trên triển khai tiếp theo của hàm.

Lệnh sử dụng các đối số sau để gcloud functions deploy:

Tranh luậnSự miêu tả
NAMETên đã đăng ký của Chức năng đám mây mà bạn đang triển khai. NAME chỉ có thể chứa các chữ cái, số, dấu gạch dưới và dấu gạch nối. NAME có thể là tên của một hàm trong mã nguồn của bạn hoặc nó có thể là một chuỗi tùy chỉnh (ví dụ my-http-function:). Nếu bạn sử dụng một chuỗi tùy chỉnh, bạn cũng phải sử dụng --entry-pointcờ để chỉ định một hàm có trong mã của bạn, để cho deploylệnh thực thi hàm nào.
--source PATHVị trí của mã nguồn để triển khai. Vị trí có thể là tham chiếu đến kho lưu trữ nguồn, đường dẫn trong Google Cloud Storage hoặc đường dẫn hệ thống tệp cục bộ. Để biết chi tiết, hãy xem gcloud Tham chiếu Lệnh .
--runtime RUNTIMETên của thời gian chạy mà bạn đang sử dụng. Để có danh sách đầy đủ, hãy xem gcloudtài liệu tham khảo . Lưu ý rằng bạn phải bao gồm cờ này vào lần đầu tiên bạn triển khai một chức năng, nhưng bạn có thể bỏ qua nó trong các lần triển khai tiếp theo.
TRIGGER...Nếu bạn có chức năng HTTP, hãy sử dụng cờ --trigger-http.

Nếu bạn có một chức năng nền, hãy sử dụng các cờ và . Nếu chức năng nền của bạn được chỉ định một trình kích hoạt Pub / Sub, thay vào đó bạn có thể sử dụng tốc ký . Tương tự như vậy, khi triển khai các chức năng được chỉ định trình kích hoạt Lưu trữ đám mây, bạn có thể chỉ cần sử dụng cờ để kích hoạt thực thi chức năng bất cứ khi nào tệp trong nhóm được chỉ định thay đổi. --trigger-resource MY_RESOURCE--trigger-event MY_EVENT--trigger-topic MY_TOPIC--trigger-bucket MY_STORAGE_BUCKET
FLAGS...(Tùy chọn) Các cờ bổ sung mà bạn có thể chỉ định trong quá trình triển khai, chẳng hạn như --stage-buckethoặc --entry-point. Để tham khảo đầy đủ, hãy xem tài liệu . gcloud functions deploy

Chỉ định các phụ thuộc trong Python

Có hai cách để chỉ định phụ thuộc cho Hàm đám mây được viết bằng Python: sử dụng tệp của trình quản lý gói piprequirements.txt hoặc đóng gói các phụ thuộc cục bộ cùng với hàm của bạn.

Chỉ định phụ thuộc bằng pip

Sự phụ thuộc trong Python được quản lý bằng pip và được thể hiện trong một tệp siêu dữ liệu được gọi requirements.txt. Tệp này phải nằm trong cùng thư mục với main.pytệp chứa mã chức năng của bạn.

Khi bạn triển khai chức năng của mình, Chức năng đám mây tải xuống và cài đặt các phần phụ thuộc được khai báo trong requirements.txttệp bằng cách sử dụng pip.

Các requirements.txttập tin chứa một dòng cho mỗi gói. Mỗi dòng chứa tên gói và tùy chọn, phiên bản được yêu cầu. Để biết thêm chi tiết, hãy xem requirements.txttài liệu tham khảo .

Sau đây là một requirements.txttệp ví dụ :

requests==2.20.0
numpy

Đóng gói các phụ thuộc cục bộ

Bạn cũng có thể đóng gói và triển khai các phụ thuộc cùng với chức năng của mình. Cách tiếp cận này hữu ích nếu sự phụ thuộc của bạn không có sẵn thông qua trình quản lý gói pip hoặc nếu quyền truy cập internet của môi trường Chức năng đám mây của bạn bị hạn chế. Ví dụ: bạn có thể sử dụng cấu trúc thư mục như sau:

myfunction/
├── main.py
└── localpackage/
 ├── __init__.py
 └── script.py

Sau đó, bạn có thể sử dụng mã như bình thường từ phần phụ thuộc cục bộ được bao gồm localpackage,. Bạn có thể sử dụng phương pháp này để đóng gói bất kỳ gói Python nào với việc triển khai của bạn.Lưu ý: Bạn vẫn có thể sử dụng requirements.txttệp để chỉ định các phần phụ thuộc bổ sung mà bạn chưa đóng gói cùng với hàm của mình.

Sử dụng phụ thuộc riêng tư

Các phần phụ thuộc được cài đặt trong môi trường Cloud Build không cung cấp quyền truy cập vào các khóa SSH. Các gói được lưu trữ trong kho yêu cầu xác thực dựa trên SSH phải được cung cấp và tải lên cùng với mã dự án của bạn, như được mô tả trong phần trước.

Bạn có thể sử dụng pip installlệnh có cờ để sao chép các phần phụ thuộc riêng tư vào thư mục cục bộ trước khi triển khai ứng dụng của mình, như sau:-t DIRECTORY

  1. Sao chép phần phụ thuộc của bạn vào một thư mục cục bộ:pip install -t DIRECTORY DEPENDENCY
  2. Thêm một __init__.pytệp trống vào DIRECTORY thư mục để biến nó thành một mô-đun.
  3. Nhập từ mô-đun này để sử dụng phần phụ thuộc của bạn:import DIRECTORY.DEPENDENCY

Các gói cài đặt sẵn

Các gói Python sau được tự động cài đặt cùng với hàm của bạn trong quá trình triển khai. Nếu bạn đang sử dụng bất kỳ gói nào trong số này trong mã chức năng của mình, chúng tôi khuyên bạn nên bao gồm các phiên bản sau trong requirements.txttệp của mình :

aiohttp==3.6.2
async-timeout==3.0.1
attrs==19.3.0
cachetools==4.1.1
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
Flask==1.1.2
google-api-core==1.21.0
google-api-python-client==1.10.0
google-auth==1.19.2
google-auth-httplib2==0.0.4
google-cloud-core==1.3.0
google-cloud-trace==0.23.0
googleapis-common-protos==1.52.0
grpcio==1.30.0
httplib2==0.18.1
idna==2.9
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
multidict==4.7.6
opencensus==0.7.9
opencensus-context==0.1.1
pip==20.1.1
protobuf==3.12.2
pyasn1==0.4.8
pyasn1-modules==0.2.8
pytz==2020.1
PyYAML==5.3.1
requests==2.24.0
rsa==4.6
setuptools==47.3.1
six==1.15.0
uritemplate==3.0.1
urllib3==1.25.9
Werkzeug==1.0.1
wheel==0.34.2
wrapt==1.12.1
yarl==1.5.1

Ngoài ra, thời gian chạy Python bao gồm một số gói hệ thống trong môi trường thực thi. Nếu hàm của bạn sử dụng phần phụ thuộc yêu cầu gói hệ thống không được liệt kê, bạn có thể yêu cầu một gói .