1. Giới thiệu

Cloud Run cho phép bạn chạy các vùng chứa không trạng thái trong một môi trường được quản lý hoàn toàn. Dịch vụ này được xây dựng dựa trên Knative nguồn mở, cho phép bạn chọn chạy các vùng chứa được quản lý hoàn toàn bằng Cloud Run hoặc trong cụm Google Kubernetes Engine bằng Cloud Run for Anthos.

Eventarc giúp bạn dễ dàng kết nối nhiều dịch vụ (Cloud Run, Cloud Functions, Workflows) với các sự kiện từ nhiều nguồn. Nền tảng này cho phép bạn xây dựng các cấu trúc hướng sự kiện, trong đó các vi dịch vụ được liên kết lỏng lẻo và phân tán. Nền tảng này cũng xử lý việc tiếp nhận, phân phối, bảo mật, uỷ quyền và xử lý lỗi cho bạn, giúp cải thiện tính linh hoạt của nhà phát triển và khả năng phục hồi của ứng dụng.
Trong lớp học lập trình này, bạn sẽ tìm hiểu về Eventarc. Cụ thể hơn, bạn sẽ theo dõi các sự kiện từ Pub/Sub, Cloud Storage và Cloud Audit Logs bằng Eventarc, rồi truyền các sự kiện đó đến một dịch vụ Cloud Run.
Kiến thức bạn sẽ học được
- Tầm nhìn của Eventarc
- Khám phá các sự kiện trong Eventarc
- Tạo một đích nhận Cloud Run
- Tạo điều kiện kích hoạt cho Pub/Sub
- Tạo điều kiện kích hoạt cho Cloud Storage
- Tạo một điều kiện kích hoạt cho Cloud Audit Logs
- Khám phá giao diện người dùng Eventarc
2. Tầm nhìn của Eventarc
Eventarc hướng đến việc phân phối các sự kiện từ nhiều nguồn sự kiện của Google, Google Cloud và bên thứ ba đến các đích đến sự kiện trên Google Cloud.

Các nguồn của Google Cloud | Các nguồn sự kiện là sản phẩm thuộc sở hữu của Google Cloud |
Nguồn của Google | Các nguồn sự kiện là những sản phẩm thuộc sở hữu của Google, chẳng hạn như Gmail, Hangouts, Android Management và nhiều sản phẩm khác |
Nguồn tuỳ chỉnh | Nguồn sự kiện không phải là sản phẩm của Google và do chính người dùng cuối tạo |
Nguồn bên thứ ba | Các nguồn sự kiện không thuộc quyền sở hữu của Google cũng như không do khách hàng tạo ra. Điều này bao gồm các nguồn sự kiện phổ biến như Check Point CloudGuard, Datadog, ForgeRock, Lacework, v.v. do các nhà cung cấp và đối tác bên thứ ba sở hữu và duy trì. |
Các sự kiện được chuẩn hoá theo định dạng CloudEvents v1.0 để có khả năng tương tác giữa các dịch vụ. CloudEvents là một quy cách mở, không phụ thuộc vào nhà cung cấp, mô tả dữ liệu sự kiện ở các định dạng phổ biến, cho phép khả năng tương tác giữa các dịch vụ, nền tảng và hệ thống.
3. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đă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.



- 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 dùng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là 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 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). Vì vậy, nếu không thích mã này, bạn có thể tạo một mã ngẫu nhiên khác hoặc thử mã của riêng mình để xem mã đó có dùng được hay không. Sau đó, mã này sẽ "đóng băng" sau khi dự án được tạo. - 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.
- 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 bị tính phí ngoài phạm vi hướng dẫn này, hãy làm theo mọi hướng dẫn "dọn dẹp" ở cuối lớp học lập trình. 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.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn chỉ cần một trình duyệt là có thể thực hiện mọi thao tác trong phòng thí nghiệm này.
Trước khi bắt đầu
Trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Triển khai dịch vụ Cloud Run
Triển khai một dịch vụ Cloud Run để nhận các sự kiện. Bạn sẽ triển khai vùng chứa Hello của Cloud Run để ghi nhật ký nội dung của CloudEvents.
Trước tiên, hãy bật các dịch vụ bắt buộc cho Cloud Run:
gcloud services enable run.googleapis.com
Triển khai vùng chứa hello lên Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Khi thành công, dòng lệnh sẽ hiển thị URL của dịch vụ. Bạn có thể mở URL dịch vụ trong bất kỳ cửa sổ trình duyệt nào để kiểm tra kỹ xem dịch vụ đã được triển khai hay chưa.
5. Khám phá sự kiện
Trước khi tạo trình kích hoạt trong Eventarc, bạn có thể khám phá các nguồn sự kiện, các loại sự kiện mà chúng có thể phát ra và cách định cấu hình trình kích hoạt để sử dụng các sự kiện đó.
Cách xem danh sách các loại sự kiện:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Để biết thêm thông tin về từng loại sự kiện:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Để xem danh sách các dịch vụ phát ra một loại sự kiện nhất định:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Để xem danh sách tên phương thức (sự kiện phụ) mà mỗi dịch vụ có thể phát ra:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Tạo điều kiện kích hoạt Pub/Sub
Một cách để nhận sự kiện là thông qua Cloud Pub/Sub. Mọi ứng dụng đều có thể xuất bản tin nhắn lên Pub/Sub và những tin nhắn này có thể được gửi đến Cloud Run thông qua Eventarc.
Thiết lập
Trước khi tạo bất kỳ điều kiện kích hoạt nào, hãy bật các dịch vụ bắt buộc cho Eventarc:
gcloud services enable eventarc.googleapis.com
Bạn cũng cần có một tài khoản dịch vụ để các điều kiện kích hoạt sử dụng. Tạo tài khoản dịch vụ:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Tạo
Tạo một điều kiện kích hoạt để lọc các sự kiện được xuất bản cho chủ đề Pub/Sub đến dịch vụ Cloud Run đã triển khai của chúng tôi:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Thử nghiệm
Trình kích hoạt Pub/Sub sẽ tạo một chủ đề ở chế độ nền. Hãy tìm hiểu và chỉ định cho một biến:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Sử dụng gcloud để xuất bản một thông báo cho chủ đề:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Dịch vụ Cloud Run ghi nhật ký nội dung của thông báo đến. Bạn có thể xem thông tin này trong phần Nhật ký của phiên bản Cloud Run:

Tạo bằng một chủ đề Pub/Sub hiện có
Theo mặc định, khi bạn tạo một trình kích hoạt Pub/Sub, Eventarc sẽ tạo một chủ đề ngầm để bạn sử dụng làm chủ đề truyền tải giữa ứng dụng và dịch vụ Cloud Run. Điều này rất hữu ích để dễ dàng và nhanh chóng tạo một trình kích hoạt được hỗ trợ bởi Pub/Sub, nhưng đôi khi bạn có thể muốn sử dụng một chủ đề hiện có. Eventarc cho phép bạn chỉ định một chủ đề Pub/Sub hiện có trong cùng một dự án bằng cờ --transport-topic gcloud.
Để xem cách hoạt động của tính năng này, hãy tạo một chủ đề Pub/Sub để dùng làm chủ đề truyền tải:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Tạo điều kiện kích hoạt:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Bạn có thể kiểm thử điều kiện kích hoạt bằng cách gửi một thông báo đến chủ đề:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Tạo điều kiện kích hoạt Cloud Storage
Trong bước này, bạn sẽ tạo một điều kiện kích hoạt để theo dõi các sự kiện từ Cloud Storage.
Thiết lập
Trước tiên, hãy tạo một vùng chứa để nhận các sự kiện từ:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Cấp vai trò eventarc.eventReceiver để có thể dùng tài khoản dịch vụ trong một trình kích hoạt Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Bạn cũng cần thêm vai trò pubsub.publisher vào tài khoản dịch vụ Cloud Storage cho các điều kiện kích hoạt Cloud Storage:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Tạo
Tạo một điều kiện kích hoạt để định tuyến các sự kiện tạo tệp mới từ nhóm đến dịch vụ của bạn:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Thử nghiệm
Liệt kê tất cả các điều kiện kích hoạt để xác nhận rằng điều kiện kích hoạt đã được tạo thành công:
gcloud eventarc triggers list
Tải tệp lên bộ chứa Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Nếu kiểm tra nhật ký của dịch vụ Cloud Run trong Cloud Console, bạn sẽ thấy sự kiện đã nhận:

8. Tạo một trình kích hoạt Cloud Audit Logs
Mặc dù trình kích hoạt Cloud Storage là cách tốt hơn để theo dõi các sự kiện Cloud Storage, nhưng trong bước này, bạn sẽ tạo trình kích hoạt Nhật ký kiểm tra Cloud để thực hiện việc tương tự.
Thiết lập
Để nhận sự kiện từ một dịch vụ, bạn cần bật Nhật ký kiểm tra trên đám mây. Trên Cloud Console, hãy chọn IAM & Admin và Audit Logs trong trình đơn trên cùng bên trái. Trong danh sách dịch vụ, hãy đánh dấu vào Google Cloud Storage:

Ở bên phải, hãy nhớ chọn Admin, Read và Write rồi nhấp vào Save:

Tạo
Tạo một điều kiện kích hoạt để định tuyến các sự kiện tạo tệp mới từ nhóm đến dịch vụ của bạn:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Thử nghiệm
Trình kích hoạt Nhật ký kiểm tra mất một chút thời gian để khởi tạo. Bạn có thể kiểm tra xem điều kiện kích hoạt đã được tạo hay chưa bằng cách liệt kê tất cả điều kiện kích hoạt:
gcloud eventarc triggers list
Bạn sẽ thấy trường ACTIVE là Yes:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Tải cùng một tệp lên bộ chứa Cloud Storage như bạn đã làm trước đó:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Nếu kiểm tra nhật ký của dịch vụ Cloud Run trong Cloud Console, bạn sẽ thấy sự kiện đã nhận:

9. Khám phá giao diện người dùng Eventarc
Trong bước này, bạn sẽ khám phá giao diện người dùng Eventarc trong Google Cloud Console. Trong giao diện người dùng Eventarc, bạn có thể xem thông tin tổng quan về tất cả các điều kiện kích hoạt, chỉnh sửa và xoá các điều kiện kích hoạt đó, đồng thời tạo điều kiện kích hoạt mới trong Google Cloud Console.
Chuyển đến phần Eventarc của Google Cloud:

Bạn sẽ thấy danh sách các điều kiện kích hoạt mà bạn đã tạo trước đó:

Nếu nhấp vào một điều kiện kích hoạt, bạn có thể xem thông tin chi tiết về điều kiện kích hoạt đó, cũng như chỉnh sửa hoặc xoá điều kiện kích hoạt:

Bạn cũng có thể tạo một điều kiện kích hoạt mới bằng cách chọn biểu tượng Create trigger rồi điền thông tin chi tiết về điều kiện kích hoạt:

10. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này.
Nội dung đã đề cập
- Tầm nhìn của Eventarc
- Khám phá các sự kiện trong Eventarc
- Tạo một đích nhận Cloud Run
- Tạo điều kiện kích hoạt cho Pub/Sub
- Tạo điều kiện kích hoạt cho Cloud Storage
- Tạo một điều kiện kích hoạt cho Cloud Audit Logs
- Khám phá giao diện người dùng Eventarc