Vous pouvez publier un événement CloudEvents directement sur un bus Eventarc Advanced dans un format compatible à l'aide de Google Cloud CLI ou en envoyant une requête à l'API REST Eventarc Publishing. Vous pouvez également utiliser les bibliothèques clientes Eventarc pour accéder aux API Eventarc à partir d'un langage compatible.
Avant de commencer
Avant de commencer, assurez-vous d'avoir effectué les étapes suivantes :
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Eventarc and Eventarc Publishing APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Eventarc and Eventarc Publishing APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com Ouvrez un terminal.
Vous pouvez publier des événements sur un bus à l'aide de la commande
gcloud eventarc message-buses publish. Exemple :ougcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
ougcloud 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
Remplacez les éléments suivants :
BUS_NAME: ID ou identifiant complet du bus auquel publier l'événement.
Vous ne devez utiliser qu'un seul des éléments suivants :
AVRO_MESSAGE: message d'événement au format Avro, conformément à cette spécification.JSON_MESSAGE: message d'événement au format JSON, conformément à cette spécification.DATA_PAYLOAD: données d'un événement publié.
Si vous utilisez l'option
--event-data, vous devez également utiliser les options suivantes :EVENT_ID: identifiant de l'événement. Les producteurs d'événements doivent s'assurer quesource+idest unique pour chaque événement distinct.EVENT_SOURCE: source d'événement d'un événement publié.EVENT_TYPE: type d'événement lié à l'occurrence d'origine.
Si vous utilisez l'indicateur
--event-data, vous pouvez éventuellement utiliser les éléments suivants :EVENT_ATTRIBUTE: attributs d'un événement publié. Vous pouvez répéter l'option--event-attributespour ajouter d'autres attributs.Notez que les événements peuvent inclure un nombre quelconque d'attributs CloudEvents personnalisés supplémentaires avec des noms distincts (également appelés attributs d'extension).
- Nom complet de la ressource du bus au format
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAMERemplacez les éléments suivants :
PROJECT_ID: ID du projet de bus Google Cloud.LOCATION: région dans laquelle le bus est déployé (par exemple,us-central1).BUS_NAME: nom du bus auquel publier l'événement.
SPEC_VERSION: version de la spécification CloudEvents utilisée par l'événement (par exemple,1.0).EVENT_TYPE: type d'événement lié à l'occurrence d'origine.EVENT_SOURCE: source d'événement d'un événement publié.EVENT_ID: identifiant de l'événement. Les producteurs doivent s'assurer quesource+idest unique pour chaque événement distinct.CONTENT_TYPE(facultatif) : type de contenu de la valeurdata. Si un événement au format JSON ne comporte pas d'attributdatacontenttype, les données sont considérées comme une valeur JSON conforme au type de supportapplication/json.DATA_PAYLOAD(facultatif) : charge utile de l'événement encodée au format multimédia spécifié pardatacontenttypeet respectantdataschemalorsque ces attributs sont présents.- Publier des événements provenant de sources Google
- Transformer les événements reçus
- Mettre en forme les événements reçus
Publier directement
Le message d'événement que vous publiez directement doit être conforme à la spécification CloudEvents.
gcloud
Exemples :
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"} }'
API REST
Pour publier un événement dans un bus, utilisez la méthode projects.locations.messageBuses.publish.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
Corps JSON de la requête :
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Si l'opération réussit, le serveur renvoie un code d'état HTTP 200 OK et le corps de réponse vide au format JSON :
200 OK
{}