Skip to content
This repository was archived by the owner on Dec 26, 2023. It is now read-only.

Commit f86b954

Browse files
authored
Update README.md
1 parent 82cc837 commit f86b954

1 file changed

Lines changed: 98 additions & 1 deletion

File tree

README.md

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,98 @@
1-
# gcs-basic-auth
1+
# gcs-basic-authとは
2+
3+
4+
gcs-basic-authは、Gooogle Cloud Storage(以下、GCS)のファイルをBasic認証をつけて公開するためプログラムです。
5+
Google App Engine(以下、GAE)にデプロイして使用します。
6+
7+
GAEにアクセスされるとBasic認証を表示し、認証されるとリバースプロキシのように動いてGCSのファイルをユーザに転送します。
8+
9+
# How it works
10+
11+
1.[Releases](https://github.com/ToMGitHubN/gcs-basic-auth/releases)からファイルをダウンロード OR クローン
12+
13+
2.ダウンロードしたファイルの設定(setting.yaml)を記載
14+
15+
設定の中の以下を編集
16+
17+
```yaml
18+
env_variables:
19+
# Google Cloud Storage Name
20+
BUCKET_NAME: 'hoge_bucket_name'#<-あなたが設定したGoogle Cloud Storageのバケット名
21+
#BASIC AUTH
22+
BASIC_AUTH_ENABLED: 'true'
23+
BASIC_AUTH_NAME: 'hoge_name'#<-Basic認証で入力させたいユーザ名
24+
BASIC_AUTH_PASSWORD: 'hoge_password'#<-Basic認証で入力させたいパスワード
25+
```
26+
27+
3.GAEのstandard(node)にデプロイ
28+
29+
4.GAEにアクセスして表示を確認
30+
31+
表示されない場合、IAMの権限が足りているか、stackDrive Loggingページを確認します。
32+
33+
```
34+
Management (IAM) API has not been used in project
35+
```
36+
37+
などが、出ているときは指示に従って権限を追加します。
38+
39+
40+
# その他設定系
41+
42+
```yaml
43+
env_variables:
44+
# Google Cloud Storage Name
45+
BUCKET_NAME: 'hoge_bucket_name'#<-あなたが設定したGoogle Cloud Storageのバケット名
46+
#BASIC AUTH
47+
BASIC_AUTH_ENABLED: 'true'#<-Basic認証の有効/無効切り替え (true:有効 false:無効)
48+
BASIC_AUTH_NAME: 'hoge_name'#<-Basic認証で入力させたいユーザ名
49+
BASIC_AUTH_PASSWORD: 'hoge_password'#<-Basic認証で入力させたいパスワード
50+
# Page Option
51+
DEFAULT_PAGE: 'index.html'#<-URLのファイルが存在しないときに表示する。ディレクトリ単位
52+
NOT_FOUND_PAGE: '404.html'#<-URLのファイルが存在せず、DEFAULT_PAGEも存在しないときに表示する。ルートに置く必要がある
53+
# Tranfer Option
54+
# TRANSFER_MODE List: ALL_DIRECT or ALLOW_DIRECT or ALLOW_REDIRECT
55+
# ALL_DIRECT : all file direct transfer
56+
# ALLOW_DIRECT : ALLOW_DIRECT_LIST extension direct transfer, other file redirect
57+
# ALLOW_REDIRECT : ALLOW_REDIRECT_LIST file redirect GCS, other file direct transfer
58+
TRANSFER_MODE: 'ALLOW_REDIRECT'#<-転送モード。ややこしいので、後述します
59+
# TRANSFER_MODE = ALLOW_DIRECT Only
60+
# extension of the target file
61+
ALLOW_DIRECT_LIST: '["html", "css", "js", "json"]'#<-後述
62+
# TRANSFER_MODE = ALLOW_REDIRECT Only
63+
# extension of the target file
64+
ALLOW_REDIRECT_LIST: '["mp4"]'#<-後述
65+
# GCP Option
66+
# transfer limit time
67+
# memo: 1 hour = 1000 * 60 * 60 = 3600000ms
68+
GCS_URL_LIFETIME: 3600000 #<-後述
69+
# DEBUG
70+
STACKDRIVER_DEBUGGER: 'false'#<-STACKDRIVERでデバッグしたいときに(false:デバッグしない)
71+
```
72+
73+
### 転送モードについて
74+
75+
設定のTRANSFER_MODE(転送モード)について説明します。
76+
77+
転送の基本的な動きは、ユーザがアクセスすると、GAEが `GCS->GAE->ブラウザ/ユーザ` と流れます。
78+
ただし、GAEのstandardは60秒しか動作しないため、巨大ファイルだと転送が間に合わない可能性があります。
79+
そこで、GCSの署名付きURL(一定期間のみ使用可能なURL)を使い、ファイル転送をGCSから行います。
80+
転送の流れが、 `GAE->(署名付きURL)->ブラウザ->(リダイレクト)->GCS->(ファイル転送)->ブラウザ` とすることで巨大ファイルの問題を解決できます。
81+
また、GCS->GAEと経由するより直接転送したほうが安くなります。
82+
ただし、HTMLを署名付きURLで取得すると、正常に機能しません。
83+
URLがGCSになるため、HTMLはGCSを起点にファイルを取得しようとし、失敗します。
84+
これは、CSSやJSにも当てはまります。
85+
86+
どのファイルをGCS署名付きURLを使うかの設定が転送モードです。
87+
88+
+ TRANSFER_MODE: 'ALL_DIRECT' => すべてのファイルはGAEを経由して転送
89+
+ TRANSFER_MODE: 'ALLOW_DIRECT' => ALLOW_DIRECT_LISTに記載したファイルのみGAEを経由して転送
90+
+ TRANSFER_MODE: 'ALLOW_REDIRECT' => ALLOW_REDIRECT_LISTに記載されていないファイルをGAEを経由して転送
91+
92+
ALLOW_DIRECT_LISTと、ALLOW_REDIRECT_LISTには、対象としたいファイルの拡張子を記載下さい。
93+
94+
また、署名付きURLの有効時間は、GCS_URL_LIFETIMEで設定できます。(初期値:1時間)
95+
96+
GAE転送する必要があり、60秒で間に合わない場合は、
97+
`app.yaml`の`env: standard` => `env: flexible`に変更することで接続時間を伸ばせます。
98+
ただし、サーバスケールが分速に遅くなるので、ある程度サーバ台数を確保しておく必要があります。

0 commit comments

Comments
 (0)