0
0

【AWS】CodeDeployを使ったデプロイが何をしてもうまく行かなった件

Posted at

初めに

現在以下のハンズオンの「AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!」でCICD構築を行っている。
https://aws.amazon.com/jp/events/aws-event-resource/hands-on/

途中苦戦しながらも何とかCodeDeployでデプロイするところまで来たのだが、以下のように失敗をした。

image.png

ちなみに今回の(私の場合の)前提条件は以下である。
・EC2インスタンスやCodeBuildなどの設定はハンズオン参照
・EC2インスタンスにはSSH接続している

原因を探る

まずエラーの原因を探ろうとしたのだが、コンソール上だと詳細が見つけられなかったため、黒画面で確認してみることにした。以下のコマンドでログを確認する。もちろんSSH接続した状態で。

cmd
sudo tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log

すると以下のエラーを確認できた。

InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile

どうやら必要なIAMポリシーが足りないとのこと。そこで、EC2インスタンスのIAMロールを開いて、必要だと言われるポリシーを追加する。ちなみにここはChatGPT君に聞いた。

image.png

実際に追加したのはAmazonEC2RoleforAWSCodeDeployとAmazonS3ReadOnlyAccess(オプション)である。これで多分大丈夫だろうと再度デプロイを行う。

見落としていたこと

上記でもうまく行かない。IAMロールの更新はEC2インスタンスの再起動は必要ないはず…と思いながらインスタンス再起動しても同様の結果。
考えているうちに以下の神記事を見つけた。

こちらによると、CodeDeploy Agentを再起動するという手順が足りなかったようだ。
再度黒画面にてsudo systemctl restartでサービスを再起動、systemctl statusで起動状態の確認を行った。

cmd
sudo systemctl restart codedeploy-agent.service
systemctl status codedeploy-agent.service

その結果、無事デプロイも成功し、index.htmlがサーバーに上がったことも確認できた。

image.png

image.png

EC2インスタンスのパブリックアドレスへアクセスすると、index.htmlの中身が表示されていることが分かる。

image.png

終わりに

今回のCICD構築はgitコマンドやサーバーのことを知っていないと難しいなと感じた(幸いその辺りは少し知識があったので何とかなったが…)
とりあえず無料枠終わる前にハンズオン全て終わらせるぞ!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0