以下のようなエラーが出たが、言われていることは定番なのに、意外と解決まで時間かかったのでまとめておく。
出たエラー
Could not download bundle at 'https://api.github.com/repos/[company_name]/[private_repo]/tarball/[commit_id]' after 3 retries. Server returned codes: 404 'Not Found'; 404 'Not Found'; 404 'Not Found'; 404 'Not Found'.
こんな感じ。
CodeDeploy Agentの中や、CodeDeploy>デプロイ>[デプロイID]>イベントログの中から見える。
エラーの意味としては、GitHubのプライベートレポジトリを見る権限がなかったので、ソースコードを引っ張ってこれなかったということ。
やったこと
今回は退職者のGitHubアカウントにアクセストークンが紐付いていたことに気が付かず、そのアカウントをOganazationから外してしまったという初歩的な原因。なので、それを作り直してあげた。
手順
1. GitHubでキーの作り直し
会社の管理アカウントにログインします(もしくは、ログインできる人にこの手順1だけお願いします)。
キーを作るURL
https://github.com/settings/tokens
次にアクセスを許可する範囲を設定します。
とりあえず一番上のフルアクセスなら問題ないですが、ちゃんとしたい人は何を許可すべきかしっかり確認してください。
アクセスの範囲設定は、キーを作成後でも修正できますので、最初はフルアクセスで一旦許可して、最後に調整することをおすすめします。
アクセス範囲が決まったら、「Generate token」という緑のボタンを押して、キーの作成が完了です。
2. CodeDeployに1で作ったキーを設定する
CodeDeployのアプリケーションの作成方法は公式が詳しく説明してくれているので、こちらを参考にしてください。
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/deployment-steps-server.html
このGitHub連携のところが私は詰まりました。7番目の手順!!
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/integrations-partners-github.html#github-behaviors
私がやったのは7-1。(どれやればいいんだ..って悩んだのは私だけでしょうかw)
GitHub アカウントに対する AWS CodeDeploy アプリケーションの接続を作成するには、ウェブブラウザの別のタブで GitHub からサインアウトします。[GitHub token name (GitHub トークン名)] に、この接続を識別する名前を入力し、[GitHub に接続] を選択します。アプリケーションの GitHub を操作することを CodeDeploy に許可するよう求めるメッセージがウェブページに表示されます。ステップ 10 に進みます。
この、 「ウェブブラウザの別のタブで GitHub からサインアウトします。」 というのがめちゃめちゃ重要です!!
ログアウトしていないと、自分のGtiHubアカウントに紐付いてしまうので、ログアウトしないといけないんですね。
よくわかってなくて、キー入れるところあった!って思ってホイホイやったら、自分に紐付いて二の舞になるところでしたw
じゃあログアウトしちゃって、どうレポジトリの内容持ってくるんだ?ってなるんですが、そこで1で作ったトークンの出番です!
1で作ったキーを入力してReturnすると、別ウィンドウでAWS CodeDeployの認証を求める画面が出てきます。
これを承認すると、1でキーを作ったアカウント(会社の管理アカウント)にログインしてなくてもCodeDeployを許可することになります。
(もう承認しちゃって画像なくてごめんなさい。。)
これで連携が完了したので、デプロイできるか試してみてください〜
この設定は1つのCodeDeployアプリケーションに対して1回だけで良かったはずです!
同じレポジトリの同じ権限設定のもので良ければ1つのキーを同じように使っちゃっても大丈夫だと思います。
違うレポジトリ内容の場合は違うキーにした方が安全かな〜って個人的には思っていますが、運用の兼ね合いだと思うので臨機応変に設定してみてください。
まとめ
ちょーカンタンにですが、CodeDeployのエラーはあまり記事がないので、書いてみました!とても少数派だと思いますが、誰かの役にたったらラッキーです
最近はAWS公式のドキュメントがどんどんアップデートされるので、諦めずに覗いてみるのがいい感じだなって思っています。