ITトラブル解決録-CodeCommitで認証ができない-
つ~じ~です。先週回線の調子が悪くて記事アップできませんでした。
いい加減ブログのネタも尽きそうなので「好きなゲーム語り100選」とか載せちゃダメですか、ダメですね、そもそも100個も無いです。IT屋はITの話をしましょう。
さて、弊社でもちょくちょくAWSのCodeCommitの導入が進んでおり、私も日々仕様把握に明け暮れているのですが、最近とある現象にぶち当たったのでシェアいたします。
CodeCommitとは
CodeCommitはAWS(アマゾン ウェブ サービス)が提供しているGitシステムです。クラウド内のアセットを非公開で保存および管理しております。
https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/welcome.html
バージョン管理のために新たに導入しましたが、以下のような問題が発生しました。
なぜか認証できない?
インフラチームによってCodeCommitが構築され、さぁローカルPCにGitクローン作るぞ!と勢い込んだのですが、正規の仕様で実行しているはずのになぜかエラーになります。
そもそも本来であれば以下のような認証画面が出て、そこで認証情報を入力するのですが、この認証画面がまず出てきません。
つまり「勝手に認証をすっ飛ばしてしまっている」のです。その原因は以下の通りでした。
原因:CodeCommitの認証情報が「共通情報」としてPCに記録されていた
弊社ではすでに複数のプロジェクトがCodeCommitに対応しておりますが、1つでもCodeCommitの認証を実行してしまうと、PCの資格情報マネージャーに「CodeCommit用の認証情報」として保存されてしまっていることが判明しました。
認証処理をすっ飛ばしていたのは、この認証情報を勝手に使って認証を進めていたためです。認証情報はプロジェクトごとに違うため、当然認証は失敗します。これでは複数のプロジェクトのGitクローンを作ることができません。
一応この資格情報マネージャーの認証情報を毎回書き換えればその都度別のプロジェクトのGitデータを取り扱うことができますが、明らかに面倒な作業です。
そこで色んなサイトを検索し、以下の解決方法に辿り着きました。
解決:認証情報に名称を付ける
上記の参考リンクに対応方法が載っておりますが(コマンドプロンプトで名称を付ける方法)、せっかくなので本稿では少し違う方法を紹介してみます。
※以下、TortoiseGitの日本語版で紹介しております。
- ローカルPCにて、既にクローン作成済のGitデータがあるフォルダで右クリック→(Windows11デフォルト設定の場合は「その他のオプションを表示」)→「TortoiseGit」→「設定」
- 「Git」→「ローカルリポジトリ設定を編集」
- configファイルに以下の設定を記述し、保存する ※「project01」の部分は任意のワードでOK
[credential]
namespace = project01 - 設定メニューを「OK」押下で閉じ、その状態で同フォルダでGit関連処理を行う(プルなど)
- 再度認証情報を求められるので、当該フォルダのAWS接続用の認証情報を入力。
- Git関連処理が完了する。資格情報マネージャーを見てみると、プロジェクト名付きの認証情報が保存されている。(添付画像青丸部分)
- 名称無しのほうの認証情報を削除する(添付画像赤丸部分)
この状態で別のプロジェクトのGitクローンを取得すれば、再度認証情報が求められ、無事クローン実行することができます。
ここまで長々書いてきましたが、上述した参考リンク先のコマンドプロンプトでコマンド叩く方法のほうなら、既存の認証情報に名称を付けてくれますので、元々使用していた認証情報を削除する必要がありません。つまり私の書いた方法のほうは二度手間です。「もしコマンドプロンプトを使わない方法で修正するなら」程度のものと思ってください。
いずれにせよめんどくさいので、認証する際に任意で名称付けられるように公式で対応してもらいたいものですね。
色んな方法を模索して知見を深めましょう。今回はこれにて。