AWS Cloud9 から CodeCommit を使うための設定

#AWS Cloud9でSSHキーを作成

AWS Cloud9からCodeCommitに接続する際にSSH接続を利用して通信を行うので、AWS Cloud9にてSSHキーの作成を行ってください。
下記のコマンドでSSHキーの秘密鍵「id_rsa」と公開鍵「id_rsa.pub」が作成されます。
「ssh-keygen」コマンドを実行した際に何回か入力を求められますが、何も入力せず全て「Enter」ボタンを押してください。

```
$ cd ~/.ssh
$ ls -ltr
total 4
-rw------- 1 ec2-user ec2-user 991 Jun 24 23:50 authorized_keys

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2qnJB9l9UxTk3G89FdzBJvkVEdltyUlyDFlFDk+vtms ec2-user@ip-172-31-18-137
The key's randomart image is:
+---[RSA 2048]----+
|             +#%^|
|             *+/O|
|             .*.B|
|              .o+|
|       oS.   .o.+|
|      oo... o. o.|
|      ..o  . ..  |
|     . o.     E. |
|      +.     ..  |
+----[SHA256]-----+
 
$ ls -ltr
total 12
-rw------- 1 ec2-user ec2-user  991 Jun 24 23:50 authorized_keys
-rw-r--r-- 1 ec2-user ec2-user  407 Jun 30 05:00 id_rsa.pub
-rw------- 1 ec2-user ec2-user 1679 Jun 30 05:00 id_rsa
```

#IAMにて作成したSSHキーを登録

AWS Cloud9にて作成したSSHキーの公開鍵「id_rsa.pub」をIAMに登録します。
下記のコマンドで公開鍵「id_rsa.pub」を表示しメモしておいてください。後の設定で必要になります。

```
$ cat ~/.ssh/id_rsa.pub
```

![01_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/5c06ca71-f971-f14a-de49-5003a047a894.png)

AWSにてIAMサービスを検索してください。
IAMはAWSのアカウントを管理するための仕組みで、SSHキーの登録などもこのサービスを利用して実施します。

![02_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/6a1a9833-f23f-5791-0ece-e5287fcba9a6.png)

IAMの画面左から「ユーザー」を選択してください。
画面右にユーザー名の一覧が表示されるので、自分のユーザー名のリンクをクリックしてください。
「ユーザー名」は後の設定で必要になるのでメモしておいてください。

![03_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/02c71135-7815-ff15-3d8e-2e63471f73ad.png)

ユーザーの管理画面が表示されたら「認証情報」のタブを選択してください。

![04_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/98af0a55-d97f-75d4-cfb6-03b4c4a7a115.png)

「認証情報」のタブを下にスクロールして行くと「SSH 公開キーのアップロード」というボタンがあるのでクリックしてください。

![05_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/60a3e5c2-dd6b-dbe5-bd25-33b7b11ef571.png)

SSH 公開キー貼り付けるためのウィンドウが表示されるので、公開鍵「id_rsa.pub」のコピーを貼り付け「SSH 公開キーのアップロード」ボタンをクリックしてください。

![06_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/fc391c68-bd32-daa2-43fa-580ed41ea866.png)

正常にSSH公開キーの登録が完了すると「SSH キーID」が表示されるのでメモしておきましょう。
後の設定で必要になります。

![07_IAMにて作成したSSHキーを登録.png](https://qiita-image-store.s3.amazonaws.com/0/131520/6c066872-e9ee-fe9a-b9ec-aac1e16ade87.png)

#CodeCommitにSSH接続するための設定

CodeCommitにSSH接続するために下記のコマンドで設定を行います。
[User]の項目には先ほどメモした「SSH キーID」を貼り付けてください。
[IdentityFile]には秘密鍵「id_rsa」を登録します。
最後にconfigファイルのパーミッションを設定します。このパーミッションの設定を行わないとSSH接続を実施した際に、認証が失敗するので注意してください。

```
$ vi ~/.ssh/config
Host git-codecommit.*.amazonaws.com
  User APK*********HA
  IdentityFile ~/.ssh/id_rsa

$ chmod 600 ~/.ssh/config
```

#gitの設定

CodeCommitはgitを利用しているので、gitを利用するための初期設定を行います。
[USER_NAME]にはIAMで登録されている「ユーザー名」を指定してください。
[USER_EMAIL]には「メールアドレス」を指定してください。

```
$ git config --global user.name [USER_NAME]
$ git config --global user.email [USER_EMAIL]
$ git config -l
```

![08_gitの設定.png](https://qiita-image-store.s3.amazonaws.com/0/131520/02f64ab2-15e5-56e5-554d-3e05b0846c5f.png)

#CodeCommitにリモートリポジトリを作成

CodeCommitにてリモートリポジトリを作成します。AWS Cloud9のコンソールから下記のコマンドを実行するとリモートリポジトリを作成することができます。今回は「MyDemoRepo」というリポジトリを作成しています。
リモートリポジトリの作成が正常に行われると、作成されたリモートリポジトリへの接続情報が表示されますのでメモしておきましょう。

```
aws codecommit create-repository --repository-name MyDemoRepo
```
![09_CodeCommitにリモートリポジトリを作成.png](https://qiita-image-store.s3.amazonaws.com/0/131520/56696d49-5f7a-8810-0df0-fa905d8c56ff.png)


#CodeCommitのリモートリポジトリをローカルにコピー

リモートリポジトリを利用するために、AWS Cloud9のコンソールから下記のコマンドを実行します。
最初にCodeCommitにSSH接続する際は、(yes/no)が聞かれますので「yes」を入力しましょう。
コマンドが正常に実行されるとCodeCommitからディレクトリがダウンロードされてリポジトリを利用できるようになります。

```
$ git clone ssh://git-codecommit.ap-southeast-1.amazonaws.com/v1/repos/MyDemoRepo
$ ls -ltr
```

![10_CodeCommitのリモートリポジトリをローカルにコピー.png](https://qiita-image-store.s3.amazonaws.com/0/131520/606448b4-8d21-9342-4aa5-29385dce6258.png)

以上