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ではない!)
1 2 3 |
Host git-codecommit.*.amazonaws.com User Your-IAM-SSH-Key-ID-Here IdentityFile ~/.ssh/Your-Private-Key-File-Name-Here |
5,aws cli(コマンドプロンプトからAWSを操作できるCLIツール)をインストールする。MSIインストーラーがあるので次へ次へを押すだけ。
1 2 3 4 |
aws --version aws-cli/2.0.0dev5 Python/3.7.5 Windows/10 botocore/2.0.0dev4 git clone ssh://Your-IAM-SSH-Key-ID-Here@git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/レポジトリ名 |
これでレポジトリにアクセス出来るようになった。
適当にファイルを追加して
1 2 3 4 5 6 7 8 9 |
git add -A git commit -m "first commit" git push Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 208 bytes | 208.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/レポジトリ名 * [new branch] master -> master |
CodeCommitのコンパネからレポジトリを見て、ちゃんとファイルが追加されているか確認してみる。
5, 今度はローカルのWin10でレポジトリ作成して、CodeCommitへpushしてみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mkdir win_repo cd win_repo git init git add -A git commit -m "first commit" git push fatal: No configured push destination. Either specify the URL from the command-line or configure a remote repository using git remote add <name> <url> and then push using the remote name git push <name> |
どこへpushして良いのか分からない!というエラーなので設定する
1 2 3 |
git remote add origin ssh://Your-IAM-SSH-Key-ID-Here@git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/win_repo 変更の場合は、こうする。 git remote set-url --add origin ssh://Your-IAM-SSH-Key-ID-Here@git-codecommit.us-east-1.amazonaws.com/v1/repos/win_repo |