arrow_back

Cloud Functions: Qwik Start - コマンドライン

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Functions: Qwik Start - コマンドライン

Lab 30分 universal_currency_alt クレジット: 1 show_chart 入門
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP080

Google Cloud セルフペース ラボ

概要

クラウド関数は、HTTP リクエスト、メッセージング サービスからのメッセージ、ファイル アップロードなどのイベントに応答して実行されるコードです。クラウド イベントとは、クラウド環境で発生する変化のことを指します。たとえば、データベースでのデータの変更、ストレージ システムへのファイルの追加、新しい仮想マシン インスタンスの作成などがイベントとして扱われます。

クラウド関数は、何かが発生した場合にのみ実行されるイベント ドリブン型であるため、迅速に実行する必要があるタスクや、常時実行する必要がないタスクに適しています。

たとえば、クラウド関数を使用して次のことができます。

  • Cloud Storage にアップロードされる画像のサムネイルを自動的に生成する
  • Cloud Pub/Sub で新しいメッセージを受信したときにユーザーの携帯電話に通知を送信する
  • Cloud Firestore データベースからのデータを処理し、レポートを生成する

Node.js をサポートする任意の言語でコードを作成できます。また、数回クリックするだけでコードをクラウドにデプロイできます。クラウド関数がデプロイされると、イベントに応答して自動的に実行が開始されます。

このハンズオンラボでは、Google Cloud コンソールでクラウド関数を作成、デプロイ、テストする方法を説明します。

このハンズオンラボでは、Google Cloud Shell のコマンドラインを使用して、クラウド関数を作成、デプロイ、テストする方法について学習します。

演習内容

  • Cloud Functions でシンプルな関数を作成する
  • 作成した関数をデプロイ、テストする
  • ログを表示する

設定

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. 関数を作成する

最初に、helloWorld という名前の簡単な関数を作成します。これは Cloud Functions のログにメッセージを書き込む関数です。この関数は Cloud Functions のイベントでトリガーされ、関数が実行されたことを通知するコールバック関数を受信します。

このラボでは、Cloud Pub/Sub トピックに関する Cloud Functions のイベントを扱います。Pub/Sub は、メッセージの送信者とメッセージの受信者を切り離すメッセージング サービスです。送信または投稿されるメッセージのアラートとメッセージ自体を受信者が受信するには、サブスクリプションが必要です。Pub/Sub について詳しくは、Cloud Pub/Sub ガイドの Google Cloud Pub/Sub: Google 規模のメッセージ サービスをご覧ください。

イベント パラメータとコールバック パラメータについて詳しくは、Cloud Functions のドキュメントのバックグラウンド関数をご覧ください。

Cloud Functions の関数を作成するには:

  1. Cloud Shell で、次のコマンドを実行してデフォルトのリージョンを設定します。
gcloud config set compute/region {{{project_0.default_region |REGION}}}
  1. 関数コード用のディレクトリを作成します。
mkdir gcf_hello_world
  1. gcf_hello_world ディレクトリに移動します。
cd gcf_hello_world
  1. index.js 作成し、編集するために開きます。
nano index.js
  1. 次の内容を index.js ファイルにコピーします。
/** * Pub/Sub でトリガーされるバックグラウンド Cloud Functions 関数。 * この関数は index.js によってエクスポートされ、トリガー トピックが * メッセージを受信すると実行されます。 * * @param {object} data The event payload. * @param {object} context The event metadata. */ exports.helloWorld = (data, context) => { const pubSubMessage = data; const name = pubSubMessage.data ? Buffer.from(pubSubMessage.data, 'base64').toString() : "Hello World"; console.log(`My Cloud Function: ${name}`); };
  1. nano エディタを終了し(Ctrl+X)、ファイルを保存します(Y)。

タスク 2. Cloud Storage バケットを作成する

  • 次のコマンドを使用して、関数用に新しい Cloud Storage バケットを作成します。
gsutil mb -p [PROJECT_ID] gs://[BUCKET_NAME]
  • PROJECT_ID は、このラボの左側にある [ラボの詳細] パネルに表示されるプロジェクト ID です。

  • BUCKET_NAME はバケットに付ける名前です。プロジェクト ID をバケット名として使用して、グローバルに一意の名前を確保できます。

バケットの命名について詳しくは、Cloud Storage ドキュメントのバケットの命名ガイドラインをご覧ください。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

Cloud Storage バケットを作成する

タスク 3. 関数をデプロイする

新しい関数をデプロイするには、--trigger-topic--trigger-bucket--trigger-http のいずれかを指定する必要があります。既存の関数にアップデートをデプロイすると、特に指定のない限り、その関数は既存のトリガーを維持します。

このラボでは、--trigger-topichello_world を指定します。

  1. hello_world という Pub/Sub トピックに関数をデプロイします。[BUCKET_NAME] はバケットの名前で置き換えます。
gcloud functions deploy helloWorld \ --stage-bucket [BUCKET_NAME] \ --trigger-topic hello_world \ --runtime nodejs20 注: OperationError が表示された場合は、警告を無視してコマンドを再実行してください。

プロンプトが表示されたら、「Y」と入力して新しい関数の未認証の呼び出しを許可します。

  1. 関数のステータスを確認します。
gcloud functions describe helloWorld

ACTIVE ステータスは、関数がデプロイされたことを表しています。

entryPoint: helloWorld eventTrigger: eventType: providers/cloud.pubsub/eventTypes/topic.publish failurePolicy: {} resource: ... status: ACTIVE ...

トピックにメッセージが配信されるたびに関数の実行がトリガーされ、メッセージの内容が入力データとして送信されます。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが提供されます。

関数をデプロイする

タスク 4. 関数をテストする

関数をデプロイしてそれがアクティブになっていることを確認したら、関数がイベントを検出してメッセージをクラウドログに書き込むかどうかをテストします。

  • 次のコマンドを入力して、関数のメッセージ テストを作成します。
DATA=$(printf 'Hello World!'|base64) && gcloud functions call helloWorld --data '{"data":"'$DATA'"}'

Cloud ツールから関数の実行 ID が返されます。これは、メッセージがログに書き込まれたことを示しています。

次のような内容が返されます。

executionId: 3zmhpf7l6j5b

該当するログを表示して、その実行 ID のログメッセージが存在することを確認します。

タスク 5. ログを表示する

  • 該当のログを開き、ログ履歴の中に対象のメッセージがあることを確認します。
gcloud functions logs read helloWorld

関数が正常に実行されると、次のようなメッセージがログに表示されます。

LEVEL: D NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:31.545 LOG: Function execution took 912 ms, finished with status: 'ok' LEVEL: I NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:31.533 LOG: My Cloud Function: Hello World! LEVEL: D NAME: helloWorld EXECUTION_ID: 4bgl3jw2a9i3 TIME_UTC: 2023-03-23 13:45:30.633 LOG: Function execution started 注: ログが表示されるまでに 10 分ほどかかります。別の方法として、[ロギング] > [ログ エクスプローラ] を選択してログを表示することもできます。

これでアプリケーションのデプロイ、テスト、ログの表示が完了しました。

タスク 6. 理解度チェック

今回のラボで学習した内容の理解を深めていただくため、以下の選択式問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

クエストを完了する

このセルフペース ラボは、「Baseline: Deploy & Develop」クエスト、「Baseline: Infrastructure」クエスト、「Optimizing your Google Cloud Costs」クエストの一部です。クエストとは学習パスを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

このラボは、Google Cloud が提供する多くの機能を体験できる「Qwik Start」と呼ばれるラボシリーズの一部でもあります。ラボカタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 8 月 10 日

ラボの最終テスト日: 2023 年 8 月 10 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。