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 điều kiện kích hoạt Eventarc kết nối chủ đề Pub/Sub với dịch vụ Workflows. Eventarc cho phép bạn tách dịch vụ thành dịch vụ giao tiếp, làm cho giải pháp của bạn dễ mở rộng hơn 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 hiện một quy trình kinh doanh nhằm tính điểm thưởng của khách hàng khi khách hàng đặt món 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ẽ đăng thông báo lên chủ đề Pub/Sub để thông báo cho Order Service về điểm phần thưởng đã tính.

c6d4337a47b55333.png

Eventarc là gì?

Eventarc cho phép bạn xây dựng các kiến trúc hướng sự kiện mà không cần phải 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 chuẩn hoá để quản lý luồng thay đổi trạng thái, được gọi là sự kiện, giữa các dịch vụ vi mô được tách riêng. Khi được kích hoạt, Eventarc sẽ định tuyến những sự kiện này thông qua gói thuê bao Pub/Sub đến nhiều điểm đến khác nhau (ví dụ: quy trình công việc hoặc Cloud Run) đồng thời giúp bạn quản lý hoạt động phân phối, bảo mật, uỷ quyền, khả năng ghi nhận và xử lý lỗi.

Nhà cung cấp dịch vụ sự kiện trên Google

  • Hơn 90 nhà cung cấp dịch vụ 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 của Cloud.
  • Nhà cung cấp dịch vụ Pub/Sub. Những nhà cung cấp này gửi sự kiện đến Eventarc bằng thông báo Pub/Sub.

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

Nhà cung cấp bên thứ ba là các pháp nhân không phải của Google có cung cấp 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ởi các tin nhắn được xuất bản lên chủ đề Pub/Sub.
  • Sự kiện trong Nhật ký kiểm tra của Cloud (CAL). Nhật ký kiểm tra đám mây cung cấp nhật ký kiểm tra Hoạt động của quản trị viên và Quyền truy cập dữ liệu cho từng dự án, thư mục và tổ chức trên đám mây.
  • Sự kiện trực tiếp. Eventarc có thể được kích hoạt bằng nhiều sự kiện trực tiếp, chẳng hạn như cập nhật bộ chứa Cloud Storage hoặc cập nhật mẫu Cấu hình từ xa Firebase.

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

c7ca054200edf1b3.png

Workflows là gì?

Quy trình công việc 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. Quy trình công việc 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 đơn đặt hàng bị huỷ, sự kiện có thể được xuất bản và tất cả dịch vụ quan tâm sẽ xử lý sự kiện.
  • Quy trình công việc theo lô chạy các công việc thường xuyên bằng Trình lập lịch biểu đám mây. Ví dụ: một công việc hằng đêm để kiểm tra các món trong thực đơn ở trạng thái không thành công và xoá các món đó.

Quy trình công việc lý tưởng cho những quy trình làm việc có chức năng sắp xếp các dịch vụ. Bạn có thể tự động hoá các quy trình, bao gồm cả chờ và thử lại trong tối đa 1 năm.

Lợi ích của quy trình công việc:

  • Cấu hình thay vì viết 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á kiến trúc của bạn. Stateful Workflows cho phép bạn trực quan hoá 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 phần phụ thuộc.
  • Kết hợp giữa độ tin cậy và khả năng chống lỗi. Kiểm soát lỗi bằng logic thử lại mặc định hoặc tuỳ chỉnh và xử lý lỗi ngay cả khi các hệ thống khác gặp lỗi. Chúng tôi sẽ 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: Không có gì cần vá lỗi hoặc duy trì. Chỉ trả tiền khi quy trình công việc của bạn chạy, không mất phí trong khi chờ hoặc không hoạt động.

Trong phòng thí nghiệm này, bạn sẽ định cấu hình quy trình làm việc 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 Luồng 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 Workflows trong Cloud Logging và sử dụng gcloud CLI

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

  • Phòng thí nghiệm này giả định rằng bạn đã quen thuộc với môi trường Cloud Console và Cloud Shell.
  • Trải nghiệm trước đây trên Cloud Run và Cloud Pub/Sub tuy hữu ích 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 Cloud

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại 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ự không được API của Google 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à duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. 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 (mã này thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 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ữ rồi di 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à bản sao 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 Quyền truy cập VPC dành cho Dịch vụ và Công việc Cloud Run để giao tiếp với cơ sở dữ liệu AlloyDB
  • Công việc chạy trên đám mây để tạo cơ sở dữ liệu AlloyDB
  • Dịch vụ khách hàng Cloud Run – dịch vụ vi mô dựa trên java sử dụng khung Quarkus.
./lab-setup.sh

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

6356559df3eccdda.pngS

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

Hãy chờ cho đến khi tập lệnh hoàn tất và bạn sẽ thấy kết quả 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. Xem xét quy trình làm việc

Các khái niệm chính của quy trình công việc

Một 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 Workflows( YAML hoặc JSON).

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

Thực thi là một lần chạy 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 khoản phí nào. Tất cả các quá trình thực thi quy trình công việc đều độc lập và việc mở rộng quy mô nhanh chóng của sản phẩm cho phép thực thi đồng thời nhiều lần.

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

  • Các bước – Để tạo quy trình công việc, bạn xác định steps và thứ tự thực hiện mong muốn bằng cú pháp Quy trình công việc. Mỗi quy trình làm việc phải có ít nhất một bước.
  • Điều kiện – Bạn có thể sử dụng khối switch làm cơ chế lựa chọn cho phép giá trị của biểu thức kiểm soát luồng thực thi quy trình công việc.
  • Lặp lại – Bạn có thể sử 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ư một danh sách hoặc bản đồ.
  • Luồng công việc phụ – Quy trình công việc 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 công việc của bạn sẽ lặp lại nhiều lần.

Kích hoạt lượt thực thi

  • Thủ công – Bạn có thể quản lý quy trình công việc từ bảng điều khiển Google Cloud hoặc từ dòng lệnh bằng Google Cloud CLI.
  • Có lập trình – Bạn có thể dùng Thư viện ứng dụng đám mây cho API Quy trình công việc 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 Trình lập lịch biểu đám mây để chạy 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 (được đặt trong khối chính). Khối chính chấp nhận một đối số là bất kỳ kiểu dữ liệu JSON hợp lệ nào. Trường thông số đặt tên cho biến mà quy trình công việc sử 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 Workflows để 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.

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

Quy trình xác thực quy trình công việc được định cấu hình trong khối args bằ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ách hàng không tồn tại, 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 phần thưởng. Dựa trên tổng số tiền của đơn đặt hàng, quy trình làm việc sẽ chọn một hệ số để tính điểm phần thưởng cho khách hàng. Hãy xem mẫu 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 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 dịch vụ Workflows và biến môi trường 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ông việc với các quyền sau:

  • Gọi dịch vụ Cloud Run
  • API ghi nhật ký cuộc gọi
  • Xuất bản 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 này đượ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 lại nguồn quy trình công việc và các thông tin chi tiết khác(thẻ Trình kích hoạt). Hiện tại không có điều kiện kích hoạt nào được định cấu hình để thực thi quy trình làm việc này. Bạn sẽ thiết lập tính năng 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 điều kiện kích hoạt Eventarc.

Dịch vụ đặt hàng sẽ đăng thông báo lên order-topic kèm theo thông tin về các đơn đặt hàng mới.

Quy trình công việc sẽ đăng thông báo lên order-points-topic kèm theo thông tin về điểm thưởng cho đơn đặt hàng và tổng số tiền. Dịch vụ đặt hàng(không được triển khai cho phần phòng thí nghiệm này) hiển thị điểm cuối mà gói thuê bao Đẩy dùng 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à điều kiện kích hoạt Eventarc sẽ 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 vào 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 trình kích hoạt Eventarc để theo dõi thông báo Pub/Sub và gửi chúng đế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 xét điều kiện kích hoạt Eventarc đã tạo.

bda445561ad5f4.png

Xem lại gói thuê bao đã tạo cho điều kiện kích hoạt.

3fccdda7d5526597.pngS

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

23d338abc16eaac8.pngs

6. Kiểm thử quy trình công việc

c6d4337a47b55333.png

Để mô phỏng dịch vụ đặt hàng, bạn sẽ gửi thông báo tới chủ đề Pub/Sub từ Cloud Shell và xác minh nhật ký của Dịch vụ khách hàng 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 chi tiết thực thi quy trình công việc và nhật ký.

1e802826c700cc3e.png.

aad0eae7a970316.png

7. Ghi nhật ký có cấu trúc 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à dưới tên nhật ký projects/${PROJECT_ID}/logs/Workflows.

Xem lại 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ở Logs Explorer (Trình khám phá nhật ký) trong Console rồi chạy truy vấn cho các đơn đặt hàng đã xử lý có tổng số tiền lớn hơn 2 đô la Mỹ.

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.

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)"

Kết quả mẫu bằng cách sử dụng định dạng table:

35d5fd851ecde60.pngS

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

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

Kết quả mẫu bằng cách sử dụng định dạng json:

ac7421548ea9a9f2.png

8. Kiểm tra hồ sơ của khách hàng

(Các bước không bắt buộc) Hiện tại, bạn đã định cấu hình customer-service để chỉ 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 cho bộ phận 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 quyền truy cập bị cấm.

<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 hồ sơ khách hàng hiện có, hãy thay đổi chế độ cài đặt lưu lượng vào customer-service của Cloud Run thành "Allow all traffic" và 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 API Dịch vụ khách hàng từ Cloud Shell bằng curl.

9156e0eb0a19bc68.pngS

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 một đơn đặt hàng mới nhiều lần và xác minh điểm thưởng của khách hàng bằng lệnh curl.

Xuất bản thông báo cho đơ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 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.

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 thành lớp học lập trình!

Những nội dung chúng ta đã đề cập:

  • Cách định cấu hình Quy trình công việc
  • Cách định cấu hình trình kích hoạt Eventarc cho Quy trình công việc
  • 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 về Cymbal Eats:

Dọn dẹp

Để tránh làm phát sinh chi phí cho các tài nguyên được sử dụng trong hướng dẫn này trong tài khoản Google Cloud của bạn, hãy xoá dự án chứa các tài nguyên đó, hoặc giữ lại dự án và xoá từng tài nguyên riêng lẻ.

Xoá dự án

Cách dễ nhất để loại bỏ việc thanh toán là xoá dự án bạn đã tạo cho phần hướng dẫn.