P104 署名付きURL

S3には署名付きURLという機能が存在し、これを用いれば簡単にある特定の人に対してのみダウンロード可能なサイトを用意できる。
署名付きURLは作成したユーザーに成り代わってアクセスする機能なので、安全面を考えると、既存のIAMユーザー権限で生成するのではなく、特典ダウンロード専用IAMユーザーなどを作って、そのユーザーで署名URLを発行するのが望ましい。もしくは、都度ユーザー(専用ユーザー1,2,3…)を作成して、それぞれに対して短い期限を設定するなど。
CloudFrontでは、更に一定日時以降しか閲覧できない、一定日時までしか閲覧できない、特定のIPアドレスからしか閲覧できないなどの条件も設定可能である。

Amazon Web Services完全ソリューションガイド

Amazon Web Services完全ソリューションガイド

分散システム関連

トレンドになっていたので。
2フェーズコミット中にサーバーがこけた場合はどうなるんだろうと考えていたけど、やはり不備るケースっていっぱいあるんですね。。

www.slideshare.net

(関連参考資料)
ビザンチン将軍問題 - Wikipedia
sharply.hatenablog.com

分散システム (未来へつなぐデジタルシリーズ)

分散システム (未来へつなぐデジタルシリーズ)

P123 Pythonからメールを送信する

・emailモジュールとsmtplibモジュールを利用
SMTPサーバとしてGmailのサーバーを使うのがお手軽であるが、認証が必要で、さらにTLS/SSL利用が必須なのでSMTPの代わりにSMTP_SSLを利用する必要が有
OP25Bに対応するためにはP323の様な実装が必要

P122 Voluptuous

Pythonの基本的なデータ型を定義できるライブラリ
Schemaオブジェクトでスキーマを定義し、関数として呼び出すことで引数のオブジェクトのバリデーションを実施可能

P117 @retryデコレーター

リトライ処理を簡潔に書けるライブラリ

# stop_max_attempt_number:最大リトライ回数
# wait_exponential_multiplier:指数回数的(1,2,4,8…)なwaitを仕掛ける事ができ、初回のウェイトをミリ秒単位で指定
@retry(stop_max_attempt_number=3, wait_exponenntial_multiplier=1000)

国立国会図書館法

・国・地方公共団体等の公的機関がインターネット上で公開している資料を、国立国会図書館が収集できる。(国立国会図書館法第二十五条の三)
国立国会図書館が法律に基づきインターネット資料を収集することについては、著作権者の許諾を要しない。(著作権法第四十二条の四)
・インターネット上で公開している資料が収集の対象である。(一般に公開されている資料が対象ですので、LANやWANでのみ公開しているものは対象とはなりません。)
・収集対象機関ウェブサーバの負荷軽減のため、ダウンロードの間隔は1秒以上あけて収集を行う。
・。アクセス制限を行っている場合は、次々頁を参考に、国立国会図書館による収集を許可する設定をrobots.txtに追加する必要がある。(国立国会図書館法第二十五条の三第二項に定められた「必要な手段」にあたり、収集の対象となる機関は設定の追加の義務がある。)
(国立国会図書館国立国会図書館法によるインターネット資料の収集について)
http://warp.da.ndl.go.jp/bulk_info.pdf

subminでリポジトリを作成しようとするとsvnモジュールが無いというエラーが発生する

[事象]
subminを用いてSVNを構築を行った。
submin上の画面で新規にリポジトリを作成すると以下の様なエラーメッセージが発生してリポジトリが作成できなかった。

Failed to import python 'svn' module. please install.
(中略)
Traceback (most reent call last):
(中略)
  File "/usr/lib/python2.7/site-packages/submin/plugins/vcs/svn/repository.py" , line 96, in __init__
    raise VCSImportError ("Failed to import python 'svn' modle, please install")

同じ様な事を悩んでいる人も居るようであるが、特にWeb上色々ぐぐりまくったがドンピシャの解決案が見つからず。そんなところで詰まっている人はどうも少なそう。。
www.oschina.net


[環境]
CentOS 7.2
Apache 2.4
・submin2 2.2.2.1
python 2.7
pythonパッケージのsvn0.3.5

[インストールに参考にしたリンク先]
[CentOS]Submin2でSVNサーバをブラウザで管理する | ごった煮 - tips about programming and building a server
qiita.com

[原因]
python-subversionというパッケージのインストール漏れであった。
何度も何度も色々なサイトのインストール手順を丁寧に繰り返したが、いずれもfailed,failed,failedというメッセージが表示されるだけでは解決しなかった。
CentOS7の固有問題なのか。

[対応方法]
CentOSの場合は、subversion-pythonというパッケージをインストールする事で無事解決した。

yum -y install subversion-python

[参考リンク先]
serverfault.com

[補記:subminインストール時に助かるTips]
(subminをSVNにしか利用しない場合)
これを行っておかないと、偶発的(?)にgit_userがうんちゃらかんちゃらと怒られる場面が発生した。(ディレクトリの権限が誤っていた場合などで発生する?)

submin2-admin var/lib/submin/ config set vcs_plugins svn

(パスワードの初期化)
メールサーバーをインストールしない場合、メールが見れない可能性がある。
その場合に直接sqlite3を覗くことでパスワード入力を回避できる。

sqlite3 /var/lib/submin/conf/submin.db
select * from password_reset;

検索した結果、1|1234567890|z123~hogeみたいな文字列が表示されるので、一番後ろのz123~hogeという文字列を控えておく。
その後、ブラウザに対して、 http://ホスト名/submin/password/admin/先ほど控えた文字列 でアクセスする。
するとadminでログインできた状態を得れるので、再度同一セッションで http://ホスト名/submin/ でアクセスするとadmin権限で管理コンソールに入れる。その後、パスワードを設定すればよい。

(ディレクトリの権限)
subminをインストールしたディレクトリや、SVNリポジトリ権限が書き込み可能な権限になっているか確認する。(apacheユーザーが所有者になっていればOKと考えているが合っているかな…?)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

Gitがこわい

Gitがこわい