このクイックスタートでは、Eventarc を使用して、未認証の Cloud Run(フルマネージド)サービスで Cloud Storage からイベントを受信する方法について説明します。
このクイックスタートを完了するには、Google Cloud Console または gcloud
コマンドライン ツールを使用します。
このクイックスタートでは、以下の操作を行います。
イベントソースとなる Cloud Storage バケットを作成する。
イベント レシーバ サービスを Cloud Run(フルマネージド)にデプロイする。
イベント トリガーを作成する。
Cloud Storage バケットにファイルをアップロードしてイベントを生成し、Cloud Run(フルマネージド)のログで確認する。
始める前に
- Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する。
- Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。
gcloud
ツールを使用する場合:gcloud
コンポーネントを更新します。gcloud components update
- 自分のアカウントでログインします。
gcloud auth login
- このクイックスタートで使用する構成変数を設定します。
gcloud config set project PROJECT_ID gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
- Google Cloud Storage で、Cloud 監査ログの管理読み取り、データ読み取り、データ書き込みの各ログタイプを有効にします。
- Pub/Sub サービス アカウントに
iam.serviceAccountTokenCreator
ロールを付与します。export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')" gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\ --role='roles/iam.serviceAccountTokenCreator'
- Compute Engine サービス アカウントに
eventarc.eventReceiver
ロールを付与します。gcloud projects add-iam-policy-binding $(gcloud config get-value project) \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role='roles/eventarc.eventReceiver'
- git ソースコード管理ツールをダウンロードしてインストールします。
Cloud Storage バケットを作成する
このクイックスタートでは、イベントソースとして Cloud Storage を使用します。ストレージ バケットを作成するには:
Console
Cloud Console で Cloud Storage に移動します。
[
バケットを作成] をクリックします。バケット情報を入力し、[続行] をクリックして各ステップを完了します。
- 一意の名前を入力します。例:
eventarcbucket
- [ロケーション タイプ] として [リージョン] を選択します。
- [ロケーション] として [us-central1 (Iowa)] を選択します。
- [デフォルトのストレージ クラス] として [標準] を選択します。
- [アクセス制御] に [均一] を選択します。
- 一意の名前を入力します。例:
[作成] をクリックします。
コマンドライン
gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/
イベントソースの作成後、Cloud Run(フルマネージド)にイベント レシーバ サービスをデプロイできます。
イベント レシーバ サービスを Cloud Run にデプロイする(フルマネージド)
イベントを受信してログに記録する Cloud Run(フルマネージド)サービスをデプロイします。サンプル イベント レシーバ サービスをデプロイするには:
Console
GitHub アカウントにサンプル リポジトリのクローンを作成します。
Go
GitHub で GoogleCloudPlatform/golang-samples に移動します。
[Fork] をクリックします。
プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。
Java
GitHub で GoogleCloudPlatform/java-docs-samples に移動します。
[Fork] をクリックします。
プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。
.NET
GitHub で GoogleCloudPlatform/dotnet-docs-samples に移動します。
[Fork] をクリックします。
プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。
Node.js
GitHub で GoogleCloudPlatform/nodejs-docs-samples に移動します。
[Fork] をクリックします。
プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。
Python
GitHub で GoogleCloudPlatform/python-docs-samples に移動します。
[Fork] をクリックします。
プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。
Cloud Console で Cloud Run に移動します。
[
サービスを作成] をクリックして、[サービスの作成] フォームを表示します。[Cloud Run (フルマネージド)] を選択します。
サービスを配置するリージョンとして [us-central1(Iowa)] を選択します。
任意のサービス名を入力します。例:
helloworld-events
[次へ] をクリックします。
[ソース リポジトリから新しいリビジョンを継続的にデプロイする] を選択します。
[Cloud Build の設定] をクリックし、[Cloud Build の設定] フォームを開きます。
[Cloud Build の設定] フォームで、次の操作を行います。
- プロンプトが表示されたら、[Cloud Build API] と [Container Analysis API] を有効にします。
[リポジトリ プロバイダ] として [GitHub] を選択します。
プロンプトが表示されたら、[Google Cloud Build のインストール] をクリックします。
[リポジトリ] として、フォークした GitHub リポジトリを選択します。
[次へ] をクリックします。
[ブランチ] フィールドに「
^master$
」と入力します。[ビルドタイプ] として、[Dockerfile] を選択し、Dockerfile のソースの場所として、
eventarc/audit-storage/Dockerfile
またはeventarc/audit_storage/Dockerfile
(Go)を指定します。[保存] をクリックします。
[サービスの作成] フォームで [次へ] をクリックします。
[このサービスをトリガーする方法の構成] セクションで、次の操作を行います。
[すべてのトラフィックを許可する] をオンにします。
[未認証の呼び出しを許可する] をオンにします。
必要に応じて、Eventarc トリガーを作成するをご覧ください。
[トリガーを追加] をクリックしてトリガーを作成するか、サービスを作成した後にトリガーを作成します。トリガーの作成方法の詳細については、[作成] をクリックします。
コマンドライン
リポジトリのクローンを作成します。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
コンテナをビルドして、Cloud Build にアップロードします。
gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
コンテナ イメージを Cloud Run(フルマネージド)にデプロイします。
gcloud run deploy helloworld-events \ --image gcr.io/$(gcloud config get-value project)/helloworld-events \ --allow-unauthenticated
デプロイに成功すると、コマンドラインにサービスの URL が表示されます。
helloworld-events
というイベント レシーバ サービスが Cloud Run(フルマネージド)にデプロイされました。これでトリガーを設定できます。
Eventarc トリガーを作成する
Eventarc トリガーは、Cloud Storage バケットから helloworld-events
Cloud Run(フルマネージド)サービスにイベントを送信します。
Console
Cloud Console で Cloud Run に移動します。
サービスの一覧から、作成したサービスをクリックして、[サービスの詳細] ページに移動します。
[トリガー] タブをクリックし、[
トリガーを追加] をクリックします。[イベントを選択] プルダウン リストで、[Cloud Storage] > [storage.objects.create] を選択します。
[イベントの受信元] フィールドで [単一リージョン] を選択します。
storage.googleapis.com
サービスの Cloud Audit Logs を有効にします。プロンプトが表示されたら、
eventarc.eventReceiver
ロールを Compute Engine サービス アカウントに、iam.serviceAccountTokenCreator
ロールを Pub/Sub サービス アカウントに付与します。[保存] をクリックします。
コマンドライン
Cloud Storage イベントをフィルタし、Google Cloud プロジェクトの Compute Engine のデフォルト サービス アカウントを使用するトリガーを作成します。
gcloud eventarc triggers create events-quickstart-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --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
これにより、
events-quickstart-trigger
というトリガーが作成されます。events-quickstart-trigger
が正常に作成されたことを確認するには、次のコマンドを実行します。gcloud eventarc triggers list --location=us-central1
events-quickstart-trigger
がhelloworld-events
のターゲットとともに表示されます。
イベントの生成と表示
イベントを生成するには:
Console
「
random.txt
」というファイル名のテキスト ファイルと「Hello World」というテキストを作成します。Cloud Console で Cloud Storage に移動します。
作成したストレージ バケットを選択します。
[オブジェクト] タブで、[ファイルをアップロード] をクリックして
random.txt
ファイルをアップロードします。
コマンドライン
Cloud Storage にファイルをアップロードします。
echo "Hello World" > random.txt gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt
アップロードによりイベントが生成され、Cloud Run(フルマネージド)サービスによってメッセージが記録されます。
ログエントリを表示するには:
Console
Cloud Console で Cloud Run に移動します。
サービスの一覧から、作成したサービスの名前をクリックして、[サービスの詳細] ページに移動します。
このサービスのすべてのリビジョンのリクエストログとコンテナログを取得するには、[ログ] タブをクリックします。ログの重大度でフィルタリングできます。
次のようなログエントリを探します。
コマンドライン
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
次のようなログエントリを探します。
Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
ここで、
BUCKET_NAME
は Cloud Storage バケットの名前です。
これで、Cloud Run(フルマネージド)へのイベント レシーバ サービスのデプロイ、Eventarc トリガーの作成、Cloud Storage からのイベントの生成、生成したイベントの Cloud Run(フルマネージド)ログでの表示が正常に完了しました。
クリーンアップ
サービスが使用されていない場合、Cloud Run の料金は発生しませんが、コンテナ イメージを Container Registry に保存すると料金が発生します。また、Eventarc のリソースを使用した場合や、Cloud Storage バケットにファイルを保存した場合にも料金が発生します。
イメージを削除し、ストレージ バケットを削除できます。Eventarc トリガーを削除するには:
gcloud eventarc triggers delete events-quickstart-trigger
または、Google Cloud プロジェクトを削除して、料金が発生しないようにすることもできます。Cloud プロジェクトを削除すると、そのプロジェクト内で使用されているすべてのリソースに対する課金が停止します。
- Cloud Console で [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。