AWSのCodeCommit(gitレポジトリ、5ユーザーまで無料)を使ってみた

AWSのCodeCommit(gitレポジトリ、5ユーザーまで無料)を使ってみた

CodeCommit(git)
AWSでCodeCommit(git)を使うには、IAM(Identity and Access Management)で、IAMユーザ(HTTPS/SSH接続用)を作る必要がある。1AWSユーザーに対して、5000IAMユーザーまで作れる。

さらに、ユーザを作る前にCodeCommitグループを作って、AWS管理ポリシー(プリセットされた権限)を付与する。
https://qiita.com/hisayuki/items/ed9fc33fe22541a2ee4e

レポジトリ作成はボタン一発で作れる。

1, CodeCommit用グループを作って、CodeCommit用ポリシーをグループに付与
IAMサービス→グループ作成→グループ名:CodeCommitSSHOnly→
ポリシーのアタッチ
IAMUserSSHKeys
IAMReadOnlyAccess
AWSCodeCommitFullAccess

2, HTTPS経由(パスワード認証)でレポジトリにアクセスできるようにする。
IAMサービス→ユーザを追加→ユーザ名:codecommit_user(適当な名前)→「AWS CodeCommit の HTTPS Git 認証情報」
認証情報を生成ボタンを押すと、レポジトリ用のユーザ名とパスワードが生成されるので、それを使ってgit操作ができる。

3, レポジトリ作成
CodeCommitサービス→レポジトリ作成すると、HTTPS/SSHのクリックがあるのでHTTPSをクリック
レポジトリのURLがコピペされるので、Gitクライアントに必要なものはコレで完了。git操作ができるようになっているはず!!

公開鍵+SSHでgit操作を行う(こっちの方が一般的)
ユーザを作る時にプログラムによるアクセスを選ぶと、AWSの管理画面へはログイン出来ないので、git専用ユーザならこっちの方が良い。
どっちを選んでも、HTTPS/SSHの両方が利用できる。

作成手順
IAMサービス→ユーザを追加→ユーザ名:codecommit_user→プログラムによるアクセス
AWS API、CLI、SDK などの開発ツールの アクセスキー ID と シークレットアクセスキー を有効にします。にチェック。
→ユーザーをグループに追加で、先程作ったCodeCommitSSHOnlyを選択
→タグの追加は未入力のまま
ユーザの作成で、ユーザー名・アクセスキーID・シークレットアクセスキーが手に入った。
EC2からCodeCommitを使うならアクセスキーでも良いけど、ローカルPCから使うならいつもの公開鍵方式の方が一般的なので、公開鍵を作る。

windows10のコマンドプロンプトから接続する例
1, git for windowsを使う(インストールする)

2, 鍵を作る(ssh-keygenコマンドで鍵の名前を入力すると、カレントディレクトリに生成される。)
何も考えないでエンターキーを押し続けると、デフォルトのC:\Users\ユーザー名\.ssh\id_rsaファイルを上書きしてしまって、いままでのSSH接続先に入れなくなる。
なので、適当なファイル名を入力して上書きされないようにする(id_rsa_code_commitとか)
そうすると、C:\Users\ユーザー名\.ssh\id_rsa_code_commitとid_rsa_code_commit.pubというファイルが生成される。

3, 公開鍵(*.pub)の方をAWSのIAMユーザに登録する。
管理画面から、IAMサービス→ユーザ→認証情報タブ→「AWS CodeCommitのSSHキー」のSSHのパブリックキーのアップロードボタンを押して、公開鍵(*.pub)のテキストをコピペする。
公開鍵を登録すると、SSHキーIDが発行されるので、ユーザ名ではなく、このSSHキーID+秘密鍵でログインする。

4, ssh設定ファイル(~/.ssh/config)の編集して、接続ホスト毎にSSH鍵を使い分けるようにする。

SSHの接続には、IAMユーザー名じゃなくて認証情報タブにあるSSHキーIDを使う(紛らわしいけど、その上のアクセスキーIDではない!)

5,aws cli(コマンドプロンプトからAWSを操作できるCLIツール)をインストールする。MSIインストーラーがあるので次へ次へを押すだけ。

これでレポジトリにアクセス出来るようになった。
適当にファイルを追加して

CodeCommitのコンパネからレポジトリを見て、ちゃんとファイルが追加されているか確認してみる。

5, 今度はローカルのWin10でレポジトリ作成して、CodeCommitへpushしてみる。

どこへpushして良いのか分からない!というエラーなので設定する