
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Build simple a REST API
/ 20
Create a Revision for Cloud Run
/ 20
Create two cloud storage buckets
/ 10
Create a Pub/Sub topic for receiving notification from storage bucket
/ 10
Create a Pub/Sub subscription
/ 10
Create another build for REST API
/ 15
Create a new Revision
/ 15
Lily さんは 12 年前、獣医師クリニック チェーン「Pet Theory」を開業しました。 現在、Pet Theory では請求書を DOCX 形式でクライアントに送っていますが、ファイルを開けないという苦情が多く寄せられています。 クライアント満足度の向上に向けて現状を打開するため、Lily さんは IT 部門の Patrick さんに代替案の調査を依頼しました。
運用チームのメンバーが 1 人しかいないため、望ましいのは運用中のメンテナンスに手間がかからないコスト効率の良いソリューションです。さまざまな選択肢を検討した結果、Patrick さんは Cloud Run を使用することにしました。
Cloud Run はサーバーレスであるため、すべてのインフラストラクチャ管理を抽象化し、オーバーヘッドを心配せずにアプリケーションのビルドに集中できます。しかも、Google サーバーレス プロダクトとして、使用しない場合はゼロにスケールできコストが発生しません。また、コンテナに基づくカスタム バイナリ パッケージを使用できるため、一貫性のある分離されたアーティファクトをビルドできるようになりました。
このラボでは、Cloud Storage に保存されているファイルを PDF に自動的に変換して別のフォルダに保存する、PDF コンバータ ウェブアプリを Cloud Run 上でビルドします。
この図は、使用するサービスの概要と、それらがどのようにつながっているかを示しています。
このラボでは、次の方法について学びます。
これは中級レベルのラボです。コンソール環境とシェル環境に精通していることを前提としています。Firebase の使用経験は役立ちますが、必須ではありません。このラボを受講する前に、次の Google Cloud Skills Boost ラボを完了しておくことをおすすめします。
準備ができたら下にスクロールし、手順に沿ってラボ環境を設定します。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Pet theory では、PDF に変換された請求書をクライアントが確実に開けるようにしたいと考えています。さらに、チームはこの変換を自動化して、オフィス マネージャーである Lisa さんの作業負荷を最小限に抑えたいと考えています。
Pet Theory のコンピュータ コンサルタントである Ruby さんは、IT 部門の Patrick さんから次のメッセージを受け取りました。
Patrick さん(IT 管理者) |
Ruby さん、お世話になっております。 こちらで調べてみたところ、さまざまなファイル形式を PDF に変換するには LibreOffice が良さそうです。 サーバーのメンテナンスを行う必要なく、クラウドで LibreOffice を実行することは可能でしょうか? Patrick |
|
Patrick さん、ご連絡ありがとうございます。 そのようなご要望であれば、ぜひおすすめしたいものがあります。 Next 19 で発表された Cloud Run です。YouTube の動画で視聴したのですが、サーバーレス環境で Cloud Run を使用して LibreOffice を実行できるようです。サーバーのメンテナンスも不要です。 設定に役立つリソースをいくつかお送りしますので、ご確認のほどよろしくお願いいたします。 Ruby |
Patrick さんが Cloud Run の設定とデプロイを行えるようサポートしましょう。
ナビゲーション メニュー()を開き、[API とサービス] > [ライブラリ] をクリックします。検索バーに「Cloud Run」と入力し、検索結果のリストで Cloud Run Admin API を選択します。
[有効にする] をクリックします。ブラウザの戻るボタンを 2 回クリックすると、コンソールは次のようになります。
Ruby さんは開発した Cloud Run プロトタイプを、Patrick さんに Google Cloud にデプロイしてもらいたいと思っています。ここで、Patrick さんが Pet Theory の PDF Cloud Run サービスを確立するのをサポートしましょう。
新しい Cloud Shell セッションを開き、次のコマンドを実行して Pet Theory のリポジトリのクローンを作成します。
次に、現在の作業ディレクトリを lab03 に変更します。
Cloud Shell コードエディタまたは任意のテキスト エディタで package.json
を編集します。"scripts" セクションに以下のように "start": "node index.js",
を追加します。
次に、Cloud Shell で次のコマンドを実行して、変換スクリプトで使用するパッケージをインストールします。
次に、lab03/index.js
ファイルを開いてコードを確認します。
アプリケーションは、HTTP POST を受け入れる Cloud Run サービスとしてデプロイされます。 POST リクエストが、アップロードされたファイルに関する Pub/Sub 通知である場合は、サービスによりファイルの詳細がログに書き込まれます。そうでない場合は、サービスにより単に文字列「OK」が返されます。
lab03/Dockerfile
というファイルを確認します。
上記のファイルはマニフェストと呼ばれ、Docker コマンドがイメージをビルドするためのレシピを提供します。各行は、Docker に次の情報の処理方法を指示するコマンドで始まります。
REST API をビルドしてデプロイするには、Google Cloud Build を使用します。次のコマンドを実行して、ビルドプロセスを開始します。
このコマンドは、コードでコンテナをビルドし、プロジェクトの Artifact Registry にそのコンテナを配置します。
Cloud コンソールに戻り、ナビゲーション メニューから [Artifact Registry] > [イメージ] を選択します。ホストされているコンテナが表示されます。
完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
コードエディタのタブに戻り、Cloud Shell で次のコマンドを実行してアプリケーションをデプロイします。
デプロイが完了すると、次のようなメッセージが表示されます。
アプリに簡単にアクセスできるように、アプリ用の環境変数 $SERVICE_URL
を作成します。
完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
新しいサービスに匿名の POST リクエストを行います。
次に、承認されたユーザーとしてサービスを呼び出してみます。
「OK
」という応答が得られれば、Cloud Run サービスは正常にデプロイされています。このタスクは以上で完了です。
Cloud Run サービスが正常にデプロイされたので、Ruby さんは Patrick さんにデータを変換するためのステージング領域を作成してもらうことにします。Cloud Storage バケットは、イベント トリガーを使用して、ファイルがアップロードされて処理が必要になったときにアプリケーションに通知します。
次のコマンドを実行して、アップロードされたドキュメント用のバケットを Cloud Storage に作成します。
変換後の PDF に使用する別のバケットを次のように作成します。
次に Cloud コンソールのタブに戻り、ナビゲーション メニューを開いて、[Cloud Storage] を選択します。バケットが作成されたことを確認します(プラットフォームによって使用される他のバケットも確認できます)。
完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Cloud Shell で次のコマンドを実行して、新しいファイルがドキュメント バケットへのアップロードを完了するたびに、Pub/Sub 通知を送信するように Cloud Storage に指示します。
通知にはトピック「new-doc」というラベルが付けられます。
完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Pub/Sub が Cloud Run サービスをトリガーするために使用する新しいサービス アカウントを作成します。
PDF コンバータ サービスを呼び出す権限を新しいサービス アカウントに付与します。
次のコマンドを実行して、プロジェクト番号を見つけます。
プロジェクト番号の値は次のコマンドで使用します。
PROJECT_NUMBER
環境変数を作成します。
最後に、Pub/Sub サブスクリプションを作成して、トピック「new-doc」でメッセージが公開されるときはいつでも PDF コンバータを実行できるようにします。
完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Ruby さんは、アプリケーションが期待どおりに動作していることを確認するために、名前を付けたストレージ バケットにテストデータをアップロードして、Cloud Logging を確認するよう Patrick さんに依頼します。
テストファイルをアップロード バケットにコピーします。
アップロードが完了したら、Cloud コンソールのタブに戻り、ナビゲーション メニューを開いて、[オペレーション] セクションの [ロギング] を選択します。
[リソース] プルダウンで、[Cloud Run のリビジョン] を指定して結果をフィルタし、[適用] をクリックします。[クエリを実行] をクリックします。
[クエリ結果] で、file:
で始まるログエントリを探してクリックします。新しいファイルがアップロードされると、Pub/Sub が Cloud Run サービスに送信するファイルデータのダンプが表示されます。
このオブジェクトでアップロードしたファイルの名前を確認します。
次に、コードエディタのタブに戻り、Cloud Shell で次のコマンドを実行して、upload
ディレクトリ内のファイルを削除してディレクトリをクリーンアップします。
Patrick さんは、すべてのクライアントが請求書を開けるように請求書のバックログを PDF に変換する必要があります。そこで、メールで Ruby さんにサポートを求めることにしました。
Patrick さん(IT 管理者) |
Ruby さん、お世話になっております。 いただいた情報をもとにこのプロセスを自動化したうえで、PDF を請求書の形式として使用できるようにすることも可能だと思います。 昨日少し時間をかけてソリューションをコーディングし、必要なことを実行するための Node.js スクリプトを作成しました。ご確認いただけますか? Patrick |
Patrick さんは、ファイルから PDF を生成するために作成した次のコード フラグメントを Ruby さんに送信します。
Ruby さんは Patrick さんに返事を書きます。
Ruby さん(ソフトウェア コンサルタント) |
Patrick さん、ご連絡ありがとうございます。 Cloud Run はコンテナを使用するため、その形式でアプリケーションを用意する必要があります。次のステップとしてアプリケーションの Dockerfile マニフェストを作成してください。 作成したコードでは LibreOffice を使用します。そのソフトウェアをインストールするためのコマンドをお送りいただけますか?それをコンテナに含める必要があります。 Ruby |
Patrick さん(IT 管理者) |
Ruby さん、お世話になっております。 早速ありがとうございます。LibreOffice をオフィスのサーバーにインストールするのに、通常は以下のコマンドを使っています。
他にも必要な情報がありましたら、ご連絡ください。 Patrick |
コンテナをビルドするには、いくつかのコンポーネントを統合する必要があります。
すべてのファイルが特定されたら、マニフェストを作成できます。Ruby さんがコンテナの設定とデプロイを行うのをサポートしましょう。
LibreOffice のパッケージがコンテナに含まれていなかったので、追加する必要があります。
Patrick さんからアプリケーションのビルドに使用するコマンドが提供されたので、Ruby さんはそのコマンドを Dockerfile 内に RUN
コマンドとして追加します。
Dockerfile
マニフェストを開き、コマンドライン RUN apt-get update -y && apt-get install -y libreoffice && apt-get clean
を次のように追加します。
index.js
ファイルを開き、ファイルの先頭に次のパッケージ要件を追加します。
app.post('/', async (req, res)
を次のコードに置き換えます。
次に、LibreOffice ドキュメントを処理する次のコードをファイルの末尾に追加します。
index.js
ファイルが次のようになっていることを確認します。
index.js
ファイル内のすべてのコードをこのサンプルコードに置き換えることをおすすめします。
ファイルがアップロードされるときはいつでも、このサービスがトリガーされます。上の関数はそれぞれ、次のタスクを実行します(各行 1 タスクずつ)。
process.env.PDF_BUCKET
には、PDF を書き込む Cloud Storage バケットの名前が含まれています。後述するサービスをデプロイする際、この変数に値を割り当てます。index.js
の残りの部分では、このトップレベルのコードによって呼び出される関数を実装します。
ここでサービスをデプロイし、PDF_BUCKET
環境変数を設定します。LibreOffice の処理用に、2 GB の RAM を指定することもおすすめします(--memory
オプションのある行を参照)。
次のコマンドを実行してコンテナをビルドします。
Y
」と入力します。完了したタスクをテストする
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
最新バージョンのアプリケーションをデプロイします。
コンテナに LibreOffice の部分が含まれているため、このビルドは以前のビルドよりも時間がかかります。待ってる間、立ち上がってストレッチでもしましょう。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
デプロイ コマンドが完了したら、次のコマンドを実行して、サービスが正しくデプロイされたことを確認します。
「OK
」という応答が得られれば、更新された Cloud Run サービスは正常にデプロイされています。LibreOffice は、DOCX、XLSX、JPG、PNG、GIF などの多くのファイル形式を PDF に変換できます。
次のコマンドを実行して、いくつかのサンプル ファイルをアップロードします。
Cloud コンソールに戻り、ナビゲーション メニューを開いて [Cloud Storage] を選択します。-upload
バケットを開き、[更新] ボタンを数回クリックして、ファイルが PDF に変換されるときに、ファイルが 1 つずつ削除される様子を確認します。
次に、左側のメニューから [バケット] をクリックし、名前が「-processed」で終わるバケットをクリックします。そのバケットにはすべてのファイルの PDF バージョンが含まれています。PDF ファイルを開いて、適切に変換されていることを確認してください。
-processed
バケット内に表示されていない変換済み PDF ファイルがある場合は、コマンドを再実行してください。
Pet Theory で、元のファイルのアーカイブを PDF に変換するシステムが確立されました。 元のファイルを「upload」バケットにアップロードするだけで、PDF コンバータ サービスによりファイルが変換され、「processed」バケットに PDF として書き込まれます。
「Serverless Cloud Run Development」コースで、サーバーレスに関する学習を続けてください。 架空のビジネス シナリオの登場人物を支援してサーバーレスへの移行計画を進めていきます。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 5 月 28 日
ラボの最終テスト日: 2024 年 5 月 28 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください