バスと登録を作成してイベントをパブリッシュし、受信する(コンソール)
このクイックスタートでは、 Google Cloudプロジェクトで Eventarc Advanced バスを作成して登録し、イベント メッセージをパブリッシュして受信する方法について説明します。
バスは、イベントソースからメッセージを受信したり、プロバイダによって公開されたメッセージを受信したりする中央ルーターとして機能します。
登録は、バスで受信したメッセージを処理パイプラインを介して 1 つ以上の宛先に転送します。
このクイックスタートでは、以下の操作を行います。
Artifact Registry 標準リポジトリを作成します。
イベント レシーバ サービスを Cloud Run にデプロイする。
Eventarc Advanced バスを作成します。
Eventarc Advanced 登録を作成します。
イベント メッセージをバスにパブリッシュします。
Cloud Run のログでイベントデータを確認します。
このクイックスタートのほとんどの手順は、 Google Cloud コンソールを使用して完了できます。Google Cloud CLI を使用してすべての手順を完了するには、バスと登録を作成してイベントをパブリッシュして受信する(gcloud CLI)をご覧ください。
始める前に
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
- 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.
-
In the Google Cloud console, on the project selector page, select or create 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc 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. -
In the Google Cloud console, on the project selector page, select or create 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc 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 CLI を使用する必要があります。
- 次のいずれかの開発環境で gcloud CLI を設定します。
Cloud Shell
gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。
このページの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。
ローカルシェル
ローカル開発環境を使用する手順は次のとおりです。
- Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、実際の Google Cloud プロジェクト名に置き換えます。 gcloudコンポーネントを更新します。gcloud components update
- アカウントを使用してログインします。
gcloud auth login
- このクイックスタートで使用する構成変数を設定します。
REGION=us-central1
- 次のいずれかの開発環境で gcloud CLI を設定します。
-
プロジェクト作成者には、基本オーナーロール(
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)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
-
Cloud Build 編集者(
- テスト用にサービス アカウントを作成し、このクイックスタートを完了するために必要なロールを付与します。サービス アカウントを使用してコンテナ イメージをビルドしてデプロイし、Eventarc Advanced パイプラインに関連付けて、パイプラインの ID を表します。
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
- [ サービス アカウントを作成] をクリックします。
- サービス アカウント名を入力します。
- [作成して続行] をクリックします。
- [ロールを選択] リストで、次のロールをフィルタして選択します。
- Artifact Registry 書き込み: Artifact Registry アーティファクトをアップロードする
- ログ書き込み: Cloud Logging にログを書き込む
- ストレージ管理者: Cloud Storage オブジェクトにアクセスします
- Cloud Run 起動元: Cloud Run を呼び出す
- [完了] をクリックします。
Cloud Run サービスにアクセスできるユーザーは、次のいずれかの方法で構成できます。
- サービス アカウントまたはグループを選択して、サービスへのアクセスを許可する権限を付与します。すべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OpenID Connect トークンを含む HTTP 認証ヘッダーが必要です。このクイックスタートでは、この方法でアクセスを構成します。
- 未認証のアクセスを許可する
allUsersに権限を付与します。
詳細については、Cloud Run のアクセス制御をご覧ください。
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
Google Cloud コンソールで、[リポジトリ] ページに移動します。
[リポジトリを作成] をクリックします。
[名前] に入力します(例:
my-repo)。プロジェクト内のリポジトリのロケーションごとに、リポジトリ名は一意でなければなりません。
リポジトリの [形式] で [Docker] を選択します。
[リージョン] リストで [us-central1 (Iowa)] を選択します。
その他はすべてデフォルトのままにします。
[作成] をクリックします。
ターミナルで、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
次のように置き換えます。
REPOSITORY: Artifact Registry リポジトリの名前。SERVICE_ACCOUNT_NAME: 前に作成したサービス アカウントの名前。
コンテナ イメージを Cloud Run にデプロイします。
Google Cloud コンソールで、[Cloud Run] ページに移動します。
[コンテナをデプロイ] > [サービス] をクリックします。
[既存のコンテナ イメージから 1 つのリビジョンをデプロイする] を選択します。
[コンテナ イメージの URL] で、[選択] をクリックして、以前に作成した Artifact Registry コンテナ イメージを指定します。
必要に応じて、サービス名(
my-serviceなど)を変更できます。[リージョン] リストで [us-central1 (Iowa)] を選択します。
[認証] で、[認証が必要] を選択します。
これにより、認証された呼び出しのみを許可するようにサービスが構成されます。
[上り(内向き)] で [すべて] を選択します。
これにより、インターネットから
run.appURL に直接送信されるリクエストを含むすべてのリクエストが許可されます。詳細については、Cloud Run のネットワーク上り(内向き)を制限するをご覧ください。その他はすべてデフォルトのままにします。
[作成] をクリックし、デプロイが完了するまで待ちます。
Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。
[ バスを作成] をクリックします。
[バスの作成] ページで、次の操作を行います。
- バス名を入力します(例:
my-bus)。 - [リージョン] リストで [us-central1 (Iowa)] を選択します。
- バス名を入力します(例:
その他はすべてデフォルトのままにします。
[作成] をクリックします。
登録を作成するには、 Google Cloud コンソールで、[Eventarc] > [パイプライン] ページに移動します。
[パイプラインを作成] をクリックします。
[パイプラインの詳細] ペインで、次の操作を行います。
- パイプライン名を入力します(例:
my-pipeline)。 - [リージョン] リストで、[us-central1(アイオワ)] を選択します。パイプラインは、バスと同じリージョンに作成する必要があります。
- その他はすべてデフォルトのままにします。
- [続行] をクリックします。
- パイプライン名を入力します(例:
[登録] ペインで、次の操作を行います。
- [登録を追加] をクリックします。
- [登録名] に入力します(例:
my-enrollment)。 - [Eventarc Advanced Bus] リストで、前に作成したバスを選択します。
[CEL 式] フィールドに、CEL を使用して評価式を記述します。次に例を示します。
message.type == "hello-world-type"[完了] をクリックします。
[続行] をクリックします。
[イベント メディエーション] ペインで、[続行] を再度クリックします。
[送信先] ペインで、次の操作を行います。
[宛先タイプ] リストで、[Cloud Run サービス(HTTP 経由)] を選択し、前に作成した Cloud Run サービスを選択します。
[認証を有効にする] チェックボックスをオンにします。
[Auth ヘッダー] リストで、[OIDC トークン] を選択します。
[サービス アカウント] リストで、以前に作成した宛先サービスを呼び出すサービス アカウントを選択します。このサービス アカウントのメールアドレスは、OIDC トークンの生成に使用されます。
[作成] をクリックします。
Google Cloud コンソールで、[Cloud Run] ページに移動します。
[サービス] ページで、サービスの名前をクリックします。
[Logs] タブをクリックします。
ログエントリをフィルタして、出力を返すことができます。たとえば、
hello-world-dataを検索できます。次のようなログエントリを探します。
2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'Eventarc Advanced リソースを削除します。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Artifact Registry 標準リポジトリを作成する
コンテナ イメージを保存する Artifact Registry 標準リポジトリを作成します。
イベント レシーバ サービスを Cloud Run にデプロイする
イベントの内容をログに記録する Cloud Run サービスをデプロイします。Pub/Sub トピック、Workflows、HTTP エンドポイントなど、他のイベント宛先もサポートされています。詳細については、イベント プロバイダと宛先をご覧ください。
Eventarc Advanced バスを作成する
バスは、メッセージ ソースからイベント メッセージを受信するか、プロバイダによって公開されたイベント メッセージを受信し、メッセージ ルーターとして機能します。
詳細については、メッセージを転送するバスを作成するをご覧ください。
Eventarc Advanced の登録を作成する
登録により、宛先にルーティングされるメッセージが決定され、イベント メッセージの宛先を構成するために使用されるパイプラインも指定されます。
詳細については、イベントを受信する登録を作成するをご覧ください。
Google Cloud コンソールを使用すると、登録とパイプラインを同時に作成できます。
イベント メッセージをバスにパブリッシュする
バスにメッセージを直接パブリッシュするには、gcloud eventarc message-buses publish コマンドを使用するか、Eventarc Publishing REST API にリクエストを送信します。詳細については、イベントを直接公開するをご覧ください。
メッセージは、イベントデータを一般的な方法で記述するための仕様である CloudEvents 形式である必要があります。data 要素は、イベントのペイロードです。このフィールドには、整形式の JSON を指定できます。CloudEvents コンテキスト属性の詳細については、イベント形式をご覧ください。
gcloud CLI と --event-data などのイベント属性フラグを使用して、Eventarc Advanced バスにイベントを公開します。
gcloud eventarc message-buses publish BUS_NAME \
--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" \
--location=$REGION
または、gcloud CLI と --json-message フラグを使用して、Eventarc Advanced バスに JSON メッセージとしてイベントをパブリッシュします。
gcloud eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"key": "hello-world-data"}}'
イベントを公開すると、「イベントが正常に公開されました」というメッセージが表示されます。
Cloud Run のログでイベントデータを表示する
Eventarc Advanced バスにイベントをパブリッシュした後、Cloud Run サービスのログを調べて、イベントが想定どおりに受信されたことを確認できます。
Eventarc Advanced バスと登録が正常に作成され、イベント メッセージがバスにパブリッシュされ、イベント レシーバ サービスのログで期待される結果が確認されました。
クリーンアップ
このクイックスタートに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。
また、 Google Cloud プロジェクトを削除して、料金が発生しないようにすることもできます。 Google Cloud プロジェクトを削除すると、そのプロジェクト内で使用されているすべてのリソースに対する課金が停止します。