您可以使用 Google Cloud CLI,或向 Eventarc Publishing REST API 發出要求,以支援的格式將 CloudEvents 事件直接發布至 Eventarc Advanced 匯流排。您也可以使用 Eventarc 用戶端程式庫,透過支援的語言存取 Eventarc API。
事前準備
開始之前,請確認您已完成下列步驟:
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Eventarc 和 Eventarc Publishing API:
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
建立 Google Cloud 專案:
gcloud projects create PROJECT_ID
將
PROJECT_ID替換為您要建立的 Google Cloud 專案名稱。 -
選取您建立的 Google Cloud 專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID替換為 Google Cloud 專案名稱。
啟用 Eventarc 和 Eventarc Publishing API:
啟用 API 時所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com
直接發布
您直接發布的事件訊息必須符合 CloudEvents 規格。
gcloud
開啟終端機。
您可以使用
gcloud eventarc message-buses publish指令,將事件發布至匯流排。例如:或:gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
或:gcloud eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
gcloud eventarc message-buses publish BUS_NAME \ --event-data=DATA_PAYLOAD \ --event-id=EVENT_ID \ --event-source=EVENT_SOURCE \ --event-type=EVENT_TYPE \ --event-attributes=EVENT_ATTRIBUTE
更改下列內容:
BUS_NAME:要發布事件的匯流排 ID 或完整 ID。
您只能使用下列其中一種方法:
如果使用
--event-data旗標,也必須使用下列項目:EVENT_ID:事件 ID。事件產生者必須確保每個不同事件的source+id都不重複。EVENT_SOURCE:已發布事件的事件來源。EVENT_TYPE:與原始事件相關的事件類型。
使用
--event-data標記時,您可以視需要使用下列項目:EVENT_ATTRIBUTE:已發布事件的屬性。如要新增更多屬性,可以重複使用--event-attributes標記。請注意,事件可能包含任意數量的其他自訂 CloudEvents 屬性,且名稱各不相同 (也稱為擴充屬性)。
範例:
gcloud eventarc message-buses publish my-bus \ --event-data='{"key": "hello-world-data"}' \ --event-id=hello-world-id-1234 \ --event-source=hello-world-source \ --event-type=hello-world-type \ --event-attributes="datacontenttype=application/json"
gcloud eventarc message-buses publish my-bus --json-message='{ "specversion" : "1.0", "type" :"com.example.someevent", "source" : "google.cloud.storage.object.v1.finalized", "id" : "A234-1234-1234", "time" : "2024-04-05T17:31:00Z", "bucket" : "bucketName", "datacontenttype" : "application/json", "data":{"key": "value"} }'
REST API
如要將事件發布至匯流排,請使用 projects.locations.messageBuses.publish 方法。
使用任何要求資料之前,請先修改下列項目的值:
- 匯流排的完整資源名稱,格式為
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME更改下列內容:
PROJECT_ID:公車專案的 Google Cloud 專案 ID。LOCATION:匯流排部署所在的區域,例如us-central1。BUS_NAME:要發布事件的匯流排名稱。
SPEC_VERSION:事件使用的 CloudEvents 規格版本,例如1.0。EVENT_TYPE:與原始事件相關的事件類型。EVENT_SOURCE:已發布事件的事件來源。EVENT_ID:事件 ID。 製作者必須確保每個不同活動的source+id皆不重複。CONTENT_TYPE(選用):data值的內容類型。如果 JSON 格式的事件沒有datacontenttype屬性,系統會假設資料是符合application/json媒體類型的 JSON 值。DATA_PAYLOAD(選用):事件酬載,已編碼為datacontenttype指定的媒體格式,並遵守dataschema(如有這些屬性)。
JSON 要求內文:
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
請展開以下其中一個選項,以傳送要求:
如果成功,伺服器會傳回 HTTP 200 OK 狀態碼,以及 JSON 格式的空白回應主體:
200 OK
{}