とか考えていたら
といわなちゃんさん先生に尋ねると、
なんということでしょう!
というわけで試してみました。
環境はVirtualBox上で
- CentOS 5.6(x86_64)
- Varnish 3.0.0
- libvmod-awsrest
という感じです。
公式RPMからふわっとインストールするのではなく今回試したようにrpmbuildとかやりだすと3.0.2ではどハマりして泣きそうになったので3.0.0で検証しました。
通常S3にマネジメントコンソールからファイルをアップロードすると、自身しかOpen/Downloadは出来ません。
EveryoneにOpen/Downloadを許可する設定を追加してもいいのですが、高貴な恥じらいの精神をもった紳士淑女には抵抗があるかと思われます。
そこで
な感じでヘッダを設定してやればいいのですがAWSSecretAccessKeyからハッシュ値を出してやらなければなりません。
それを簡単かつお手軽に可能にしてくれるのが今回いわなちゃんさん先生が作成したlibvmod-awsrestなのです!
それでは早速やってみましょう。
1.ソースをダウンロード
https://www.varnish-cache.org/releases/varnish-cache-3.0.0
2.展開して/usr/src/redhat/SOURCESに
必要なもの(https://www.varnish-cache.org/docs/3.0/installation/install.html#build-dependencies-on-red-hat-centos)は事前に入れておきます。rpm-buildとgccも当然必要です。
docutilsが必要なのでhttp://sourceforge.net/projects/docutils/?source=directoryからダウンロードして展開し
python setup.py install
してあげます。
3.RPM作成
とりあえずRPMだけ作成したいので、ソースディレクトリ内のredhatディレクトリから
rpmbuild -bb varnish.spec
してやります。specファイルのバージョン部分の修正が必要です。
4.インストール
適当にrpm ivhとかして下さい。
5.libvmod-awsrestインストール
mhashが必要なので事前にインストールしておきます。
ダウンロードはhttps://github.com/xcir/libvmod-awsrestから。
VARNISHSRCは/usr/src/redhat/BUILDでconfigure。
6.VCL編集
Varnishが使用するVCLを編集します。Exampleの通りで大体できると思いますが、backendの「.host」に指定するドメイン名にはバケット名を先頭につけてやらないとダメかも?
そんなこんなでAWSAccessKeyId、AWSSecretAccessKeyを記載してlookupしてやります。
お望みの通りファイルは取得できたでしょうか。
おまけ.隠蔽工作
高貴な恥じらいをもつ紳士淑女ならS3を使用していることをちょっと隠したいかもしれません。
S3からのレスポンス内のヘッダをvcl_fetchの中で
unset beresp.http.x-amz-request-id;
unset beresp.http.x-amz-id-2;
等としてやると謎めいた雰囲気をより一層醸し出せるかもしれません。
いわなちゃんさん先生本当にありがとうございました!
おまけのおまけ
Varnish 3.0.2だとvarnishtestでコケまくりました。
使用ポートのレンジを広げてもulimit -nを増やしてもsomaxconnを増やしてもテストの並列度?を1にしても(そもそもそれらが関係あるか分かってませんが)ダメでした。
0 件のコメント:
コメントを投稿