S3、使ってますか?
私 S3 好きですが、たまに思います。**HTTPS ほしい1**とか、Basic 認証ほしいとか。社内で使うにはバケットポリシーで十分ですが、お客様に見せるときに困ることあるじゃないですか?
かといって CloudFront を HTTPS や閲覧制限のためだけに用意するのも・・
EC2 ・・え、ここにきてサーバー使う・・・?っていう。
なので(Nginx や HAProxy よりも Docker で使いやすく)
それらの課題に対処できる軽量ツールを作りました。
Docker イメージ2
2パターンあります。
-
pottava/s3-proxy
バケットにアクセス権のある クレデンシャル3 さえあれば OK
(静的 Web サイトホスティングの設定などは不要)
# 必須の環境変数は `AWS_S3_BUCKET` のみ
docker run --rm -p 443:80 \
-e AWS_REGION=ap-northeast-1 \
-e AWS_S3_BUCKET=my-bucket \
-e AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE \
-e AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/bPxRfiCYEXAMPLEKEY \
-e HTTP_CACHE_CONTROL="no-store, no-cache, max-age=0" \
-e HTTP_EXPIRES="Thu, 01 Jan 1970 00:00:00 GMT" \
-e BASIC_AUTH_USER=username \
-e BASIC_AUTH_PASS=password \
-v `pwd`/certs:/certs \
-e SSL_CERT_PATH=/certs/cert.pem \
-e SSL_KEY_PATH=/certs/key.pem \
pottava/s3-proxy
-
pottava/proxy
PROXY_URL に指定した4 Web サイトに リバースプロキシ
(静的 Web サイトホスティングの設定が必要)
# 必須の環境変数は `PROXY_URL` または `PROXY_PATTERNS` のみ
docker run --rm -p 443:80 \
-e PROXY_URL="http://web.s3-website-ap-northeast-1.amazonaws.com" \
-e BASIC_AUTH_USER=username \
-e BASIC_AUTH_PASS=password \
-v `pwd`/certs:/certs \
-e SSL_CERT_PATH=/certs/cert.pem \
-e SSL_KEY_PATH=/certs/key.pem \
pottava/proxy
いずれも Go 1.6 で実装しているため、SSL/TLS を有効にした(SSL_CERT_PATH と SSL_KEY_PATH を渡した)場合、地味ですが、HTTP/2 での接続 になります。
Arukas で使ってみる
Arukas のエンドポイントは デフォルトで https なので
上述サンプルのような SSL/TLS 証明書やその指定は不要です。
1. アカウントの作成
まだ β 期間中なので無料で利用できます!
https://arukas.io/
2. アプリケーションの作成
https://app.arukas.io/ で「新しいアプリケーションを作成」
3. アプリケーションの設定
必要な項目を埋めて「アプリケーションを作成」します。
項目 | 値 | |
---|---|---|
App Name | てきとうに | |
Image | pottava/s3-proxy | |
Instances | そのままでOK | |
Memory | どちらでも | |
Endpoint | てきとうに | |
Port | 80 TCP | |
ENV | AWS_REGION | S3 リージョン |
AWS_S3_BUCKET | S3 バケット名 | |
AWS_ACCESS_KEY_ID | AWS アクセスキー | |
AWS_SECRET_ACCESS_KEY | AWS シークレットキー | |
BASIC_AUTH_USER | Basic 認証ユーザー名 | |
BASIC_AUTH_PASS | Basic 認証パスワード |
4. アプリケーションの起動
トップページから、いま作成したアプリケーションを起動してみます。
5. エンドポイントへの接続
アプリケーション詳細画面で「アプリは起動状態です」と表示されたら
以下の URL にアクセスしてみます。
Basic 認証かかりました?
Arukas、無料でこれができたらもちろんうれしいのですが
将来有料になっても、分単位の課金であればありがたそう!!
-
/ を /index.html などと解釈してくれる静的 Web サイトホスティングで。 ↩
-
それぞれ Docker イメージではなく、クロスコンパイルしたバイナリとしても配布しています。pottava/s3-proxy & pottava/proxy ↩
-
EC2 上であれば、インスタンスロールでも動作します ↩
-
複数のターゲットを指定し、仮想ドメイン・パスでの振り分けもできます。こんな
PROXY_PATTERNS="/static=http://assets.cdn,*.example.com=http://app.io,*=http://sorry.com"
↩