gitでのCodeCommitへの操作が403エラーになった原因を調査した記録
OSX環境でCodeCommitを利用した際に、しばらく時間が経過すると何をしてもステータスコードが403になる現象に遭遇するケースがあります。
最終的にGitlabでの管理という結論に至りましたが、どのような前提だと発生するのかを備忘録でまとめておきました。
発生する前提
環境が以下の前提である場合、時間経過で遭遇すると思われます。
- OSX環境である
- CodeCommitにHTTPSのみ接続できる
- GitがKeyChainを使う前提にある
- ポリシーにIAMUserSSHKeysが適当されていない
発生する原因
AWS CLI 認証情報ヘルパーを使用して Linux, macOS, or Unix 上で CodeCommit リポジトリへの HTTPS 接続のセットアップステップ
セキュリティ対策のために、CodeCommit リポジトリへのアクセス用に生成されるパスワードは一時的なものなので、約 15 分後にキーチェーンに保存されている認証情報は機能しなくなります。
「そんな一時情報を毎回参照されるKeyChainに記録しないでくれよ」とも言いたくなりますが、あくまでGit側の動作に依存するため制御し難いようです。
一時的な回避対応
以下の対応が主になります。
- KeyChainから認証情報を削除
- Git側でKeyChainを無効にする
KeyChainから認証情報を削除
手順としては以下のURL先に沿ったものとなりました。
AWS CodeCommitで急に403が返ってくるようになった時の対処方法
Git側でKeyChainを無効にする
unsetすることでダイアログの出現が抑えられるようになります。
% git config --local --unset credential.helper
disable git credential-osxkeychain
恒久的な解消方法
ポリシーとしてIAMUserSSHKeysを適用します。SSH Keyを登録した上でssh接続にて利用しましょう。
まとめ
CodeCommitそのものを初めて扱ってみましたが、帰ってくるエラーからは原因が想定し難く時間が大幅にかかってしまいました。HTTPS接続を利用すると誰もが遭遇する壁のようですが、原因判明への時間短縮になれば幸いです。