いまさらながらAWSのマネージドgit repositoryサービス code commit を触ってみた。
gitリポジトリの選択肢はいろいろある
・SaaS系[特化型] (例:GitHub、BitBucket、backlog)
・SaaS系[クラウドベンダ製] (例: AWS codecommit、GCP Cloud Source Repositories )
・OSS系(例:gitbucket, GitLab)
また、GitHubなどSaaS系でも、オンプレミス環境で設置可能なEnterprise版もあり、どの環境で利用したいか(パブリックでもOKなのか、プライベートに閉じるのかなど)セキュリティ要素も加味すると選択肢も変わる。
https://aws.amazon.com/jp/codecommit/
http://aws.typepad.com/sajp/2017/03/aws-black-belt-online-seminar-aws-code-services-slides_qa.html
codecommitの特徴はおそらく
・アクセス制御をIAMで管理できる
・マネージド(インスタンス管理・パッチ適用等が不要)
・AWS SNSやCodeBuild、Lambdaなど、AWSの他サービスとの親和性
あたりでしょうか
ちなみにGitHubやそのcloneのgitbucketなどでおなじみのFork機能はありません。
ざっくりとした利用までの流れとしては
- AWSコンソールのCodeCommitで、リポジトリを作成する
- 利用者は個々にIAMページで、リポジトリアクセス用の認証情報(SSH公開鍵)を登録する。また対象IAMユーザにCodeCommit利用に必要なポリシー設定をしておく。
- あとは個々にローカル環境にgit cloneして利用
注意点としては、現時点でCodeCommitはパブリックアクセスが前提で、東京リージョンの場合は
git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/XXX
というエンドポイントに対して、httpsかsshで接続することになる。
PrivateLink / VPC Endpointには対応していない。
完全にclosedな環境や、一切のパブリックアクセスを認めたくない場合は、PrivateLink / VPC Endpoint対応を待つ必要がありそう。
VPC的な要素を置いておく場合、例えばgithub + jenkinsのような、ソースコードバージョン管理→テスト&ビルド→デプロイのようなCI/CDフローを、CodeCommitとCodeBuildなどを組み合わせてマネージドで実現できる。
また、SNSの連携で、プルリクがあったことをメールで通知したりもできる。
コスト面は、毎月5アクティブ ユーザーまでは無料の枠もあり、追加分は 1USD/月/user(10GB/月、2,000 Gitコマンドの発行)とお得。
なお、リポジトリデータはKMS暗号化される。