AWS
ぶっちゃけ技術検証で途中まで書いたのだけど、当面使いそうに無いのでココという蔵に「お蔵入り」です。
必要なもの
- AWS SDK for PHP
- AWSのアクセスコード
サンプルコード
- AWS SDK for PHPはComposer等を使用せずに直接展開、 lib/ 以下に配置しています。Composer使った方が楽ですが、シェルログインできない環境の場合は手作業で配置した方が状況把握できてよいので。
- バケット名は aws-test.logicalrabbit.jp 。予め作成しておきませぅ。
認証
<?php require 'lib/aws-autoloader.php'; use Aws\S3\S3Client; $s3client = new S3Client( [ 'region' => 'ap-northeast-1', 'version' => '2006-03-01', 'signature_version' => 'v4', 'credentials' => [ 'key' => [アクセスキー], 'secret' => [秘密鍵], ], ] ); ?>
オブジェクト一覧の取得
テーブル化して一覧にしています。
<table> <tr> <th>Key</th><th>Size</th><th>Last modified</th> </tr> <?php $result = $s3client->listObjects( [ 'Bucket' => 'aws-test.logicalrabbit.jp', ] ); foreach( $result['Contents'] as $content ) { echo '<tr><td>' . $content['Key'] . '</td><td>' , $content['Size'] . '</td><td>' . $content['LastModified'] . '</td></tr>'; } ?> </table>
オブジェクトの追加
取り敢えず lib/ 内に展開前のaws.zipがあったので、それをアップロードしてみるなど。アップロード成功の有無確認として、ETagを画面に表示します。
<?php $reader = fopen('lib/aws.zip', 'r'); $result = $s3client->putObject( [ 'Bucket' => 'aws-test.logicalrabbit.jp', 'Key' => 'aws.zip', 'Body' => $reader, ] ); fclose( $reader ); echo '<p>Uploaded a file. ETag = ' . $result['ETag'] . '</p>'; ?>
この後で再度オブジェクト一覧の取得を実行すれば、オブジェクトが増えているのが確認できる筈。
開発作業スペース 兼 プライベートgitリポジトリを新規確保したいのだけど、有料プランでいくつか選択肢があるのでどれにするか検討した次第。
この手のものは定期的に再検討しないと状況が変わってきたりすることと、今後開発業務の副業を本格化していく見込みで、作業スタイルを見直す必要があるため。
目的・用途
- 開発作業スペース
- やりっぱなしにできると便利 = 常時稼働
- (常時稼働の場合)そこそこ安心感のある自動バックアップ体制
- とはいえきちんと作業してまめにリポジトリへcommitすれば、作業の区切りで初期化しても問題ないはず
- git リポジトリ
- 常時稼働
- そこそこ安心感のある自動バックアップ体制
- リリース前テスト環境
- 開発作業スペースから独立したクリーンな環境が望ましい
- VMで構築して都度初期化したほうが確実かも = VM稼働環境が必要
候補とその利点・欠点
候補 | 利点 | 欠点 |
---|---|---|
レンタルサーバー(VPS or クラウド or 物理) | 開発環境+gitリポジトリ | (初期費用合わせて)1000円くらい/月 |
自宅サーバー | 開発環境+gitリポジトリ+VM稼働環境 | 初期費用大きい、電気代かかる |
githubの有料プラン | 比較的安価 | 開発環境は置けない |
Amazon EC2 | 開発環境+リリース前テスト環境。使わないとき止めておけば安価? | EC2止めてもEBS料金は発生。連続稼働だとやはり高め。 |
試算
2コア、メモリ2GB、50GB ディスク程度を目安とする。1ドル=123円として計算。
候補 | 試算 | 備考 |
---|---|---|
さくらのVPS | 初期費用1500円+900円/月 | 2コア、メモリ1GB、HDD 100GB |
ConoHa | 900円/月 | 2コア、メモリ1GB、SSD 50GB |
GMO VPS クラウド | 初期費用4000円+934円/月 | 3コア、メモリ2GB、HDD 100GB |
自宅サーバー | 2,000円/月 | ハードウェアはあるので電気代 |
github有料プラン(micro) | $7/月 ≒ 861円/月 | 開発環境は別に必要 |
Amazon EC2 ( EC2常時稼働 ) | $23.04/月 ≒ 2,833円/月 | t2.micro + 50GB HDD EBS |
Amazon EC2 ( EBSを永続 ) | $4/月 ≒ 492円/月 | 50GB HDD、別途開発環境使用時にはEC2の代金もかかる |
Amazon EC2 ( S3にアーカイブ ) | $4.75/月 ≒ 585円/月 | 50GBで計算しているが実際にはもっと少なくなるはず |
まとめ (まとまらない)
やっぱりVPSを借りてしまった方が楽か、はたまたそれほど頻繁には使用しないと見越してEC2でやるか、といったところか。しかし頻繁に使用しないなら自宅サーバーで良い気もしてくる。電気代2000円/月は多めに見積もっているので、実際はもっと少ないはずだし。EC2で始めて結局連続稼働時間が長くなったりすると負け確定になる。
リリース前テスト環境は頻繁・長時間使用するものではないはずなので、EC2環境で良いと思う。
技術習得というところから考えると、敢えてEC2+github有料プランというところ。金額的な面で現実的なのはConoHa VPS + github有料プランあたりと結論づけたい。
結局
EC2で毎回初期化・運用環境を整えたほうが検証がやりやすいので、小規模な確認作業はEC2でやるようになってきた。後はいかに手早くかつ手をかけずに必要な環境を整えるか、というところだけど、なんかそういう技術は既にあった気がしている。今のところ手動でも数分で終わるセットアップなので、手を出すには大仰すぎるけど。