AWS CodeCommitを使うためにIAMユーザーを設定する

# AWS CodeCommitを使うためにIAMユーザーを設定する

AWS Code Commitはgithubやgitlabと同じソースコード管理サービスですが、githubやgitlabの様な管理サービスのアカウントでログインすればリポジトリを使用できるというわけではなく、最初戸惑うこともあるので説明します。

AWSのドキュメントである[Git 認証情報を使用した HTTPS ユーザーのセットアップ](https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-gc.html?icmpid=docs_acc_console_connect_np)に「AWS CodeCommit リポジトリへの接続を設定する最も簡単な方法は、IAM コンソールで CodeCommit の Git 認証情報を設定し、HTTPS 接続にこれらの認証情報を使用することです。」と書かれている通り、IAMユーザーでログインすることになります。

個人でAWSにアカウントを作成している人であればIAMユーザーに管理者権限であるAdministratorAccessなどが紐づけられていてCode Commitを利用する権限が紐づいています。

企業でアカウントを利用している場合、管理者がAWSCodeCommitPowerUser又は[AWSCodeCommit の 管理ポリシー](https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/security-iam-awsmanpol.html)を参考に権限を付加してください。

### IAMユーザーにCode CommitのSSHキーを登録する

githubや、gitlab, gitbucketなどのソースコード管理サービスにコマンドラインからアクセスする場合、都度ユーザー名、パスワードを入れて認証するのは煩わしいため、予めユーザーの公開鍵を登録しておきsshを使って暗号鍵で認証することで認証フェーズをコマンドで入力しなくてもサービスを使うことができます。
このSSHキーは、ssh-keygenなどのコマンドで作成しておきます。
[gitのリポジトリ、ソースコード管理サービス登録用sshキーの作成](https://qiita.com/kaorunix/items/dacb0122898c18ad6b57#git%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E7%AE%A1%E7%90%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E7%99%BB%E9%8C%B2%E7%94%A8ssh%E3%82%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90)にキーの作成方法を記載したので参考にしてください。

権限をつけてもらったIAMユーザーでログインし
[AWS IAMコンソール](https://console.aws.amazon.com/iam/)からIAMユーザーでログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/f9606c12-dc93-7339-5fcf-1c09bbe20729.png)

認証情報タブをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/b7f66727-34f5-4db7-271e-5b839a1e7216.png)

　AWS CodeCommitのSSHキー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/e76a55bd-fd24-1ba4-bcae-f49aae85bba8.png)

SSHパブリックキーのアップロードをクリックします。
パブリックキーというのは公開鍵のことです。公開鍵ファイルを開いてテキストを貼り付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/79e71005-c8fa-e555-427d-381137b14133.png)

公開鍵を登録するとSSHキーIDが生成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/80135bd7-c8ff-231b-fde8-eeeed7608726.png)

SSHキーIDを、sshのユーザーとして利用し、`$HOME/.ssh`に作成する設定ファイル`config`に次の様に記述します。

```
Host git-codecommit.*.amazonaws.com
        User XXXX（SSHキーID）XXXX
        IdentityFile ~/.ssh/codecommit_amazonaws_com.id_rsa
```

AWSコンソールよりCode CommitのSSHのリンクをクリックすると、git cloneのコマンドがクリップボードにコピーされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/699388cb-26c3-9854-db1a-4f7b8c6df947.png)

クリップボードをターミナルに貼り付けて実行します。
設定が正しければリポジトリがcloneされます。

```
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/repo-sample
Cloning into 'repo-sample'...
remote: Counting objects: 7, done.
Receiving objects: 100% (7/7), 5.07 KiB | 2.53 MiB/s, done.
$   
```

これでCodeCommitのgitリポジトリが使えるようになりました。

ssh-keygenのバージョンなどにより、生成した鍵のアルゴリズムが特定できなくてcloneできないことがある。その時、ホスト公開鍵`HostKeyAlgorithms` と  クライアント公開鍵　`PubkeyAcceptedKeyTypes`を次の様に指定してみてください。

```
Host git-codecommit.*.amazonaws.com
    User XXXX（SSHキーID）XXXX
    IdentityFile 
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa
```