はじめに
業務で複数のAWSアカウントを扱っており、ソース管理のリポジトリ「CodeCommit」も複数アカウントにまたがったものを並行して使用しています。
そういった場合に「git clone」する際のSSHパス設定をどのように扱えば良いかを整理しました。
どういった方法があるのか
複数CodeCommitの管理方法を調べてみると、以下のような記事を発見しました。
「複数AWSアカウントのCodeCommitからgit cloneする際のssh設定についての覚書」
https://qiita.com/SpeakEasy/items/e92a494a3f6a5f81a74c
簡単に説明すると、SSHコンフィグに任意のホスト名を定義して、そのホスト名で「git clone」するという方法です。「aws1」「aws2」というホスト名をつけた例が記載されています。
git cloneする度にHost部分を書き換えるのがちょっと面倒なので、他にもっと良い方法がないか知りたいところ。
たしかにホストの書き換えを毎回するのは面倒ですね。。。
他の方法がないかGitコマンドのリファレンスを見ていたところ、SSHユーザ指定で「git clone」する方法を見つけましたので、その方法を説明します。
手順
CodeCommitのSSH接続手順
こちらはAWS公式ドキュメントに記載がありますので、詳細は省略します。
複数のAWSアカウントのCodeCommitを扱う場合は、公式の手順に従うと「~/.ssh/config」 の記載が以下のようになります。
# AWSアカウント1
Host git-codecommit.*.amazonaws.com
User A0000000000000000001 #SSHキーID
IdentityFile ~/.ssh/id_rsa
# AWSアカウント2
Host git-codecommit.*.amazonaws.com
User A0000000000000000002 #SSHキーID
IdentityFile ~/.ssh/id_rsa
Git Clone時のSSHパス設定
ホスト名の前に「SSHキーID@」を付けることによって、SSH接続ユーザを指定して「git clone」を行うことが出来ます。
# AWSアカウント1からgit cloneする場合
git clone ssh://A0000000000000000001@git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test_repo
# AWSアカウント2からgit cloneする場合
git clone ssh://A0000000000000000002@git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test_repo
この方法で、それぞれのAWSアカウントのCodecommitにアクセスすることが可能になります。
おわりに
前述のSSHコンフィグに任意のホスト名を指定し接続時のURLを変更して「git clone」する方法と比べると、SSHコンフィグの内容はシンプルにデフォルトのままとなります。
ただし、「git clone」時のSSHパスを変更しないといけないのは変わりないので、好みの方法を使用すれば良いと思います。
また、SourceTreeを使用する場合も、URL/パスにユーザ名付きのSSHパスを設定することで複数のAWSアカウントのCodecommitを使用することが可能です。