Zertifikatmanager-Ereignisse an Workflows weiterleiten

Ein Eventarc-Trigger deklariert Ihr Interesse an einem bestimmten Ereignis oder einer Reihe von Ereignissen. Sie können das Ereignisrouting konfigurieren. Legen Sie dazu Filter für den Trigger fest, einschließlich der Ereignisquelle und des Zielworkflows.

Ereignisse werden im CloudEvents-Format über eine HTTP-Anfrage zugestellt. Der Workflow-Dienst konvertiert das Ereignis in ein JSON-Objekt (gemäß derCloudEvents-Spezifikation) und übergibt das Ereignis als Workflow-Laufzeitargument in die Workflow-Ausführung. Achten Sie darauf, dass die Ereignisgröße 512 KB nicht überschreitet. Ereignisse, die größer als die maximale Argumentgröße von Workflows sind, lösen keine Workflow-Ausführungen aus.

In dieser Anleitung erfahren Sie, wie Sie das Ereignisrouting konfigurieren, damit die Ausführung Ihres Workflows als Reaktion auf ein direktesCertificate Manager -Ereignis ausgelöst wird. Weitere Informationen finden Sie in der Liste der unterstützten direkten Ereignisse.

Erstellung eines Triggers vorbereiten

Führen Sie die folgenden Aufgaben aus, bevor Sie einen Eventarc-Trigger für einen Zielworkflow erstellen.

Console

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Aktivieren Sie die Eventarc, Eventarc Publishing, Workflows und Workflow Executions APIs.

    Aktivieren Sie die APIs

  3. Aktivieren Sie gegebenenfalls die API, die mit den direkten Ereignissen verbunden ist. Aktivieren Sie beispielsweise für Certificate Manager -Ereignisse dieCertificate Manager API.

  4. Erstellen Sie ein nutzerverwaltetes Dienstkonto, falls Sie noch keines haben, und weisen Sie ihm dann die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für einen Zielworkflow verwalten kann.

    1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

      Zur Seite „Dienstkonten“

    2. Wählen Sie Ihr Projekt aus.

    3. Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.

      Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel: Service account for event trigger

    4. Klicken Sie auf Erstellen und fortfahren.

    5. Wählen Sie in der Liste Rolle auswählen die erforderlichen IAM-Rollen (Identitäts- und Zugriffsverwaltung) aus, die Ihrem Dienstkonto zugewiesen werden sollen. Weitere Informationen finden Sie unter Rollen und Berechtigungen für Workflows-Ziele.

      Klicken Sie auf Weitere Rolle hinzufügen, um weitere Rollen hinzuzufügen.

    6. Klicken Sie auf Weiter.

    7. Klicken Sie zum Abschließen der Erstellung des Dienstkontos auf Fertig.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Aktivieren Sie die Eventarc, Eventarc Publishing, Workflows und Workflow Executions APIs:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. Aktivieren Sie gegebenenfalls die API, die mit den direkten Ereignissen verbunden ist. Aktivieren Sie beispielsweise für Certificate Manager -Ereignisse certificatemanager.googleapis.com.

  4. Erstellen Sie ein nutzerverwaltetes Dienstkonto, falls Sie noch keines haben, und weisen Sie ihm dann die erforderlichen Rollen und Berechtigungen zu, damit Eventarc Ereignisse für einen Zielworkflow verwalten kann.

    1. Erstellen Sie das Dienstkonto:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos ersetzen. Der Name des Dienstkontos muss zwischen 6 und 30 Zeichen lang sein und darf alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

    2. Erteilen Sie die erforderlichen IAM-Rollen oder -Berechtigungen (Identity and Access Management). Weitere Informationen finden Sie unter Rollen und Berechtigungen für Workflows-Ziele.

Trigger erstellen

Sie können einen Eventarc-Trigger mit einem bereitgestellten Workflow als Ereignisempfänger erstellen. Verwenden Sie dazu die Google Cloud CLI (gcloud oder Terraform) oder die Google Cloud Console.

Console

  1. Rufen Sie in der Google Cloud Console die Seite mit den Eventarc-Triggern auf.

    Zur Seite "Trigger"

  2. Klicken Sie auf Trigger erstellen.
  3. Geben Sie einen Triggernamen ein.

    Dies ist die ID des Triggers. Sie muss mit einem Buchstaben beginnen. Sie kann bis zu 63 Kleinbuchstaben, Ziffern oder Bindestriche enthalten.

  4. Wählen Sie als Triggertyp die Option Google-Quellen aus.
  5. Wählen Sie in der Liste Ereignisanbieter die Option Certificate Manager aus.

    Beachten Sie, dass der Name des Ereignisanbieters, der in der zugehörigen Google Cloud-Dokumentation verwendet wird, möglicherweise nicht das Präfix Cloud oder Google Cloud hat. In der Console wird Memorystore for Redis beispielsweise als Google Cloud Memorystore for Redis bezeichnet.

  6. Wählen Sie in der Liste Ereignistyp aus den Ereignissen Direkt einen Ereignistyp aus.
  7. Wählen Sie zur Angabe der Codierung der Ereignisnutzlast in der Liste Inhaltstyp des Ereignisdaten die Option application/json oder application/protobuf aus.

    Beachten Sie, dass eine im JSON-Format formatierte Ereignisnutzlast größer als eine in Protobuf formatierte ist. Dies kann sich auf die Zuverlässigkeit auswirken, je nach Ereignisziel und Limits der Ereignisgröße. Weitere Informationen finden Sie unter Bekannte Probleme.

  8. Wählen Sie in der Liste Region die Option Global aus.

    Weitere Informationen finden Sie unter Eventarc-Standorte.

  9. Klicken Sie, sofern für den Ereignisanbieter zutreffend, auf Filter hinzufügen und geben Sie Folgendes an:
    1. Wählen Sie im Feld Attribut 1 je nach ausgewähltem direktem Ereignis eine Ressourcen-ID aus, die als Ereignisfilter dienen kann.
    2. Wählen Sie einen Operator aus:
    3. Geben Sie im Feld Attributwert 1 je nach ausgewähltem Operator den genauen Wert ein oder wenden Sie ein Pfadmuster an.
    4. Wenn weitere Attributfilter anwendbar sind, klicken Sie auf Filter hinzufügen und geben Sie die entsprechenden Werte an.
  10. Wählen Sie das Dienstkonto aus, das Ihren Dienst oder Workflow aufruft.

    Alternativ können Sie ein neues Dienstkonto erstellen.

    Dies gibt die E-Mail-Adresse des IAM-Dienstkontos (Identity and Access Management) an, die dem Trigger zugeordnet ist und für die Sie zuvor bestimmte Rollen zugewiesen haben, die für Eventarc erforderlich sind.

  11. Wählen Sie in der Liste Ereignisziel die Option Workflows aus.
  12. Wählen Sie einen Workflow aus.

    Dies ist der Name des Workflows, an den Ereignisse übergeben werden. Ereignisse für eine Workflowausführung werden transformiert und als Laufzeitargumente an den Workflow übergeben.

    Weitere Informationen finden Sie unter Trigger für Workflows erstellen.

  13. Klicken Sie auf Erstellen.
  14. Nachdem ein Trigger erstellt wurde, können die Ereignisquellenfilter nicht mehr geändert werden. Erstellen Sie stattdessen einen neuen Trigger und löschen Sie den alten. Weitere Informationen finden Sie unter Trigger verwalten.

  1. Klicken Sie auf Erstellen.

gcloud

Wenn Sie einen gcloud eventarc triggers create-Befehl zusammen mit den erforderlichen und optionalen Flags ausführen, können Sie einen Trigger erstellen.

gcloud eventarc triggers create TRIGGER \
  --location=global \
  --destination-workflow=DESTINATION_WORKFLOW  \
  --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
  --event-filters="type=EVENT_FILTER_TYPE" \
  --event-filters="COLLECTION_ID=RESOURCE_ID" \
  --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
  --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
  --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Replace the following:

  • TRIGGER: the ID of the trigger or a fully qualified identifier.
  • DESTINATION_WORKFLOW: the ID of the deployed workflow that receives the events from the trigger. The workflow can be in any of the Workflows supported locations and does not need to be in the same location as the trigger. However, the workflow must be in the same project as the trigger.
  • DESTINATION_WORKFLOW_LOCATION (optional): the location in which the destination workflow is deployed. If not specified, it is assumed that the workflow is in the same location as the trigger.
  • EVENT_FILTER_TYPE: the identifier of the event. An event is generated when an API call for the method succeeds. For long-running operations, the event is only generated at the end of the operation, and only if the action is performed successfully. For a list of supported event types, see Event types supported by Eventarc.
  • COLLECTION_ID (optional): the resource component that can act as an event filter, and is one of the following:
    • certificate
    • certificateissuanceconfig
    • certificatemap
    • certificatemapentry
    • dnsauthorization
  • RESOURCE_ID: the identifier of the resource used as the filtering value for the associated collection. For more information, see Resource ID.
  • PATH_PATTERN: the path pattern to apply when filtering for the resource
  • EVENT_DATA_CONTENT_TYPE: (optional) the encoding of the event payload. This can be application/json or application/protobuf. The default encoding is application/json.

    Note that an event payload formatted in JSON is larger than one formatted in Protobuf. This might impact reliability depending on your event destination and its limits on event size. For more information, see Known issues.

  • SERVICE_ACCOUNT_NAME: the name of the IAM service account you created to which you granted specific roles required by Workflows.
  • PROJECT_ID: your Google Cloud project ID

Notes:

  • The --location flag must be global. For more information, see Eventarc locations.
  • The --event-filters="type=EVENT_FILTER_TYPE" flag is required. If no other event filter is set, events for all resources are matched.
  • EVENT_FILTER_TYPE cannot be changed after creation. To change EVENT_FILTER_TYPE, create a new trigger and delete the old one.
  • Each trigger can have multiple event filters, comma delimited in one --event-filters=[ATTRIBUTE=VALUE,...] flag, or you can repeat the flag to add more filters. Only events that match all the filters are sent to the destination. Wildcards and regular expressions are not supported; however, when using the --event-filters-path-pattern flag, you can define a resource path pattern.
  • The --service-account flag is used to specify the Identity and Access Management (IAM) service account email associated with the trigger.

Example:

gcloud eventarc triggers create helloworld-trigger \
  --location=global \
  --destination-workflow=my-workflow \
  --destination-workflow-location=us-central1 \
  --event-filters="type=google.cloud.certificatemanager.certificate.v1.updated" \
  --event-filters-path-pattern="certificate=my-certificate-*" \
  --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

Dieser Befehl erstellt einen Trigger mit dem Namen helloworld-trigger für das als google.cloud.certificatemanager.certificate.v1.updated identifizierte Ereignis und gleicht Ereignisse für certificate-IDs ab, die mit my-certificate- beginnen.