GSP773

概要
このラボでは、Eventarc for Cloud Run を利用して、プロデューサーとコンシューマー間の通信を管理する方法を学びます。プロデューサー(つまりイベントのソース)は元のデータを提供します。生成されたデータは、渡された情報を使用するコンシューマー(つまり、イベントシンク)に送信されます。下の図は、Google Cloud でのこのアプローチの概要を示しています。

プロデューサーとコンシューマー間の統合配信メカニズムは、Eventarc for Cloud Run です。上記の例では、Cloud Pub/Sub が生成されたプロジェクト イベントのイベント配信を容易にしています。
このラボの終了時には、さまざまなソースから Google Cloud シンクとカスタムシンクにイベントを配信できるようになります。
演習内容
- Eventarc for Cloud Run
- Cloud Run シンクを作成する
- Cloud Pub/Sub のイベント トリガーを作成する
- 監査ログのイベント トリガーを作成する
前提条件
このコンテンツでは、以下についてある程度理解していることが推奨されます。
- Cloud Run
- Cloud Pub/Sub
- ロギング
このラボは、シークレット モードのブラウザ ウィンドウで実行することをおすすめします。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. 環境を設定する
- プロジェクトを設定します。
gcloud config set project {{{project_0.project_id | "PROJECT_ID"}}}
- Cloud Run リージョンをサポートされているリージョンに設定します。
gcloud config set run/region {{{project_0.default_region | "REGION"}}}
- Cloud Run プラットフォームのデフォルトを
managed に設定します。
gcloud config set run/platform managed
- Eventarc for Cloud Run のデフォルトのロケーションを設定します。
gcloud config set eventarc/location {{{project_0.default_region | "REGION"}}}
タスク 2. サービス アカウントを有効化する
次に、監査ログトリガーに必要なサービス アカウントをいくつか構成します。
- プロジェクト番号を環境変数に保存します。
export PROJECT_NUMBER="$(gcloud projects list \
--filter=$(gcloud config get-value project) \
--format='value(PROJECT_NUMBER)')"
- デフォルトの Compute Engine サービス アカウントに
eventarc.admin ロールを付与します。
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
--role='roles/eventarc.admin'
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
サービス アカウントを有効にします。
タスク 3. イベントを検出する
登録済みのソースとイベントの種類はコマンドラインを使用して検出できます。
- さまざまな種類のイベントのリストを表示するには、次のコマンドを実行します。
gcloud eventarc providers list
出力:
NAME: datamigration.googleapis.com
LOCATION: us-central1
NAME: apigeeregistry.googleapis.com
LOCATION: us-central1
NAME: networkconnectivity.googleapis.com
LOCATION: us-central1
NAME: dataplex.googleapis.com
LOCATION: us-central1
NAME: datafusion.googleapis.com
LOCATION: us-central1
NAME: pubsub.googleapis.com
LOCATION: us-central1
- 各イベントの詳細を確認するには、次のコマンドを実行します。
gcloud eventarc providers describe \
pubsub.googleapis.com
出力:
displayName: Cloud Pub/Sub
eventTypes:
- description: A message is published to the specified Pub/Sub topic.
filteringAttributes:
- attribute: type
required: true
type: google.cloud.pubsub.topic.v1.messagePublished
name: projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com
タスク 4. Cloud Run シンクを作成する
- サービスの環境変数を設定します。
export SERVICE_NAME=event-display
- イメージの環境変数を設定します。
export IMAGE_NAME="gcr.io/cloudrun/hello"
- コンテナ化したアプリケーションを Cloud Run にデプロイします。
gcloud run deploy ${SERVICE_NAME} \
--image ${IMAGE_NAME} \
--allow-unauthenticated \
--max-instances=3
デプロイに成功すると、コマンドラインにサービス URL が表示されます。この時点でサービスは稼働しています。
ブラウザ ウィンドウでこのサービス URL を開くと、デプロイしたコンテナにアクセスできます。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Cloud Run シンクを作成する
タスク 5. Cloud Pub/Sub イベント トリガーを作成する
イベントを受信する方法の一つは、Cloud Pub/Sub を使用することです。カスタム アプリケーションは Cloud Pub/Sub にメッセージをパブリッシュでき、これらのメッセージは Eventarc for Cloud Run を介して Google Cloud Run シンクに配信できます。
トリガーを作成する
- まず、Cloud Pub/Sub からのイベント用のトリガーを構築するために必要なパラメータの詳細を確認します。
gcloud eventarc providers describe \
pubsub.googleapis.com
- Cloud Pub/Sub トピックにパブリッシュされるイベントを、デプロイした Cloud Run サービスにフィルタリングするトリガーを作成します。
gcloud eventarc triggers create trigger-pubsub \
--destination-run-service=${SERVICE_NAME} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
トピックを見つける
- Pub/Sub トリガーは内部で Pub/Sub トピックを作成します。トピックを見つけたら、環境変数に割り当てます。
- トピック ID をエクスポートします。
export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \
--format='value(transport.pubsub.topic)')
- トピック ID が利用可能であることを確認します。
echo ${TOPIC_ID}
出力:
projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com
トリガーをテストする
- すべてのトリガーを一覧表示して、トリガーが作成されたことを確認できます。
gcloud eventarc triggers list
出力:
NAME: trigger-pubsub
TYPE: google.cloud.pubsub.topic.v1.messagePublished
DESTINATION: Cloud Run service: event-display
ACTIVE: Yes
LOCATION: {{{project_0.default_region | "REGION"}}}
注: トリガーの作成が反映され、イベントのフィルタリングが開始されるまでに最大 5 分かかる場合があります。
- メッセージを送信するカスタム アプリケーションをシミュレートするには、
gcloud コマンドを使用してイベントを発生させます。
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
-
ナビゲーション メニュー > [サーバーレス] > [Cloud Run] に移動し、[event-display] をクリックします。
-
[ログ] をクリックします。
作成した Cloud Run シンクは着信したメッセージの本文をログに記録します。これは、Cloud Run インスタンスの [ログ] セクションで確認できます。
![event-display のログのリストが表示された [ログ] タブのページ](https://cdn.qwiklabs.com/P6rfeY1E6nlGzeHbpy4Y%2FBkzA5gzPgG312%2BeSZNPEDY%3D)
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Cloud Pub/Sub イベント トリガーを作成する
トリガーを削除する
-
テストが完了したら、トリガーを削除できます。
gcloud eventarc triggers delete trigger-pubsub
タスク 6. 監査ログのイベント トリガーを作成する
次に、監査ログからのイベントをリッスンするトリガーを設定します。監査ログの Cloud Storage イベントをリッスンします。
バケットを作成する
- バケットの環境変数を作成します。
export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket
- デプロイされた Cloud Run サービスと同じリージョンに Cloud Storage バケットを作成します。
gsutil mb -p $(gcloud config get-value project) \
-l $(gcloud config get-value run/region) \
gs://${BUCKET_NAME}/
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
バケットを作成する
監査ログを有効にする
サービスからイベントを受信するには、監査ログを有効にする必要があります。
-
ナビゲーション メニューから、[IAM と管理] > [監査ログ] を選択します。
-
サービスのリストで、[Google Cloud Storage] のチェックボックスをオンにします。
-
右側にある [ログタイプ] タブをクリックします。[管理書き込み] はデフォルトで選択されています。[管理読み取り]、[データ読み取り]、[データ書き込み] も選択し、[保存] をクリックします。
監査ログをテストする
実際のトリガーを設定するために必要なパラメータを特定し、実際の操作を行う方法を学びます。
- 次のコマンドを実行して、
random.txt という名前のテキスト ファイルを作成します。
echo "Hello World" > random.txt
- ファイル
random.txt をバケットにアップロードします。
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
次に、この更新によって生成された監査ログの種類を確認します。
-
Cloud コンソールでナビゲーション メニュー > [ロギング] > [ログ エクスプローラ] に移動します。
-
[リソース] で、[GCS バケット] > バケット名 > [ロケーション] を選択し、バケットとそのロケーションを選択します。[適用] をクリックします。
![[ログ エクスプローラ] ページ](https://cdn.qwiklabs.com/2fBQj6PQMMSQu2PBU4Fj%2FGUso911YjWHaav2sGkuF4s%3D)
注: 監査ログがログビューア UI に表示されるまでに、多少のレイテンシがあります。リソースのリストに [GCS バケット] が表示されない場合は、少し待ってからもう一度お試しください。
- [クエリを実行] をクリックします。
クエリを実行すると、ストレージ バケットのログが表示されます。そのうちの一つは storage.buckets.create です。
-
serviceName、methodName、resourceName をメモしておきます。これらはトリガーを作成する際に使用します。
トリガーを作成する
これで監査ログのイベント トリガーを作成する準備が整いました。
- トリガーを構築するために必要なパラメータの詳細を確認します。
gcloud eventarc providers describe cloudaudit.googleapis.com
- 適切なフィルタを使用してトリガーを作成します。
gcloud eventarc triggers create trigger-auditlog \
--destination-run-service=${SERVICE_NAME} \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=storage.googleapis.com" \
--event-filters="methodName=storage.objects.create" \
--service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
注: resourceName パラメータ
- 省略可能な resourceName フィールドがあります。完全なリソースパス(例: projects/_/buckets/test123)を指定すると、特定のリソースに関連するイベントがフィルタリングされます。リソースパスを指定しないと、指定した serviceName と methodName に対応する任意のリソースのイベントがフィルタリングされます。部分的なリソース名(例: projects/project-id)は受け入れられず、誤動作につながります。
- 「create」系の methodsName(Cloud Storage バケットを作成する storage.buckets.create など)の場合、resourceName は serviceName によって動的に生成され、事前に予測できない可能性があるため、resourceName は空白のままにしておくことをおすすめします。
- 「read」、「update」、「delete」系の methodName(特定の Cloud Storage バケットを更新する storage.buckets.update など)の場合は、完全なリソースパスを指定できます。
トリガーをテストする
- すべてのトリガーを一覧表示して、トリガーが正常に作成されたことを確認します。
gcloud eventarc triggers list
出力:
NAME: trigger-auditlog
TYPE: google.cloud.audit.log.v1.written
DESTINATION: Cloud Run service: event-display
ACTIVE: Yes
LOCATION: {{{project_0.default_region | "REGION"}}}
- トリガーの作成が反映され、イベントのフィルタリングが開始されるまで最大 10 分待ちます。
完了すると、作成イベントがフィルタリングされ、サービスに送信されます。これで、イベントを発生させる準備ができました。
- 先ほど行ったように、同じファイルを Cloud Storage バケットにアップロードします。
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
-
ナビゲーション メニュー > [Cloud Run] に移動して Cloud Run サービスのログを確認すると、受信したイベントが表示されます。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
監査ログイベント トリガーを作成する
トリガーを削除する
gcloud eventarc triggers delete trigger-auditlog
お疲れさまでした
Google Cloud インフラストラクチャの Eventarc for Cloud Run について確認しました。このラボのコースでは、次のタスクを行いました。
- Eventarc for Cloud Run
- Cloud Run シンクを作成する
- Cloud Pub/Sub のイベント トリガーを作成する
- 監査ログのイベント トリガーを作成する
詳細 / 次のステップ
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 5 月 2 日
ラボの最終テスト日: 2024 年 5 月 2 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。