arrow_back

Set Up an App Dev Environment on Google Cloud: チャレンジラボ

ログイン 参加
Quick tip: Review the prerequisites before you run the lab
Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the student account, which may cause extra charges incurred to your personal account.
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

Set Up an App Dev Environment on Google Cloud: チャレンジラボ

ラボ 1時間 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

GSP315

Google Cloud セルフペース ラボのロゴ

はじめに

チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。

チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。

100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。

このラボは、「Set Up an App Dev Environment on Google Cloud」スキルバッジに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。

設定

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

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

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

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

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

チャレンジ シナリオ

Jooli Inc. のジュニア クラウド エンジニアという新たな役割を任されて間もないあなたは、各チームが Google Cloud のリソースを作成して管理できるようサポートしています。

これらのタスクのスキルや知識があるという前提のため、手順ガイドは提供されません。

チャレンジ

あなたに新しい任務が与えられました。それは、新たに結成された開発チームが取り組んでいる、写真を保管して整理するための Memories という新しいプロジェクトの初期の作業をサポートすることです。Memories チームによるアプリケーション開発環境の初期構成を支援するために、

次のタスクを行うよう依頼されています。

  • 写真を保管するためのバケットを作成する。
  • Cloud Functions 関数で使用する Pub/Sub トピックを作成する。
  • Cloud Functions 関数を作成する。
  • memories プロジェクトから前任のクラウド エンジニアのアクセス権限を削除する。

Jooli Inc. の以下の規則に沿う必要があります。

  • 特別な指示がない限り、すべてのリソースを リージョンの ゾーンに作成する。
  • プロジェクトの Virtual Private Cloud(VPC)を使用する。
  • 通常は team-resource の形式で命名する(たとえば、インスタンスには nucleus-webserver1 のような名前を指定します)。
  • 費用対効果の高いリソースサイズを割り当てる。プロジェクトはモニタリングされており、リソースが過剰に使用された場合、そのリソースを含むプロジェクトは終了する(ご自身のプロジェクトも終了される可能性があります)ので注意が必要です。モニタリング チームから共有されているガイダンスとして、指示がない限り、小規模の Linux VM には e2-micro を使用し、Kubernetes ノードなどの Windows アプリケーションまたはその他のアプリケーションには e2-medium を使用します。

それぞれのタスクについて以下に詳しく説明します。それでは始めましょう。

タスク 1. バケットの作成

写真を保管するための というバケットを作成する必要があります。 リソースが リージョンの ゾーンに作成されることを確認してください。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 というバケットを作成する

タスク 2. Pub/Sub トピックを作成する

メッセージを送信するために、Cloud Functions 関数用の という Pub/Sub トピックを作成します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 という Pub/Sub トピックを作成する

タスク 3. サムネイル用の Cloud Functions 関数を作成する

バケットに追加される画像のサムネイルを作成する、 という Cloud Functions の関数を作成します。この Cloud Functions 関数は第 2 世代環境を使用するようにします。リソースが リージョンの ゾーンに作成されることを確認してください。

  1. という Cloud Functions の関数を作成します。
注: この Cloud Functions 関数は、タスク 1 で作成したバケット内にオブジェクトが作成されるたびに実行される必要があります。Cloud Functions 関数の処理中に、API を有効にする権限をリクエストされる場合があります。リクエストに応じて、必要な API を有効にしてください。
  1. 必ずエントリ ポイント(実行する関数)を に、トリガーCloud Storage に設定してください。

  2. index.js に次のコードを追加します。

const functions = require('@google-cloud/functions-framework'); const crc32 = require("fast-crc32c"); const { Storage } = require('@google-cloud/storage'); const gcs = new Storage(); const { PubSub } = require('@google-cloud/pubsub'); const imagemagick = require("imagemagick-stream"); functions.cloudEvent('{{{ project_0.startup_script.function }}}', cloudEvent => { const event = cloudEvent.data; console.log(`Event: ${event}`); console.log(`Hello ${event.bucket}`); const fileName = event.name; const bucketName = event.bucket; const size = "64x64" const bucket = gcs.bucket(bucketName); const topicName = "{{{ project_0.startup_script.topic }}}"; const pubsub = new PubSub(); if ( fileName.search("64x64_thumbnail") == -1 ){ // サムネイルが存在しない場合、ファイル名の拡張子を取得 var filename_split = fileName.split('.'); var filename_ext = filename_split[filename_split.length - 1]; var filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length ); if (filename_ext.toLowerCase() == 'png' || filename_ext.toLowerCase() == 'jpg'){ // 現時点では png と jpg のみのサポート console.log(`Processing Original: gs://${bucketName}/${fileName}`); const gcsObject = bucket.file(fileName); let newFilename = filename_without_ext + size + '_thumbnail.' + filename_ext; let gcsNewObject = bucket.file(newFilename); let srcStream = gcsObject.createReadStream(); let dstStream = gcsNewObject.createWriteStream(); let resize = imagemagick().resize(size).quality(90); srcStream.pipe(resize).pipe(dstStream); return new Promise((resolve, reject) => { dstStream .on("error", (err) => { console.log(`Error: ${err}`); reject(err); }) .on("finish", () => { console.log(`Success: ${fileName} → ${newFilename}`); // コンテンツ タイプを設定 gcsNewObject.setMetadata( { contentType: 'image/'+ filename_ext.toLowerCase() }, function(err, apiResponse) {}); pubsub .topic(topicName) .publisher() .publish(Buffer.from(newFilename)) .then(messageId => { console.log(`Message ${messageId} published.`); }) .catch(err => { console.error('ERROR:', err); }); }); }); } else { console.log(`gs://${bucketName}/${fileName} is not an image I can handle`); } } else { console.log(`gs://${bucketName}/${fileName} already has a thumbnail`); } });
  1. package.json に次のコードを追加します。
{ "name": "thumbnails", "version": "1.0.0", "description": "Create Thumbnail of uploaded image", "scripts": { "start": "node index.js" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", "@google-cloud/pubsub": "^2.0.0", "@google-cloud/storage": "^5.0.0", "fast-crc32c": "1.0.4", "imagemagick-stream": "4.1.1" }, "devDependencies": {}, "engines": { "node": ">=4.3.2" } }

サムネイルが作成されたことを確認します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Functions 関数を確認する

タスク 4. インフラストラクチャをテストする

1 つの JPG 画像または PNG 画像をバケットにアップロードする必要があります。

  1. 1 つの JPG 画像または PNG 画像を バケットにアップロードします。
注: または、https://storage.googleapis.com/cloud-training/gsp315/map.jpg にある画像をマシンにダウンロードして、バケットにアップロードすることもできます。
  1. アップロードするとすぐに、サムネイル画像が表示されます(バケットの詳細で [更新] を使用してください)。

タスク 5. 前任のクラウド エンジニアを削除する

このプロジェクトに定義されている 2 名のユーザーが表示されます。

  • 1 つはあなたのアカウント(オーナーのロールの )。
  • もう 1 つは前任のクラウド エンジニアのアカウント(閲覧者のロールの )。
  1. プロジェクトから前任のクラウド エンジニアのアクセス権限を削除してください。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 前任のクラウド エンジニアを削除する

お疲れさまでした

Set Up an App Dev Environment on Google Cloud

次のスキルバッジを獲得する

このセルフペース ラボは、「Set Up an App Dev Environment on Google Cloud」スキルバッジの一部です。このスキルバッジを完了すると成果が認められて、上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。

このスキルバッジは、Google の「Perform Foundational Infrastructure Tasks in Google Cloud」および「Cloud Architect」学習プログラムの一部です。学習プログラムの他のスキルバッジを取得済みの場合は、他の登録可能なスキルバッジを Google Cloud Skills Boost カタログで検索してみてください。

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

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

マニュアルの最終更新日: 2024 年 3 月 21 日

ラボの最終テスト日: 2023 年 9 月 19 日

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

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

One lab at a time

Confirm to end all existing labs and start this one

Setup your console before you begin

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.