###### tags: `GCP` `GCS` # Google Cloud Storage - 単一の統合型APIで、ストレージをアプリに統合できる - awsのS3と同じ - 動画や画像、フロントページの置き場 - オブジェクトのライフサイクル管理を使用して4つのストレージクラスを用意 - 価格とパフォーマンスの選択 バックアップ、画像、動画  ## Storageクラス 左に行くほど高い/速い - Multi-Region : 複数地域からアクセスする場合におすすめ - Regional : 単一リージョンでの運用でアクセスが多い場合 - Nearline : 安いけど遅い - Coldline : めちゃ安いけどめちゃ遅い # 1. 流れ 1. GCSを作成 2. 画像を上げて一般公開 3. GCEのhtmlから画像を見る 4. GCSをGCEにマウント、ストレージをサーバーから利用する - サービスアカウントを利用 - Cloud Strage Fuse で接続する # 2. Cloud Strageバケットを作成 menu > ストレージ. Storage > ブラウザ > バケット作成 **バケット名** は、世界に1つのユニークな名前にしなければならない -> バケット内のオブジェクトにurlを与えてアクセスできるため multi-regionでデフォルト設定で作る ## 詳細を見る バケット名をクリック ### 概要 作成日時やストレージクラス ### 権限 プロジェクトの編集者とオーナー > 所有者(読み書き) 閲覧者 > 読み取りのみ ### バケットロック ライフサイクルのルール追加 - 年齢(作成してからの時間) - 作成日 - ストレージクラス - 新しいバージョン などなどの状態を指定し、アクションを適用することで料金を安くする - 安いストレージに移す - 削除する # 3. GCSに画像を上げる プロジェクトのホームからStorageにアクセスしてみる ホーム > リソース > Storage ## ファイルをアップロード バケット選択 > ファイルをアップロード アップロードしたアイテム名をクリックするとアクセスできる。 ただし、公開アクセスは非公開となっているので、外部からはアクセスできない ## オブジェクトの権限の編集 アップロードしたファイル(オブジェクト) 単位で、読み取り権限を編集できる 1. バケット > オブジェクト > メニュー > 権限の編集 2. ユーザー / allUsers / 読み取り を追加 公開アクセスのパラメーターが、公開になり、リンクの鎖マークが表示される クリックすると、外部公開のurlにアクセスできる ### index.phpから表示する `<img src="">` で、バケットのurlを指定して表示する # 4. GCS を GCE のディレクトリにマウントする いちいち、画像を公開設定にするのは骨が折れる また、GCPの中だけで使いたい場合もある。 よって、GCE に GCS をマウントして使うことで上記を解決する。 linuxの機能である外部ディスクをディレクトリへマウント それをCloud Storageで行う ## サービスアカウント  サービスアカウントとは? GCPで作ったインスタンス(GCE, GCS)には、googleアカウントが作成されて紐付けられる これがサービスアカウント GCSのバケットに対し、GCEに紐付けられたgoogleアカウントで読み書きのフルアクセスを許可する ## GCEにストレージをマウント ### Cloud Storage FUSE 仮想サーバーインスタンスにストレージをマウントするためのライブラリ ## 手順 **前半. GCEインスタンスのサービスアカウント権限を編集** 1. Storageのバケットの公開権限を消す(allUsersを消す) 2. VMインスタンス > 停止 3. VMインスタンス > 詳細 > 編集 4. 一番下 > サービスアカウント > **各APIにアクセス権を設定** をチェック 5. ストレージの設定を、 読み取りのみ -> フル に変える 6. インスタンスを起動 **後半. Cloud Storage FUSE をインストールしてストレージをマウント** 1. 講義の添付ファイルのコマンドを実行する ``` export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get -y update sudo apt-get -y install gcsfuse ``` - 環境変数にGCSFUSE_REPOをexport - aptのリポジトリを追加 - apt key をダウンロードして追加 - aptをupdate - apt-getでgcsfuseをインストール 2. ストレージをマウント ``` cd /var/www/html/ sudo mkdir udemy-study sudo gcsfuse -o allow_other -o nonempty <GCS パケット名(urlでない)> ./udemy-study cd udemy-study sudo ls udemy-study/ ``` - /var/www/html ディレクトリに異動 - udemy-studyディレクトリを作成(ここにマウントする) - gcsfuseコマンド - マウントした中身を確認 ルートフォルダでの作業なので、 sudo(すーどぅー)を忘れない これで、ローカルのファイルとしてストレージを参照できる index.htmlの img src にも、相対パスで指定できる # 5. インスタンス立ち上げと同時にマウント インスタンスを停止/起動すると、マウントしたストレージが外れてしまう カスタムメタデータに、startup-scriptのラベルを追加すると、起動時にそのコマンドを実行するので 起動のたびにgcsfuseコマンドを実行する 1. VMインスタンス > 詳細 2. カスタムメタデータを追加 3. keyは "startup-script" 4. 値に以下のコマンドをシバン付きで入れる ``` #! /bin/bash sudo gcsfuse -o allow_other -o nonempty <GCS パケット名> /var/www/html/udemy-study ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up