【AWS】CodeCommitを使ってみた

## はじめに
AWSのリポジトリサービス「CodeCommit」の使ってみました。
「HTTPS」と「SSH」のツーパターンりますが、今回は「SSH」のやり方になります。




## IAMの作成
### SSH用CodeCommitグループの作成
1. グループ名設定
![スクリーンショット 2017-10-06 1.12.03.png](https://qiita-image-store.s3.amazonaws.com/0/33165/b82a0672-8e0a-8e8c-8f66-bad23f3309d5.png "スクリーンショット 2017-10-06 1.12.03.png")
1. ポリシーのアタッチで以下の３つのポリシーを当てる
	- IAMUserSSHKeys
	![スクリーンショット 2017-10-06 1.15.47.png](https://qiita-image-store.s3.amazonaws.com/0/33165/23636a08-2133-4dfd-0914-417623538d13.png "スクリーンショット 2017-10-06 1.15.47.png")
	- IAMReadOnlyAccess
	![スクリーンショット 2017-10-06 1.16.11.png](https://qiita-image-store.s3.amazonaws.com/0/33165/a1a8275d-cd47-c599-5c41-4674b25d1a00.png "スクリーンショット 2017-10-06 1.16.11.png")
	- AWSCodeCommitFullAccess
	![スクリーンショット 2017-10-06 1.17.20.png](https://qiita-image-store.s3.amazonaws.com/0/33165/2dfb1e9b-56c3-cc87-2ab9-a2dca98f9757.png "スクリーンショット 2017-10-06 1.17.20.png")
1. 確認を押してグループを作成する
![スクリーンショット 2017-10-06 1.22.11.png](https://qiita-image-store.s3.amazonaws.com/0/33165/7c4e6e3b-a0ac-bf9f-3d6e-d891cddbe0fb.png "スクリーンショット 2017-10-06 1.22.11.png")


### SSH用IAMユーザを作成する
1. IAMユーザを「プログラムでのアクセス」で作成
![スクリーンショット 2017-10-06 2.22.49.png](https://qiita-image-store.s3.amazonaws.com/0/33165/266a6652-44fd-7f86-c1a3-447dd9444510.png "スクリーンショット 2017-10-06 2.22.49.png")

1. グループ指定では先程作成したグループを指定
![スクリーンショット 2017-10-06 2.24.12.png](https://qiita-image-store.s3.amazonaws.com/0/33165/7b37fb3e-7b0e-20a0-8778-16bf60937ac1.png "スクリーンショット 2017-10-06 2.24.12.png")

1. 確認画面で「ユーザの作成」を押して完了
![スクリーンショット 2017-10-06 2.24.55.png](https://qiita-image-store.s3.amazonaws.com/0/33165/64bffbc0-b78d-3ded-3264-658568e18d9a.png "スクリーンショット 2017-10-06 2.24.55.png")

1. 今回アクセスキーは使用しないため、削除する
	- アクセスキーの☓ボタンを押す
![スクリーンショット 2017-10-06 2.26.37.png](https://qiita-image-store.s3.amazonaws.com/0/33165/36182b90-88b3-72cf-1bf6-7d4bd4b28cd3.png "スクリーンショット 2017-10-06 2.26.37.png")
	- 確認画面にて「削除」を選択
![スクリーンショット 2017-10-06 2.27.17.png](https://qiita-image-store.s3.amazonaws.com/0/33165/74352408-f343-83fc-2273-65a3596f5c09.png "スクリーンショット 2017-10-06 2.27.17.png")
	- 削除されたことを確認する。
![スクリーンショット 2017-10-06 2.27.30.png](https://qiita-image-store.s3.amazonaws.com/0/33165/db58249e-6200-875e-160d-d978a15352bf.png "スクリーンショット 2017-10-06 2.27.30.png")

## 公開鍵とIAMの連携
### ssh-keygenコマンドで公開鍵の作成
* コマンドを実行し、Overwiteでyを入力する以外はすべてエンター。
* デフォルトだとid_rsaの名前で公開鍵が書かれたファイルができます。
* 今回はVisual Studio Codeを使ってます。
![スクリーンショット 2017-10-06 10.08.41.png](https://qiita-image-store.s3.amazonaws.com/0/33165/18dda4ec-464f-fd41-4363-6c7d3aa807af.png "スクリーンショット 2017-10-06 10.08.41.png")

### 公開鍵をCodeCommitのIAMユーザに登録する
1. ssh-keygenコマンドで作成した際に出来た、/Users/****/.ssh/id_rsa.pubの内容をコピーする。
	* id_rsa.pubはそのまま作成した場合の名称、作成時に入力していればその名前のファイル

1. 作成したIAMユーザのSSH公開キーアップロードに、コピーした公開キーをアップする。
![スクリーンショット 2017-10-06 10.21.34.png](https://qiita-image-store.s3.amazonaws.com/0/33165/d382e1cb-8d89-fa94-7822-da0fb2697f71.png "スクリーンショット 2017-10-06 10.21.34.png")
![スクリーンショット 2017-10-06 11.40.21.png](https://qiita-image-store.s3.amazonaws.com/0/33165/7732ae33-3abb-1bbe-0ced-02ffcf2614d4.png "スクリーンショット 2017-10-06 11.40.21.png")
1. 以下のように表示されればアップロード完了
![スクリーンショット 2017-10-06 11.41.33.png](https://qiita-image-store.s3.amazonaws.com/0/33165/ebea8789-92c0-d552-816f-d228366d887c.png "スクリーンショット 2017-10-06 11.41.33.png")

## SSH設定ファイルを編集
### Configファイル(~/.ssh/config) 編集
```
Host git-codecommit.*.amazonaws.com
  User (IAMに公開鍵を登録した際に発行されたSSHキーID)
  IdentityFile ~/.ssh/(公開鍵ファイル名[今回はid_rsa])
```
- IAMに公開鍵を登録した際に発行されたSSHキーID
![スクリーンショット 2017-10-06 15.05.38.png](https://qiita-image-store.s3.amazonaws.com/0/33165/fbd35995-5e0c-078f-8414-4104a234b641.png "スクリーンショット 2017-10-06 15.05.38.png")

- viコマンドでconfigファイルに書き込み
![スクリーンショット 2017-10-06 15.08.23.png](https://qiita-image-store.s3.amazonaws.com/0/33165/a94b695a-9f87-573c-64c0-1005e6726074.png "スクリーンショット 2017-10-06 15.08.23.png")

- 上記の内容を書き込んで保存
![スクリーンショット 2017-10-06 15.12.16.png](https://qiita-image-store.s3.amazonaws.com/0/33165/9d8dac08-23dc-f0e2-a055-79a7e0601c53.png "スクリーンショット 2017-10-06 15.12.16.png")

## CodeCommitへの接続
### リモートリポジトリの作成
* CodeCommitでリモートリポジトリを作成する
![スクリーンショット 2017-10-06 16.03.53.png](https://qiita-image-store.s3.amazonaws.com/0/33165/f38e106b-992c-e911-fc1b-4859650bb370.png "スクリーンショット 2017-10-06 16.03.53.png")

### git CloneコマンドでSSH接続
* 作成すると以下の画面が表示されるので、Git cloneコマンドをコピーする
![スクリーンショット 2017-10-06 16.04.43.png](https://qiita-image-store.s3.amazonaws.com/0/33165/17e00a2b-041c-2935-a4e5-2324a2110846.png "スクリーンショット 2017-10-06 16.04.43.png")

```
git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/sample_repository
```

* コピーしたgit cloneコマンドを入力、無事にリポジトリからコピーが出来たことを確認できました。
![スクリーンショット 2017-10-06 16.20.10.png](https://qiita-image-store.s3.amazonaws.com/0/33165/811f843d-f228-1e36-1f8e-497aa741c4c7.png "スクリーンショット 2017-10-06 16.20.10.png")


## 既存のローカルディレクトリをPUSHする場合
### ローカル環境でGitを用意

```
$ git init
Initialized empty Git repository in /(ディレクトリパス)/.git/
```

### リモートリポジトリの設定

```
$ git remote add origin ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Sample_Repository
$ git remote -v
origin  ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Sample_Repository (fetch)
origin  ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Sample_Repository (push)
```

### ローカルリポジトリにCommit

```
$ git add --all
$ git commit -m "first commit"
```

### リモートリポジトリにPush

```
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 272 bytes | 272.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Sample_Repository
 * [new branch]      master -> master
```

### CodeCommitにPushされていることを確認
![スクリーンショット 2017-10-06 22.20.40.png](https://qiita-image-store.s3.amazonaws.com/0/33165/b03480af-4458-736a-8c7f-0600399b4be1.png "スクリーンショット 2017-10-06 22.20.40.png")


## まとめ
GithubからCodeCommitに移行しようとおもったので作業しつつ記述
AWSのヘルプにも書いてある事だけど挿絵をさして自分がわかりやすいように残しました！
次はCodeCommitにPushしたらCodeDeployでデプロイ出来るようにしたいです。



## 参考ページ
[サルでもできるCodeCommit コピペでgit cloneするまで](https://qiita.com/shojimotio/items/8e5f9e0616bb5a67275d)