チェックポイント
Build with Cloud Build
/ 25
Deploy to Cloud Run
/ 25
Service Account created
/ 25
Check PubSub Subscription
/ 25
Go と Cloud Run を使用した PDF の作成
GSP762
概要
このラボでは、Cloud Run 上でPDF コンバータ ウェブ アプリをビルドします。Cloud Run は サーバーレス サービスで、Google ドライブに保存されているファイルを PDF に自動変換し、別の Google ドライブ フォルダに保存する機能を持っています。
学習内容
- Go アプリケーションをコンテナに変換する。
- Google Cloud Build でコンテナをビルドする方法を学ぶ。
- クラウドでファイルを PDF ファイルに変換する Cloud Run サービスを作成する。
- サービス アカウントを作成する方法と権限を追加する方法を理解する。
- Cloud Storage でイベント処理を使用する。
前提条件
これは基礎レベルのラボです。このラボは、Cloud Console と Cloud Shell に精通していることを前提としています。
ファイルの編集にも慣れている必要があります。ご自身で使い慣れたテキスト エディタ(nano、vi など)を使用するか、上部のリボンにある Cloud Shell からコードエディタを起動してください。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。
-
[ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。
重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後このタブで Cloud Console が開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
アーキテクチャ
このラボでは、Pet Theory 獣医クリニックの顧客が請求書を確実に開けるように、請求書を PDF に自動変換するクリニックの取り組みをサポートします。
Google API の使用
このラボでは、Google API を使用します。次の API はすでに有効になっています。
名前 | API |
---|---|
Cloud Build | cloudbuild.googleapis.com |
Cloud Storage | storage-component.googleapis.com |
Cloud Run | run.googleapis.com |
タスク 1. ソースコードを取得する
まずは、このラボで必要なコードをダウンロードしてください。
- ラボアカウントを有効にします。
- 次のコマンドを実行して、Pet Theory リポジトリのクローンを作成します。
- 正しいディレクトリに移動します。
タスク 2. 請求書のマイクロサービスを作成する
このセクションでは、リクエストを処理する Go アプリケーションを作成します。アーキテクチャ図に記載されているように、Cloud Storage をソリューションの一部として統合します。
-
「エディタを開く」アイコン、[新しいウィンドウで開く] の順にクリックします。
-
pet-theory > lab03 > server.go に移動します。
-
server.go
ソースコードを開き、次のテキストと同じになるように編集します。
- ここで、次のコマンドを実行してアプリケーションをビルドします。
このトップレベルのコードによって呼び出される関数はソースファイルにあります。
- server.go
- notification.go
- gcs.go
アプリケーションが正常にビルドされたので、PDF コンバータ サービスを作成できます。
タスク 3. PDF コンバータ サービスを作成する
PDF サービスでは、ファイルを指定ストレージにアップロードするたびに、Cloud Run と Cloud Storage を使ってプロセスが開始されます。
そのために、Cloud Pub/Sub と一般的なイベント通知パターンを併用します。そうすることで、アプリケーションが情報の処理だけに集中できるようになります。情報を渡して転送する処理は他のサービスで行われるので、アプリケーションをシンプルにすることができます。
請求書モジュールをビルドするには、2 つのコンポーネントを統合する必要があります。
LibreOffice パッケージを追加すると、アプリケーションで使用できるようになります。
- [エディタを開く] で、既存の
Dockerfile
マニフェストを開き、次のようにファイルを更新します。
-
更新した
Dockerfile
を保存します。 -
Cloud Build を使って
pdf-converter
イメージの再ビルドを開始します。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
- 更新した PDF コンバータ サービスをデプロイします。
--memory
オプションの行をご覧ください。- 次のコマンドを実行して、コンテナをビルドしデプロイします。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
Cloud Run サービスが正常にデプロイされました。しかし、デプロイしたアプリケーションには適切なアクセス権が必要です。
タスク 4. サービス アカウントを作成する
サービス アカウントは、Google API へのアクセス権を持つ特殊なタイプのアカウントです。
このラボで Cloud Storage イベントを処理する際は、サービス アカウントを使って Cloud Run にアクセスします。Cloud Storage では、イベント トリガーに使用できる豊富な各種通知がサポートされています。
次に、ファイルがアップロードされたときアプリケーションに通知するコードを更新します。
- ナビゲーション メニュー > [Cloud Storage] をクリックして、2 つのバケットが作成されたことを確認します。次のように表示されます。
- PROJECT_ID-processed
- PROJECT_ID-upload
- 新しいファイルがドキュメント バケットにアップロードされたことを示す Pub/Sub 通知を作成します(「uploaded」)。通知にはトピック「new-doc」というラベルが付けられます。
- 新しいサービス アカウントを作成して、Cloud Run サービスをトリガーします。
- PDF コンバータ サービスを呼び出す権限をサービス アカウントに付与します。
- 次のコマンドを実行して、プロジェクト番号を見つけます。
- プロジェクトで Cloud Pub/Sub 認証トークンを作成できるようにします。
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
サービス アカウントが作成され、Cloud Run サービスの呼び出しに使用できるようになりました。
タスク 5. Cloud Run サービスをテストする
次に進む前に、デプロイされたサービスをテストします。サービスには認証が必要です。サービスが実際に非公開であることを確認するためにテストを実施します。
- 環境変数 $SERVICE_URL にサービスの URL を保存します。
- SERVICE URL を表示します。
- 新しいサービスに匿名の GET リクエストを行います。
匿名の GET リクエストを実行すると
"Your client does not have permission to get URL"
というエラー メッセージが表示されます。
これは「匿名ユーザーはサービスを呼び出せない」ということですので、表示されても問題ありません。
- 次に、承認されたユーザーとしてサービスを呼び出してみます。
- 「Ready to process POST requests from Cloud Storage trigger」というレスポンスが返されます。
認証された Cloud Run サービスを正常にデプロイできました。
タスク 6. Cloud Storage トリガー
新しいコンテンツが Cloud Storage にアップロードされるときに通知を開始するには、既存の Pub/Sub トピックにサブスクリプションを追加します。
-
通知メッセージがトピック
new-doc
にパブリッシュされるたびに PDF コンバータが稼働するよう設定した、Pub/Sub サブスクリプションを作成します。gcloud pubsub subscriptions create pdf-conv-sub \ --topic new-doc \ --push-endpoint=$SERVICE_URL \ --push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
[進行状況を確認] をクリックして、上記のタスクを実行したことを確認します。
ファイルがアップロードされるたびに、Pub/Sub サブスクリプションとサービス アカウントとのやり取りができるようになりました。これにより、サービス アカウントで PDF コンバータの Cloud Run サービスを開始できるようになりました。
タスク 7. Cloud Storage の通知をテストする
Cloud Run サービスをテストするには、使用可能なサンプル ファイルを利用します。
- テストファイルをアップロード バケットにコピーします。
-
Cloud コンソールで [Cloud Storage] > [バケット] をクリックし、名前が「-upload」で終わるバケット名をクリックします。次に [更新] ボタンを数回クリックして、ファイルが PDF ファイルに変換されるにつれて 1 つずつ削除されるのを確認します。
-
次に、[バケット] をクリックし、名前が「-processed」で終わるバケットをクリックします。そのバケットにはすべてのファイルの PDF バージョンが含まれています。PDF ファイルを開いて、適切に変換されていることを確認してください。
-
アップロードが完了したら、ナビゲーション メニュー > [Cloud Run] をクリックし、pdf-converter サービスをクリックします。
-
[LOGS] タブを選択し「Converting」フィルタを追加して、変換されたファイルを表示します。
-
ナビゲーション メニュー > [Cloud Storage] に移動して、「-upload」で終わるバケット名を開き、アップロードしたファイルがすべて処理されたことを確認します。
新しいサービスを正常にビルドし、Cloud Storage にアップロードされたファイルを使って PDF を作成できました。
お疲れさまでした
PDF コンバータ サービスによりドキュメントが変換され、PDF として「processed」バケットに書き込まれます。このラボでは、以下の操作について学習しました。
- Go アプリケーションをコンテナに変換する。
- Google Cloud Build でコンテナをビルドする。
- Cloud Run サービスを作成する。
- サービス アカウントを使用して権限を有効にする。
- Cloud Storage のイベント処理を使用する
クエストを完了する
このセルフペース ラボは、「Google Cloud Run Serverless Workshop」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。こちらのクエストに登録すると、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。
詳細 / 次のステップ
- サーバーレス コンテナ: Next '19 の YouTube 動画
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 11 月 29 日
ラボの最終テスト日: 2023 年 11 月 29 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。