> > > AWS CodeCommitの費用の比較とポリシーの比較

AWS CodeCommitの費用の比較とポリシーの比較

2015-09-10 19:56 - NozawaTakeshi

こんにちは。インターエデュ・ドットコムの野澤です。弊社ではめでたく(?)Gitを使っているのですが、これまで自前でローカル環境にGitサーバを構築してホスティングしていました。ところが、結構デカイコンテンツをプッシュしておくと、クローンする際にかなりサーバのCPUリソースを消費するので、サービス稼働しているサーバから切り離したいなぁと思っていました。

レポジトリは当然公開したくないのでGitHubだと駄目だしなぁ。

今回AWSの利用も考えているのですが、AWS CodeCommitなるものを見つけました。サービスもAWSで使うなら、何かしら他サービスとの連携が取れそうなので試してみました。

下記、価格やサービスの利点、ポリシー(権限)を整理してみました。

価格の比較

 

  • アクティブなユーザー 1 人につき 1 USD/月。
  • 10 GB のストレージ/月
  • 2,000 件の Git リクエスト
  • 月額 0.06 USD/GB

だそうです。

10名なら月10ドル(1,200円)。年間で14,400円です。ちなみにt2.microで自分で構築したとしても1年間のリザーブドインスタンス(SSD:100GB)で32,400円。半額以下で、しかも面倒なバックアップやユーザーの権限設定なども結構省けます。参考までに、GitHubエンタープライズだと年間250ドル(3万円くらい)です。

サービス 年間費用
AWS CodeCommit 14,400円
EC2 t2.micro(年間リザーブドインスタンス) 32,400円
GitHub Enterprise 30,000円

※1ドル120円で換算
※10名の場合

人数が多くなればなるほど、自前で構築したほうが安上がりかもしれませんね。費用だけを見れば。

ちなみにまだCodeCommitはAWSの他のサービスとの連携は無いみたいです。今後Elastic BeansTalkやCodeDeployなどと連携できるようになるとありがたいですね。ちなみにElastic BeansTalkはGitHubからデプロイできるようですね。

ここから考えるとCodeCommitはサーバをAWSで運用はしているが、Elastic BeansTalkほどがっちりしたデプロイの仕組みや、サーバ運用の仕組みは必要としてなく、単純にgitサーバが欲しい方に向いていると思います。もしAWSでないならGitHubでももちろんいいと思います!

ただしAWSを使っているならIAMなどでユーザー管理できるのでちょっと便利なのかな・・・。

ポリシー比較

 

ここが本題なのですが、実際に構築してみてどういったポリシーを当てるか迷いました。CodeCommitにはデフォルトで下記の3つのポリシーが用意されています。

  1. AWSCodeCommitPowerUser
  2. AWSCodeCommitReadOnly
  3. AWSCodeCommitFullAccess

もちろん全ユーザーがFullAccessでもいいのでしょうが、なんかね。

ちゃんと理解しようと思ってマニュアルを見てみたのですが、非常に見にくい!ということで表にしてみました。

カテゴリ アクション ポリシー
full access power user read only
ブランチ関係 CreateBranch
GetBranch
ListBranch
UpdateDefaultBranch
pull&push GitPull
GitPush
レポジトリ関係 BatchGetRepositories
CreateRepository
DeleteRepository
ListRepositories
GetRepository
UpdateRepositoryDescription
UpdateRepositoryName

表からも明らかなのですが、PowerUserでできないのはレポジトリの削除だけなんですね。

そうするとgitを使って作業をする人にはPowerUserで十分だということが分かります。逆に誰でも削除できてしまったら確かにちょっと怖いですもんね。レポジトリを削除できるような人はどちらかというとシステム管理をする人たちだけで十分ですから、フルアクセスはそういった人たちだけに絞るべきだと思います。

一方ReadOnlyは結構できないことが多いですね。結論としてはサーバ側でgit pullをメインで使うユーザーに向いているのかなと思いました。弊社はサーバ側でgit pullしてデプロイしていますが、確かにそのユーザーがプッシュしたりレポジトリを作ることはありませんし、単純にブランチが見えたり、プルできればいいわけですしね。

以上、簡単ではありますがまとめでした。