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

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 起動方法

こんな感じ

Plain text
gcsproxy -b 127.0.0.1:8090

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

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

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

nginx config

以下一部

Plain text
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など使うなりしてください!