クイックスタート: Cloud Storage イベントの受信

このクイックスタートでは、Eventarc を使用して、未認証の Cloud Run(フルマネージド)サービスで Cloud Storage からイベントを受信する方法について説明します。

このクイックスタートを完了するには、Google Cloud Console または gcloud コマンドライン ツールを使用します。

このクイックスタートでは、以下の操作を行います。

  1. イベントソースとなる Cloud Storage バケットを作成する。

  2. イベント レシーバ サービスを Cloud Run(フルマネージド)にデプロイする。

  3. イベント トリガーを作成する。

  4. Cloud Storage バケットにファイルをアップロードしてイベントを生成し、Cloud Run(フルマネージド)のログで確認する。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。

    API を有効にする

  5. gcloud ツールを使用する場合:
    1. gcloud コンポーネントを更新します。
      gcloud components update
    2. 自分のアカウントでログインします。

      gcloud auth login
      

    3. このクイックスタートで使用する構成変数を設定します。

      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
      

    4. Google Cloud Storage で、Cloud 監査ログの管理読み取りデータ読み取りデータ書き込みの各ログタイプを有効にします。

      Cloud Audit Logs のコンソールに移動

    5. 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'
      

    6. 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'
      

    7. git ソースコード管理ツールをダウンロードしてインストールします。

Cloud Storage バケットを作成する

このクイックスタートでは、イベントソースとして Cloud Storage を使用します。ストレージ バケットを作成するには:

Console

  1. Cloud Console で Cloud Storage に移動します。

    Cloud Storage に移動

  2. [ バケットを作成] をクリックします。

    新しいバケット。

  3. バケット情報を入力し、[続行] をクリックして各ステップを完了します。

    • 一意の名前を入力します。例: eventarcbucket
    • [ロケーション タイプ] として [リージョン] を選択します。
    • [ロケーション] として [us-central1 (Iowa)] を選択します。
    • [デフォルトのストレージ クラス] として [標準] を選択します。
    • [アクセス制御] に [均一] を選択します。
  4. [作成] をクリックします。

コマンドライン

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

イベントソースの作成後、Cloud Run(フルマネージド)にイベント レシーバ サービスをデプロイできます。

イベント レシーバ サービスを Cloud Run にデプロイする(フルマネージド)

イベントを受信してログに記録する Cloud Run(フルマネージド)サービスをデプロイします。サンプル イベント レシーバ サービスをデプロイするには:

Console

  1. GitHub アカウントにサンプル リポジトリのクローンを作成します。

    Go

    1. GitHub で GoogleCloudPlatform/golang-samples に移動します。

    2. [Fork] をクリックします。

      [fork] ボタンのスクリーンショット

    3. プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。

    Java

    1. GitHub で GoogleCloudPlatform/java-docs-samples に移動します。

    2. [Fork] をクリックします。

      [fork] ボタンのスクリーンショット

    3. プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。

    .NET

    1. GitHub で GoogleCloudPlatform/dotnet-docs-samples に移動します。

    2. [Fork] をクリックします。

      [fork] ボタンのスクリーンショット

    3. プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。

    Node.js

    1. GitHub で GoogleCloudPlatform/nodejs-docs-samples に移動します。

    2. [Fork] をクリックします。

      [fork] ボタンのスクリーンショット

    3. プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。

    Python

    1. GitHub で GoogleCloudPlatform/python-docs-samples に移動します。

    2. [Fork] をクリックします。

      [fork] ボタンのスクリーンショット

    3. プロンプトが表示されたら、リポジトリをフォークするロケーションを選択します。

  2. Cloud Console で Cloud Run に移動します。

    [Cloud Run] に移動

  3. [ サービスを作成] をクリックして、[サービスの作成] フォームを表示します。

    create-service-page

  4. [Cloud Run (フルマネージド)] を選択します。

  5. サービスを配置するリージョンとして [us-central1(Iowa)] を選択します。

  6. 任意のサービス名を入力します。例:helloworld-events

  7. [次へ] をクリックします。

  8. [ソース リポジトリから新しいリビジョンを継続的にデプロイする] を選択します。

  9. [Cloud Build の設定] をクリックし、[Cloud Build の設定] フォームを開きます。

    [Cloud Build の設定] ページ

    [Cloud Build の設定] フォームで、次の操作を行います。

    1. プロンプトが表示されたら、[Cloud Build API] と [Container Analysis API] を有効にします。
    2. [リポジトリ プロバイダ] として [GitHub] を選択します。

    3. プロンプトが表示されたら、[Google Cloud Build のインストール] をクリックします。

    4. [リポジトリ] として、フォークした GitHub リポジトリを選択します。

    5. [次へ] をクリックします。

    6. [ブランチ] フィールドに「^master$」と入力します。

    7. [ビルドタイプ] として、[Dockerfile] を選択し、Dockerfile のソースの場所として、

      eventarc/audit-storage/Dockerfile または eventarc/audit_storage/Dockerfile(Go)を指定します。

    8. [保存] をクリックします。

  10. [サービスの作成] フォームで [次へ] をクリックします。

  11. [このサービスをトリガーする方法の構成] セクションで、次の操作を行います。

    • [すべてのトラフィックを許可する] をオンにします。

    • [未認証の呼び出しを許可する] をオンにします。

  12. 必要に応じて、 [トリガーを追加] をクリックしてトリガーを作成するか、サービスを作成した後にトリガーを作成します。トリガーの作成方法の詳細については、Eventarc トリガーを作成するをご覧ください。

  13. [作成] をクリックします。

コマンドライン

  1. リポジトリのクローンを作成します。

    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
    
  2. コンテナをビルドして、Cloud Build にアップロードします。

    gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. コンテナ イメージを 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

  1. Cloud Console で Cloud Run に移動します。

    [Cloud Run] に移動

  2. サービスの一覧から、作成したサービスをクリックして、[サービスの詳細] ページに移動します。

  3. [トリガー] タブをクリックし、[ トリガーを追加] をクリックします。

  4. [イベントを選択] プルダウン リストで、[Cloud Storage] > [storage.objects.create] を選択します。

  5. [イベントの受信元] フィールドで [単一リージョン] を選択します。

  6. storage.googleapis.com サービスの Cloud Audit Logs を有効にします。

  7. プロンプトが表示されたら、eventarc.eventReceiver ロールを Compute Engine サービス アカウントに、iam.serviceAccountTokenCreator ロールを Pub/Sub サービス アカウントに付与します。

    新しいトリガーの設定

  8. [保存] をクリックします。

コマンドライン

  1. 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 というトリガーが作成されます。

  2. events-quickstart-trigger が正常に作成されたことを確認するには、次のコマンドを実行します。

    gcloud eventarc triggers list --location=us-central1
    

    events-quickstart-triggerhelloworld-events のターゲットとともに表示されます。

イベントの生成と表示

  1. イベントを生成するには:

    Console

    1. random.txt」というファイル名のテキスト ファイルと「Hello World」というテキストを作成します。

    2. Cloud Console で Cloud Storage に移動します。

      Cloud Storage に移動

    3. 作成したストレージ バケットを選択します。

    4. [オブジェクト] タブで、[ファイルをアップロード] をクリックして 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(フルマネージド)サービスによってメッセージが記録されます。

  2. ログエントリを表示するには:

    Console

    1. Cloud Console で Cloud Run に移動します。

      [Cloud Run] に移動

    2. サービスの一覧から、作成したサービスの名前をクリックして、[サービスの詳細] ページに移動します。

    3. このサービスのすべてのリビジョンのリクエストログとコンテナログを取得するには、[ログ] タブをクリックします。ログの重大度でフィルタリングできます。

    4. 次のようなログエントリを探します。

      トリガーログ

    コマンドライン

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    2. 次のようなログエントリを探します。

      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 プロジェクトを削除すると、そのプロジェクト内で使用されているすべてのリソースに対する課金が停止します。

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ