Google Cloud:GCEからGCSの画像にアクセスしてみた(リソースの解説も含む)

Google Cloud:GCEからGCSの画像にアクセスしてみた(リソースの解説も含む)

Udemyで実施したハンズオンの備忘録も兼ねて、少しポイントも伝えながら初心者の方向けに解説をしていきます。
Clock Icon2023.04.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今回の目的

コンソールからGoogle ComputeEngine(GCE)を作成し、Cloud Strage(GCS)のバケット上にあるファイルにアクセスし公開する、というデモを行いたいと思います。
なるべく初心者の方でも分かりやすいように解説していきます。

ただ、GCEやGCSの各項目や記入するパラメータの説明は必要最低限に納めますので、Google Cloudを操作するというイメージを持っていただければ幸いです。

手順

1.GCEの作成
2.GCSの作成
3.Cloud Storage FUSEをマウント

GCEの作成

まずは、コンソールからGCEを作成していきます。
(パラメータは必要な要点のみに絞って解説します)

マシンの構成とリージョン

・リージョン → us-central1

・マシンタイプ → e2-micro

特にGCEの種類についての解説は不要かと思います。
今回us-central1e2-microを載せたのは、検証用のためなるべく安いVMを使用した方がいいとお伝えしたかったからです。

すぐに消せば他の高価なVMでも大差はありませんが、万が一忘れた場合などの保険として最低限のVMのみにしようと心がけています。(忘れないのが前提)

ブートディスクの選択

また、ブートディスクのストレージも標準永続ディスクを選択すると料金を安く使用できます。

スポットVMを使用

少しパラメータ作成の順序が前後してしまいますが、料金を安く済ます話が出たのでスポットVMの話をしたいと思います。
こちらは簡単に言うと、Google Cloud側で余剰しているVMを最大91%の割引で使用できるサービスです。(ただし、いくつかの制限があるため運用で使用するにはいくつかの注意が必要です)
また、スポットVMは無料枠の対象外だったと思いますので、無料枠が空いている場合はその限りではありません。
気になる方は左記の公式ドキュメントをご覧ください → 無料枠

初めてスポットVMを設定する方はどこにあるか分かりづらいかと思うので、説明を入れておきます。

・VM作成画面の1番下にある[詳細オプション?]を押下

・[管理?]の中にある可用性ポリシーのVMプロビジョニングモデルの選択蘭を押しスポットVMを選択

HTTPトラフィックの許可

インターネットからのアクセスも想定するので、HTTPトラフィックの許可にチェックを入れます。

IDとAPIへのアクセス

こちらはGCSにアクセスするためのサービスアカウントの権限を指定していきます。
Google Cloudは、サービス間の通信もAPIを使用ますが、そこで操作できるサービスを選びます。
今回は書き込み含め諸々の操作を行いたいので、下記のようにデフォルト設定を変更していきます。

・API ごとにアクセス権を設定を選択

・ストレージを読み取り → フルに変更


GCSの作成

次に画像を保存するストレージを作成していきます。
Cloud Storageはバケットを作成し、その中にオブジェクトという単位でデータを扱います。
権限管理もバケット単位でのアクセスとオブジェクト単位でのアクセスで分かれています。

GCSはGCEよりもパラメータの選択が単純かと思いますので、それぞれ項目の画像などは割愛して説明をします。

・バケットの名前はグローバルで一意です(必ず誰かと被ってはいけない)

・配置場所は単一のリージョンにします

・ストレージクラスはAutoにします

・オブジェクトのアクセス権は均一にして、公開アクセスの防止のチェックは外します

・バージョニングと保持ポリシーはなしです

【補足】
・配置する場所には、Region、Dual-region、Multi-regionから選択できますが、これらは可用性に関係します。(障害復旧)

・ストレージクラスは、デフォルトの4つを選択した場合はには後からAutoに戻すことはできなくなります。逆にAutoからデフォルトの4つに変更可能です。

・均一を選ぶとバケット単位でのアクセス管理となり、公開アクセスの許可はインターネット(内向き通信)からのアクセスを可能にするためです。

・バージョニングは世代管理としての機能、保持ポリシーは最低限どのくらいの日数バケットを消さずに残しておくか、を決めることです。

色々説明を加えましたが、バケットのアクセス権とバージョニング、保持ポリシー、公開アクセスは後から変更可能なのでとりあえず作成してみるのもOKです。

Cloud Storage FUSEをマウント

ここからはサービスアカウントの認証を使用して、GCE ⇆ GCSの相互通信を行うためのマウントを行います。
Cloud Storage FUSEの概要については、左記URLから公式ドキュメントを確認ください。

インストール

まずはコンソールからGCEにSSH接続をしていきます。
インスタンス名からみて1番右の方にSSHというボタンがあるので、それを押すと接続されます。

下記の公式のGitHubを参考に、GCEにCloud Storage FUSEをインストールしていきます。
GoogleCloudPlatform/gcsfusePublic

マウントするディレクトリの作成

var/www/html/配下に、今回のGCSをマウントさせるディレクトリを作成します。
私の場合、SSHでGCEにログイン後、ホームユーザーのディレクトリに接続されます。

var/www/html/に移動する為には、
cd ../..でルートに移動したのち、varより下のディレクトリに下がっていくと分かりやすく移動できます。

今回はvar/www/html/test_dir内にマウントしていきます。

起動スクリプトの追加

GCEを停止した時に、ストレージのマウントが外れる恐れがあるため毎度起動時に実行するスクリプトを記入していきます。

下記、黄色枠内のコマンドの順序です。
sudo gcsfuse -o allow_other [ストレージバケット名] /var/www/html/[マウントするディレクトリの名前]

#! /bin/bash

sudo gcsfuse -o allow_other my-test-strage /var/www/html/test_dir

VMを停止する

上記のコマンドを実行した後に、VMを停止します。下記画像のように、メタデータ[自動化][起動スクリプト]内に記入していきます。

保存すると、反映されています。

index.phpの中身を確認

この作業はしなくても問題ありませんが、勉強のため見ておきます。
再度GCEにSSHでログイン後、cd var/www/htmlで移動し、index.phpの中身を見ていきましょう。

cat index.php

すると、下記画像のように無事にGCSがマウントされていることが確認できました。(白枠の中にhttps://storage.googleapis.com/my-test-strage/~を確認出来ます)
Google Cloudのコンソール画面に戻り、VMの外部IPを押すことでも画像のURLに飛ぶことも可能です。

まとめ

今回はUdemyで実施したハンズオンの備忘録も兼ねて、少しポイントも伝えながら初心者の方向けに解説をしていきました。
今回はなるべく安くリソースを作成する観点も加えて作成しました。
GCEのストレージとしてGCSをマウントすればオブジェクト単位では安くなりますし、その中でVM自体の性能もSPOT VMやブートディスクに標準ディスク(HDD)を選択すると、月2$~3$の間で使用できます。(←VMのみの料金)

ただ、それだけ性能は落ちるのでディスクI/Oや24時間継続して運用するVMには今回の設定は向きません。
このように実際にリソースを組み合わせて構築してみると用件を考える力もつくかもしれません。

また、Google Cloudの個々のリソースをある程度知った上でハンズオン、が個人的にはいいかな、と思いました。(でも人によりけり)

最後に

前職が元パーソナルトレーナーであったため、ダイエット情報や筋トレ情報を積極的に配信したいと思っています!!IT=脳=運動=体調管理⇒全ては繋がっています。

【筋肉がつかない理由④】

糖質が足りていないことが多いです。
なぜ糖質が必要か??

その答えは単純です。糖質を摂取した時に、筋肉を大きくするホルモンが分泌されるからです。
このホルモンはタンパク質を摂取した時にも出ますが、糖質がより多く分泌されやすいです。

そのものの名前はインシュリンです。
また、分かりやすいように筋肉を大きくするとお伝えしましたが、詳しく言うと身体の合成を促進させるという意味になります。
よって、脂肪も合成してしまうので、←これが糖質は太るとメディアなどが伝える所以となります。

ということで、糖質の取り方を詳しく聞きたいく、マッチョになりたい人は私に相談してください

あ、もう自分パーソナルトレーナーやってなかったわ。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.