grasys blog

GCSとGCEを使って開発/StageなどでUnity AssetとかをIP制限しながら配布する

開発環境、Staging環境などでUnity AssetをIP制限かけながら配布したいを解決!

今までGCEでInstance立てて、nginxでHostしてPersistent Diskなんかで直接配布してたんだけど
本番はHTTP Load Balancer + Backend Bucketでやりたい・・・
なにしろDeployの流れが変わるというめんどくささw

そこでみつけたgcsproxy

すんごい簡単!
便利!

本番で使うわけじゃないし多少オーバーヘッドあってもいいよね
何しろDeployの流れを統一できる!!!


Setup

Requirements

  1. GCEのInstance ScopeにGCS許可が入ってること
  2. goがbuildこと
  3. gcsproxy
  4. nginx
  5. Firewall設定

build gcsproxy

goenvとかGOPATHとか説明してると長くなっちゃうので・・・

適当にどうぞ!

gcsproxy 起動方法

こんな感じ

gcsproxy -b 127.0.0.1:8090

[IP:Port]なんだけど8080, 8081とかは使ってたりすることあるんでここは
かぶらないように適当に

ただしnginxのconfigに合わせる必要があるのでそこは気がついといてください!

実際の利用の際には、InitScript書くかsystemdのUnitFile書いて下さい。

nginx config

以下一部

upstream gcsproxy {
  server                   '127.0.0.1:8090';
}

server {
  server_name _;
  listen 80;
  server_tokens off;
  access_log /var/log/nginx/access.log main;
  error_log /var/log/nginx/error.log error;

  # Limit Request Methods to GET|HEAD|PURGE
  # 変なことしないなら無くてもいい
  if ( $request_method !~ "GET|HEAD|PURGE" ) {
    return 405;
  }

  location / {
    proxy_pass             http://gcsproxy$uri;
  }
}

cache-controlとかは必要あれば入れてください。

あとはterraformとかなんでもいいけど
Google Developer ConsoleでFirewallを設定するだけ!

HTTPS化はHTTP Load Balancerなど使うなりしてください!


株式会社grasys(グラシス)は、技術が好きで一緒に夢中になれる仲間を募集しています。

grasysは、大規模・高負荷・高集積・高密度なシステムを多く扱っているITインフラの会社です。Google Cloud (GCP)、Amazon Web Services (AWS)、Microsoft Azureの最先端技術を活用してクラウドインフラやデータ分析基盤など、ITシステムの重要な基盤を設計・構築し、改善を続けながら運用しています。

お客様の課題解決をしながら技術を広げたい方、攻めのインフラ技術を習得したい方、とことん技術を追求したい方にとって素晴らしい環境が、grasysにはあります。
お気軽にご連絡ください。

株式会社grasys | 採用情報


採用情報
お問い合わせ