Google ソースからイベントを公開する
Google ソースからのイベントの収集と公開を有効にできます。詳細については、 Google ソースからイベントを公開するをご覧ください。
このクイックスタートでは、プロジェクトに Eventarc Advanced バスと登録を作成して、イベント メッセージを公開および受信する方法について説明します。 Google Cloud
バスは中央ルーターとして機能し、イベントソースからメッセージを受信したり、プロバイダによって公開されたメッセージを受信したりします。
登録は、バスが受信したメッセージを 1 つ以上の 宛先に処理パイプラインを介してルーティングします。
このクイックスタートでは、以下の操作を行います。
イベント レシーバ サービスを Cloud Run にデプロイする。
Eventarc Advanced バスを作成する。
Google ソースからのイベントを有効にする。
Eventarc Advanced 登録を作成する。
ワークフローを作成して、イベント メッセージをバスに公開する。
Cloud Run のログでイベントデータを確認する。
このクイックスタートでは gcloud CLI を使用します。
始める前に
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、 制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 Google Cloud、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の 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 プロジェクトの名前に置き換えます。
Artifact Registry、Cloud Build、Cloud Run、Eventarc、Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを Google Cloud 作成または選択します。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の 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 プロジェクトの名前に置き換えます。
Artifact Registry、Cloud Build、Cloud Run、Eventarc、Workflows API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com gcloudコンポーネントを更新します。gcloud components update
- アカウントを使用してログインします。
gcloud auth login
- このクイックスタートで使用する構成変数を設定します。
REGION=REGION
REGIONは、バスで サポートされているロケーション(us-central1など)に置き換えます。 -
プロジェクト作成者には、 基本オーナーロール (
roles/owner)が付与されます。デフォルトでは、この Identity and Access Management(IAM)ロールには、ほとんどの Google Cloud リソースへのフルアクセスに必要な権限が含まれており、この手順は省略できます。プロジェクト作成者でない場合は、プロジェクトで適切なプリンシパルに必要な権限を付与する必要があります。 プリンシパルは Google アカウント(エンドユーザーの場合)やサービス アカウント(アプリケーションとコンピューティング ワークロードの場合)になることもあります。
デフォルトでは、 Cloud Build の権限には、Artifact Registry アーティファクトをアップロードおよびダウンロードするための権限が含まれています。
必要な権限
このクイックスタートを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Build 編集者 (
roles/cloudbuild.builds.editor) - Cloud Run 管理者 (
roles/run.admin) - Eventarc デベロッパー (
roles/eventarc.developer) - Eventarc メッセージ バス管理者 (
roles/eventarc.messageBusAdmin) - ログ表示アクセス者 (
roles/logging.viewAccessor) - プロジェクト IAM 管理者 (
roles/resourcemanager.projectIamAdmin) - サービス アカウント管理者 (
roles/iam.serviceAccountAdmin) - サービス アカウント ユーザー (
roles/iam.serviceAccountUser) - Service Usage 管理者 (
roles/serviceusage.serviceUsageAdmin) - ワークフロー編集者 (
roles/workflows.editor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
- Cloud Build 編集者 (
- テスト用にサービス アカウントを作成し、このクイックスタートを完了するために必要なロールを付与します。
- サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAMEをサービス アカウントの名前に置き換えます。 - コンテナ イメージのビルドとデプロイに必要なロールと、Eventarc Advanced パイプラインの ID を表すロールを付与します。
- Artifact Registry 書き込み: Artifact Registry アーティファクトをアップロードします
- ログ 書き込み: Cloud Logging にログを書き込みます
- ストレージ 管理者: Cloud Storage オブジェクトにアクセスします
- Cloud Run 起動元: Cloud Run を呼び出します
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/storage.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
Cloud Run サービスにアクセスできるユーザーは、次のいずれかの方法で構成できます。
- サービス アカウントまたはグループを選択して、サービスへのアクセス を許可する権限を付与します。すべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OpenID Connect トークンを含む HTTP 認証ヘッダーが必要です。このクイックスタートでは、この方法でアクセスを構成します。
-
allUsersに権限を付与して、 未認証のアクセスを許可します。
詳細については、 Cloud Run のアクセス制御をご覧ください。
- サービス アカウントを作成します。
イベント レシーバ サービスを Cloud Run にデプロイする
イベントの内容をログに記録するイベントの宛先としてCloud Run サービス をデプロイします。Pub/Sub トピック、Workflows、HTTP エンドポイントなど、他のイベントの宛先もサポートされています。詳細については、 イベント プロバイダと宛先をご覧ください。
コンテナ イメージを保存する Artifact Registry 標準リポジトリ を作成する。
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
REPOSITORYは、Artifact Registry リポジトリの一意の名前(my-repoなど)に置き換えます。GitHub リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Cloud Run のサンプルコードが含まれているディレクトリに移動します。
cd eventarc-samples/eventarc-advanced-quickstart/
Docker コンテナ イメージをビルドし、そのイメージをリポジトリに push します。
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --service-account=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --default-buckets-behavior=regional-user-owned-bucket
コンテナ イメージを Cloud Run にデプロイします。
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
SERVICE_NAMEは、サービスの名前に置き換えます(例:my-service)。次の点にご注意ください。
--platformフラグは、ターゲット プラットフォームを設定します。この場合は、Cloud Run のフルマネージド バージョンです。上り(内向き)の設定
allは、インターネットからrun.appの URL に直接送信されるリクエストを含むすべてのリクエストを許可します。詳細については、 Cloud Run のネットワーク上り(内向き)を制限するをご覧ください。--no-allow-unauthenticatedフラグは、認証された呼び出しのみを許可するようにサービスを構成します。Cloud Run サービスの URL が表示されたら、デプロイは完了しています。
Cloud Run サービスの URL をコピーして保存します。この URL は次の手順で使用します。
Eventarc Advanced バスを作成する
バスは、メッセージ ソースからイベント メッセージを受信するか、プロバイダによって公開されたイベント メッセージを受信し、メッセージ ルーターとして機能します。
詳細については、 メッセージをルーティングするバスを作成するをご覧ください。
Google Cloud
gcloud eventarc message-buses create
コマンドを使用して、プロジェクトに Eventarc Advanced バスを作成します。
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
BUS_NAME は、バスの ID または完全修飾名(my-bus など)に置き換えます。
Google ソースからのイベントを有効にする
Google ソースからイベントを公開するには、
GoogleApiSource
リソースを作成する必要があります。このリソースは、特定のプロジェクトとリージョンの特定の Eventarc Advanced バスに対する Google API イベントのサブスクリプションを表します。 Google Cloud
gcloud eventarc google-api-sources create
コマンドを使用して、Google ソースからのイベントを有効にします。
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
GOOGLE_API_SOURCE_NAME は、GoogleApiSource リソースの ID または完全修飾名(my-google-api-source など)に置き換えます。
Google ソースから直接送信されるサポートされているすべての Google イベントタイプが収集され、バスに公開されるようになりました。
Eventarc Advanced 登録を作成する
登録は、宛先にルーティングされるメッセージを決定します。また、イベント メッセージの宛先を構成するために使用されるパイプラインも指定します。
詳細については、 イベントを受信する登録を作成するをご覧ください。
gcloud CLI を使用する場合は、まずパイプラインを作成してから登録を作成します。
gcloud eventarc pipelines createコマンドを使用してパイプラインを作成します。gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
次のように置き換えます。
PIPELINE_NAME: パイプラインの ID または完全修飾された名前(my-pipelineなど)。CLOUD_RUN_SERVICE_URLCloud Run サービスの完全修飾 URL(https://SERVICE_NAME-abcdef-uc.a.run.appなど)。これは、イベント メッセージの宛先です。
google_oidc_authentication_service_accountキーは、OIDC トークンの生成に使用される サービス アカウントのメールアドレスを指定します。gcloud eventarc enrollments createコマンドを使用して登録を作成します。gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
次のように置き換えます。
ENROLLMENT_NAME: 登録の ID または完全修飾された名前(my-enrollmentなど)。MATCH_EXPRESSION: この登録の一致式(CEL を使用)。たとえば、Workflows ワークフローが作成されるたびにイベント メッセージを公開するには、次の式を使用します。"message.type == 'google.cloud.workflows.workflow.v1.created'"
ワークフローを作成して、イベント メッセージをバスに公開する
Workflows は、フルマネージドの オーケストレーション プラットフォームで、定義した順序(ワークフロー)でサービスを実行します。ワークフローを作成して、Google ソースから サポートされているイベントタイプを生成します。
ホーム ディレクトリで、
myWorkflow.yamlという名前の新しいファイルを作成します。次のワークフローをコピーして新しいファイルに貼り付け、保存します。
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}このワークフローは、現在の曜日を検索キーワードとして Wikipedia APIに渡します。関連する Wikipedia 記事のリストが返されます。
ワークフローをデプロイし、指定されたサービス アカウントに
gcloud workflows deployコマンドを使用して関連付けます。gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Cloud Run のログでイベントデータを確認する
Eventarc Advanced バスにイベントを公開したら、Cloud Run サービスのログを確認して、イベントが想定どおりに受信されたことを確認できます。
gcloud logging readコマンドを使用して、ログエントリをフィルタして出力を返します。gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
次のようなログエントリを探します。
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
Eventarc Advanced バスと登録を作成し、Google ソースからのイベントの公開を有効にしました。また、Google プロバイダからサポートされているイベントタイプを生成するワークフローを作成し、イベント レシーバ サービスのログで想定される結果を確認しました。
クリーンアップ
このクイックスタートに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。
Eventarc Advanced リソースを削除します。
または、プロジェクトを削除して料金が発生しないようにすることもできます。 Google Cloud プロジェクトを削除すると、そのプロジェクト内で使用されているすべての リソースの課金が停止します。 Google Cloud
プロジェクトを削除します。 Google Cloud
gcloud projects delete PROJECT_ID