Kích hoạt quy trình công việc bằng Eventarc

1. Tổng quan

Trong phòng thí nghiệm này, bạn sẽ tạo một trình kích hoạt Eventarc kết nối một chủ đề Pub/Sub với dịch vụ Workflows. Eventarc cho phép bạn tách rời giao tiếp giữa các dịch vụ, giúp giải pháp của bạn có khả năng mở rộng và hướng sự kiện hơn. Bạn sẽ tạo một quy trình làm việc bao gồm nhiều bước để thực thi một quy trình kinh doanh nhằm tính điểm phần thưởng cho khách hàng khi đặt hàng tại Cymbal Eats. Quy trình công việc sẽ gọi một API dịch vụ Cloud Run riêng tư để thực thi logic nghiệp vụ. Dịch vụ Cloud Run được định cấu hình để chỉ cho phép lưu lượng truy cập nội bộ và yêu cầu xác thực. Quy trình công việc sẽ xuất bản một thông báo đến chủ đề Pub/Sub để thông báo cho Dịch vụ đặt hàng về điểm phần thưởng đã tính.

c6d4337a47b55333.png

Eventarc là gì?

Eventarc cho phép bạn tạo các kiến trúc hướng sự kiện mà không cần triển khai, tuỳ chỉnh hoặc duy trì cơ sở hạ tầng cơ bản. Eventarc cung cấp một giải pháp tiêu chuẩn hoá để quản lý luồng thay đổi trạng thái (gọi là sự kiện) giữa các vi dịch vụ tách rời. Khi được kích hoạt, Eventarc sẽ định tuyến các sự kiện này thông qua các gói thuê bao Pub/Sub đến nhiều đích đến (ví dụ: Workflows hoặc Cloud Run) trong khi quản lý việc phân phối, bảo mật, uỷ quyền, khả năng ghi nhận và xử lý lỗi cho bạn.

Nhà cung cấp sự kiện của Google

  • Hơn 90 nhà cung cấp Google Cloud. Các nhà cung cấp này gửi sự kiện trực tiếp từ nguồn (ví dụ: Cloud Storage) hoặc thông qua các mục trong Nhật ký kiểm tra đám mây.
  • Nhà cung cấp Pub/Sub. Các nhà cung cấp này gửi sự kiện đến Eventarc bằng cách sử dụng thông báo Pub/Sub.

Nhà cung cấp bên thứ ba

Nhà cung cấp bên thứ ba là những pháp nhân không thuộc Google, cung cấp một nguồn Eventarc.

Điều kiện kích hoạt Eventarc

  • Sự kiện Cloud Pub/Sub. Eventarc có thể được kích hoạt bằng các thông báo được đăng lên chủ đề Pub/Sub.
  • Sự kiện trong Nhật ký kiểm tra trên Cloud (CAL). Nhật ký kiểm tra của Cloud cung cấp nhật ký kiểm tra Hoạt động của Quản trị viên và nhật ký kiểm tra Truy cập dữ liệu cho từng dự án trên đám mây, thư mục và tổ chức.
  • Sự kiện trực tiếp. Eventarc có thể được kích hoạt bởi nhiều sự kiện trực tiếp, chẳng hạn như nội dung cập nhật cho một vùng lưu trữ Cloud Storage hoặc nội dung cập nhật cho một mẫu Cấu hình từ xa Firebase.

Đích đến của sự kiện

c7ca054200edf1b3.png

Quy trình công việc là gì?

Workflows là một dịch vụ được quản lý toàn diện, cho phép bạn tích hợp các dịch vụ vi mô, tác vụ và API. Workflows là dịch vụ không máy chủ và sẽ mở rộng quy mô để đáp ứng nhu cầu của bạn.

Các trường hợp sử dụng quy trình công việc:

  • Quy trình làm việc dựa trên sự kiện thực thi trên các điều kiện kích hoạt đã xác định. Ví dụ: khi một đơn đặt hàng mới được gửi và bạn muốn tính điểm khách hàng thân thiết. Hoặc khi một đơn đặt hàng bị huỷ, sự kiện có thể được xuất bản và tất cả các dịch vụ quan tâm sẽ xử lý sự kiện đó.
  • Quy trình công việc của các công việc hàng loạt chạy các công việc thường xuyên bằng Cloud Scheduler. Ví dụ: một công việc hằng đêm để kiểm tra các mục trong trình đơn có trạng thái không thành công và xoá các mục đó.

Workflows phù hợp với những quy trình công việc điều phối các dịch vụ. Bạn có thể tự động hoá các quy trình bao gồm cả việc chờ và thử lại trong tối đa một năm.

Lợi ích của quy trình làm việc:

  • Cấu hình qua mã: Giảm nợ kỹ thuật bằng cách chuyển logic sang cấu hình thay vì viết mã.
  • Đơn giản hoá cấu trúc của bạn. Quy trình có trạng thái cho phép bạn hình dung và giám sát các hoạt động tích hợp dịch vụ phức tạp mà không cần thêm các phần phụ thuộc.
  • Kết hợp độ tin cậy và khả năng chịu lỗi. Kiểm soát các lỗi bằng logic thử lại và xử lý lỗi mặc định hoặc tuỳ chỉnh ngay cả khi các hệ thống khác gặp lỗi – kiểm tra từng bước đến Cloud Spanner để giúp bạn theo dõi tiến trình.
  • Không cần bảo trì. Mở rộng quy mô khi cần: Bạn không cần vá lỗi hoặc bảo trì. Bạn chỉ trả phí khi quy trình làm việc của bạn chạy, không mất phí khi chờ hoặc không hoạt động.

Trong lớp học này, bạn sẽ định cấu hình một quy trình dựa trên sự kiện.

Kiến thức bạn sẽ học được

Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách thực hiện những việc sau:

  • Định cấu hình chủ đề Pub/Sub và Eventarc để kích hoạt quy trình công việc
  • Định cấu hình quy trình công việc để gọi dịch vụ Cloud Run và xuất bản thông báo lên Pub/Sub
  • Cách truy vấn nhật ký có cấu trúc của quy trình công việc trong Cloud Logging và sử dụng gcloud CLI

Điều kiện tiên quyết

  • Bài thực hành này giả định rằng bạn đã quen thuộc với môi trường Cloud Console và Cloud Shell.
  • Bạn nên có kinh nghiệm sử dụng Cloud Run và Cloud Pub/Sub nhưng không bắt buộc.

2. Thiết lập và yêu cầu

Thiết lập dự án trên đám mây

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
  • Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có dùng được hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ giữ nguyên trong suốt thời gian diễn ra dự án.
  • Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.

Thiết lập môi trường

Kích hoạt Cloud Shell bằng cách nhấp vào biểu tượng ở bên phải thanh tìm kiếm.

eb0157a992f16fa3.png

Sao chép kho lưu trữ và chuyển đến thư mục, sao chép và dán lệnh bên dưới vào cửa sổ dòng lệnh rồi nhấn Enter:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

Triển khai các phần phụ thuộc bắt buộc bằng cách chạy lab-setup.sh

Các tài nguyên sau đây sẽ được tạo:

  • Cụm và phiên bản AlloyDB
  • Artifact Registry để lưu trữ hình ảnh vùng chứa cho Cloud Run Job và Dịch vụ khách hàng
  • Trình kết nối cho phép truy cập vào VPC cho Dịch vụ và Tác vụ Cloud Run để giao tiếp với cơ sở dữ liệu AlloyDB
  • Cloud Run Job để tạo cơ sở dữ liệu AlloyDB
  • Dịch vụ khách hàng Cloud Run – vi dịch vụ dựa trên Java sử dụng khung Quarkus.
./lab-setup.sh

Nếu được nhắc uỷ quyền, hãy nhấp vào "Uỷ quyền" để tiếp tục.

6356559df3eccdda.png

Quá trình thiết lập sẽ mất khoảng 10 phút.

Chờ cho đến khi tập lệnh hoàn tất và bạn thấy đầu ra bên dưới trước khi chạy các bước khác.

Deploying container to Cloud Run service [customer-service] in project [cymbal-eats-19227-5681] region [us-east1]
OK Deploying new service... Done.                                                   
  OK Creating Revision...
  OK Routing traffic...
Done.
Service [customer-service] revision [customer-service-00001-mid] has been deployed and is serving 100 percent of traffic.
Service URL: https://customer-service-e4p5zon5rq-ue.a.run.app

Bạn có thể khám phá phần tiếp theo rồi quay lại để tiếp tục từ bước tiếp theo.

3. Quy trình đánh giá

Các khái niệm cốt lõi về Workflows

Quy trình công việc bao gồm một loạt các bước được mô tả bằng cú pháp Quy trình công việc( YAML hoặc JSON).

Sau khi được tạo, quy trình công việc sẽ được triển khai, nhờ đó quy trình công việc sẵn sàng thực thi.

Thực thi là một lần chạy duy nhất của logic có trong định nghĩa của một quy trình công việc. Quy trình công việc chưa được thực thi sẽ không phát sinh phí. Tất cả các lần thực thi quy trình đều độc lập và khả năng mở rộng nhanh chóng của sản phẩm cho phép thực hiện đồng thời một số lượng lớn các lần thực thi.

Các chế độ kiểm soát việc thực thi

  • Các bước – Để tạo một quy trình công việc, bạn xác định steps và thứ tự thực thi mong muốn bằng cách sử dụng cú pháp Workflows. Mỗi quy trình công việc phải có ít nhất một bước.
  • Điều kiện – Bạn có thể dùng khối switch làm cơ chế lựa chọn cho phép giá trị của một biểu thức kiểm soát luồng thực thi của quy trình công việc.
  • Vòng lặp – Bạn có thể dùng vòng lặp for để lặp lại một chuỗi số hoặc thông qua một tập hợp dữ liệu, chẳng hạn như danh sách hoặc bản đồ.
  • Quy trình phụ – Quy trình phụ hoạt động tương tự như một quy trình hoặc hàm trong ngôn ngữ lập trình, cho phép bạn đóng gói một bước hoặc một nhóm bước mà quy trình sẽ lặp lại nhiều lần.

Kích hoạt việc thực thi

  • Thủ công – Bạn có thể quản lý quy trình làm việc trên bảng điều khiển Cloud hoặc từ dòng lệnh bằng Google Cloud CLI.
  • Có thể lập trình – Bạn có thể dùng Thư viện ứng dụng đám mây cho Workflows API hoặc API REST để quản lý quy trình công việc.
  • Đã lên lịch – Bạn có thể sử dụng Cloud Scheduler để chạy một quy trình công việc theo một lịch biểu cụ thể.

Đối số thời gian chạy

Bạn có thể truy cập vào dữ liệu được truyền trong thời gian chạy bằng cách thêm trường params vào quy trình làm việc chính (đặt trong một khối chính). Khối chính chấp nhận một đối số duy nhất là bất kỳ kiểu dữ liệu JSON hợp lệ nào. Trường params đặt tên cho biến mà quy trình công việc dùng để lưu trữ dữ liệu bạn truyền vào.

Quy trình xác thực dịch vụ Cloud Run

Dịch vụ khách hàng là một ứng dụng mẫu có trong kho lưu trữ này, chạy trên Cloud Run và được định cấu hình để chỉ cho phép các yêu cầu đã xác thực đến từ mạng nội bộ. Bạn sẽ định cấu hình quy trình công việc để thêm mã thông báo OpenID Connect(OIDC) do Google ký vào yêu cầu xác thực bằng dịch vụ Cloud Run.

Xem tài liệu để tìm hiểu thêm về xác thực dịch vụ với dịch vụ.

Xác thực quy trình làm việc được định cấu hình trong khối args bằng cách sử dụng phần auth.

rewardsWorkflow.yaml.tmpl

   - create_customer:
        call: http.post
        args:
          url: CUSTOMER_SERVICE_URL/customer
          auth:
            type: OIDC

Logic quy trình công việc

Nếu không có khách hàng, quy trình này sẽ thực hiện lệnh gọi API để tạo khách hàng trước, sau đó cập nhật điểm thưởng. Dựa trên tổng số tiền của đơn đặt hàng, quy trình sẽ chọn một hệ số nhân để tính điểm thưởng cho khách hàng. Hãy xem ví dụ bên dưới để biết thông tin chi tiết.

  - calculate_multiplier:
        switch:
          - condition: ${totalAmount < 10}
            steps:
              - set_multiplier1:
                  assign:
                    - multiplier: 2
          - condition: ${totalAmount >= 10 and totalAmount < 25}
            steps:
              - set_multiplier2:
                  assign:
                    - multiplier: 3
          - condition: ${totalAmount >= 25}
            steps:
              - set_multiplier3:
                  assign:
                    - multiplier: 5
    - calculate_rewards:
        assign:
            - rewardPoints: ${customerRecord.rewardPoints * multiplier}

fcd91b2bc5d60347.png

4. Định cấu hình và triển khai quy trình công việc

Thiết lập các biến môi trường:

export REGION=us-east1

export CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
  --platform managed \
  --region $REGION \
  --format=json | jq \
  --raw-output ".status.url")

echo $CUSTOMER_SERVICE_URL

Thay thế URL dịch vụ trong mẫu quy trình công việc:

sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" rewardsWorkflow.yaml.tmpl > rewardsWorkflow.yaml

Đặt vị trí cho các biến môi trường của dịch vụ Workflows và dự án:

gcloud config set workflows/location ${REGION}

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')

Tạo một tài khoản dịch vụ tuỳ chỉnh cho quy trình có các quyền sau:

  • Gọi dịch vụ Cloud Run
  • Call Logging APIs
  • Đăng thông báo lên chủ đề PubSub
export WORKFLOW_SERVICE_ACCOUNT=workflows-cloudrun-sa

gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/run.invoker"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/logging.logWriter"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/pubsub.publisher"

Triển khai quy trình công việc. Quy trình công việc được định cấu hình để sử dụng tài khoản dịch vụ đã tạo ở bước trước:

export WORKFLOW_NAME=rewardsWorkflow

gcloud workflows deploy ${WORKFLOW_NAME} \
  --source=rewardsWorkflow.yaml \
  --service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com

Xem nguồn quy trình làm việc và các thông tin chi tiết khác(thẻ Triggers). Hiện không có trình kích hoạt nào được định cấu hình để thực thi quy trình này. Bạn sẽ thiết lập chế độ này trong bước tiếp theo.

d3527393fb07a9b3.png

5. Định cấu hình chủ đề Pub/Sub và điều kiện kích hoạt Eventarc

Tiếp theo, bạn sẽ tạo 2 chủ đề Pub/Sub và định cấu hình một trình kích hoạt Eventarc.

Dịch vụ Đặt hàng sẽ xuất bản thông báo đến order-topic kèm theo thông tin về đơn đặt hàng mới.

Quy trình công việc sẽ xuất bản thông báo đến order-points-topic kèm theo thông tin về điểm phần thưởng của đơn đặt hàng và tổng số tiền. Order Service(không phải là phần được triển khai của phòng thí nghiệm này) cung cấp một điểm cuối được dùng bởi Push subscription cho order-points-topic, để cập nhật điểm phần thưởng và tổng số tiền cho mỗi đơn đặt hàng.

Tạo chủ đề Pub/Sub mới:

export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID

Đặt vị trí cho dịch vụ Eventarc:

gcloud config set eventarc/location ${REGION}

Tạo một tài khoản dịch vụ tuỳ chỉnh mà trình kích hoạt Eventarc sẽ dùng để thực thi quy trình công việc.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

Cấp quyền truy cập cho tài khoản dịch vụ để thực thi quy trình công việc.

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/workflows.invoker"

Tạo một điều kiện kích hoạt Eventarc để theo dõi các thông báo Pub/Sub và gửi các thông báo đó đến Workflows.

gcloud eventarc triggers create new-orders-trigger \
  --destination-workflow=${WORKFLOW_NAME} \
  --destination-workflow-location=${REGION} \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --transport-topic=$TOPIC_ID

Kết quả mẫu:

Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done.     
Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow].
WARNING: It may take up to 2 minutes for the new trigger to become active.

Xem lại điều kiện kích hoạt Eventarc đã tạo.

bda445561ad5f4.png

Xem xét sự kiện đăng ký đã tạo cho điều kiện kích hoạt.

3fccdda7d5526597.png

Xem xét các thay đổi ở phía quy trình làm việc. Đã thêm một điều kiện kích hoạt mới.

23d338abc16eaac8.png

6. Quy trình kiểm thử

c6d4337a47b55333.png

Để mô phỏng Dịch vụ đặt hàng, bạn sẽ gửi tin nhắn đến chủ đề Pub/Sub từ Cloud Shell và xác minh nhật ký Dịch vụ khách hàng của Cloud Run trong bảng điều khiển Cloud.

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

Kết quả mẫu:

messageIds:
- '5063709859203105'

Xem xét thông tin chi tiết về quá trình thực thi quy trình và nhật ký.

1e802826c700cc3e.png

aad0eae7a970316.png

7. Ghi nhật ký có cấu trúc trong quy trình công việc

Quy trình công việc được định cấu hình để ghi nhật ký có cấu trúc ở định dạng JSON. Nhật ký được ghi bằng Cloud Logging API, tài nguyên workflows.googleapis.com/Workflow và theo tên nhật ký projects/${PROJECT_ID}/logs/Workflows.

Xem cấu hình ghi nhật ký bên dưới.

    - log_totalAmount:
        call: sys.log
        args:
            json:
              orderNumber: ${order.orderNumber}
              totalAmount: ${totalAmount}
              multiplier: ${multiplier}
              totalRewardPoints: ${rewardPoints}
              orderRewardPoints: ${orderRewardPoints}
            severity: INFO

Mở Trình khám phá nhật ký trong Bảng điều khiển rồi chạy một truy vấn cho các đơn đặt hàng đã xử lý có tổng số tiền lớn hơn 2 đô la.

Sử dụng truy vấn bên dưới, thay thế mã dự án(qwiklabs-gcp-01-1a990bfcadb3) bằng mã dự án hiện tại của bạn:

resource.type="workflows.googleapis.com/Workflow" AND 
logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND 
jsonPayload.totalAmount > 2 AND 
timestamp >= "2022-11-01T23:59:59Z" AND 
timestamp <= "2023-11-05T00:00:00Z"

Kết quả mẫu:

22d2f4686c58724d.png

Mở Cloud Shell và sử dụng gcloud CLI để đọc nhật ký bằng các lệnh bên dưới.

Thay thế mã dự án(qwiklabs-gcp-01-1a990bfcadb3) bằng mã dự án hiện tại của bạn.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

Đầu ra mẫu bằng định dạng table:

35d5fd851ecde60.png

Thay thế mã dự án(qwiklabs-gcp-01-1a990bfcadb3) bằng mã dự án hiện tại của bạn.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format=json | jq

Đầu ra mẫu bằng định dạng json:

ac7421548ea9a9f2.png

8. Xem xét hồ sơ khách hàng

(Các bước không bắt buộc) Hiện tại, customer-service chỉ được định cấu hình để chấp nhận lưu lượng truy cập từ các mạng nội bộ.

Chạy các lệnh bên dưới để lưu URL dịch vụ và gọi dịch vụ khách hàng.

export REGION=us-east1
CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer

Bạn sẽ nhận được thông báo lỗi cho biết bạn không có quyền truy cập.

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Access is forbidden.</h2>
<h2></h2>
</body></html>

Để xem các bản ghi khách hàng hiện tại, hãy thay đổi chế độ cài đặt ingress (đường vào) customer-service Cloud Run thành lựa chọn "Allow all traffic" rồi nhấp vào "Lưu".

Thao tác này sẽ công khai điểm cuối và bạn có thể gọi Customer Service API từ Cloud Shell bằng cách sử dụng curl.

9156e0eb0a19bc68.png

Chạy các lệnh bên dưới để lưu URL dịch vụ và liệt kê khách hàng hiện tại.

CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

Kết quả mẫu:

[
  {
    "id": "id1",
    "rewardPoints": 3,
    "address": "1845 Denise St",
    "city": "Mountain View",
    "createDateTime": "2022-11-11T15:56:45.487566",
    "email": "ajensen9090+eats@gmail.com",
    "name": "Angela Jensen",
    "state": "CA",
    "updateDateTime": "2022-11-11T15:56:45.866125",
    "zip": "94043"
  }
]

Chạy lệnh để xuất bản đơn đặt hàng mới nhiều lần và xác minh điểm phần thưởng của khách hàng bằng lệnh curl.

Xuất bản thông báo về đơn đặt hàng mới:

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

Xác minh điểm phần thưởng của khách hàng:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

Xác minh nhật ký. Thay thế mã dự án(qwiklabs-gcp-01-1a990bfcadb3) bằng mã dự án hiện tại của bạn.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

9. Xin chúc mừng!

Xin chúc mừng, bạn đã hoàn tất lớp học lập trình này!

Nội dung đã đề cập:

  • Cách định cấu hình quy trình công việc
  • Cách định cấu hình điều kiện kích hoạt Eventarc cho Workflows
  • Cách gọi dịch vụ Cloud Run từ Workflows
  • Cách truy vấn nhật ký có cấu trúc trong Cloud Logging và sử dụng gcloud CLI

Bước tiếp theo:

Khám phá các lớp học lập trình khác của Cymbal Eats:

Dọn dẹp

Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án rồi xoá từng tài nguyên.

Xoá dự án

Cách dễ nhất để không bị tính phí là xoá dự án mà bạn đã tạo cho hướng dẫn này.