AWS CodeCommitを使うためにIAMユーザーを設定する
AWS Code Commitはgithubやgitlabと同じソースコード管理サービスですが、githubやgitlabの様な管理サービスのアカウントでログインすればリポジトリを使用できるというわけではなく、最初戸惑うこともあるので説明します。
AWSのドキュメントであるGit 認証情報を使用した HTTPS ユーザーのセットアップに「AWS CodeCommit リポジトリへの接続を設定する最も簡単な方法は、IAM コンソールで CodeCommit の Git 認証情報を設定し、HTTPS 接続にこれらの認証情報を使用することです。」と書かれている通り、IAMユーザーでログインすることになります。
個人でAWSにアカウントを作成している人であればIAMユーザーに管理者権限であるAdministratorAccessなどが紐づけられていてCode Commitを利用する権限が紐づいています。
企業でアカウントを利用している場合、管理者がAWSCodeCommitPowerUser又はAWSCodeCommit の 管理ポリシーを参考に権限を付加してください。
IAMユーザーにCode CommitのSSHキーを登録する
githubや、gitlab, gitbucketなどのソースコード管理サービスにコマンドラインからアクセスする場合、都度ユーザー名、パスワードを入れて認証するのは煩わしいため、予めユーザーの公開鍵を登録しておきsshを使って暗号鍵で認証することで認証フェーズをコマンドで入力しなくてもサービスを使うことができます。
このSSHキーは、ssh-keygenなどのコマンドで作成しておきます。
gitのリポジトリ、ソースコード管理サービス登録用sshキーの作成にキーの作成方法を記載したので参考にしてください。
権限をつけてもらったIAMユーザーでログインし
AWS IAMコンソールからIAMユーザーでログインします。
認証情報タブをクリックします。
AWS CodeCommitのSSHキー
SSHパブリックキーのアップロードをクリックします。
パブリックキーというのは公開鍵のことです。公開鍵ファイルを開いてテキストを貼り付けます。
公開鍵を登録するとSSHキーIDが生成されます。
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のコマンドがクリップボードにコピーされます。
クリップボードをターミナルに貼り付けて実行します。
設定が正しければリポジトリが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