IMDSv2 有効化の状態で EC2 内の CodeDeploy サービス(エージェント)を正常に起動する方法
困っていた内容
EC2 のインスタンスメタデータサービスバージョン 2 (IMDSv2) 設定を有効化しましたが、以下に示すようなログが出力されました。
その後、CodeDeploy エージェント(バージョン : 1.0) の起動に失敗する事象が発生しました。
- CodeDeploy エージェントログ - 抜粋
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:204:in `spawn_child' /opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:283:in `block (2 levels) in replace_terminated_children' /var/lib/gems/2.3.0/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in block in `create_with_logging_context' /opt/codedeploy-agent/lib/instance_agent/runner/child.rb:78:in `with_error_handling' /opt/codedeploy-agent/lib/instance_agent/runner/child.rb:31:in `prepare_run' /opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:64:in `block in prepare_run_with_error_handling'
IMDSv2 の設定を無効に戻すと、今まで通り CodeDeploy の処理が正常であることは確認しました。
セキュリティ強化のため、EC2 の IMDSv2 設定を有効にしたまま、CodeDeploy エージェントが起動できるようにするために、どのように対応すれば良いのか教えて下さい。
どう対応すればいいの?
本内容の失敗の原因として、 CodeDeploy エージェントのバージョンに起因して発生したと考えられます。
対応として、CodeDeploy エージェント を IMDSv2 がサポートされている 1.2.1 以上へのアップデートをご検討ください。
1.2.1
September 23, 2020
Added: Support for IMDSv2. Includes a silent fallback to IMDSv1 if IMDSv2 http requests fail.
なお、CodeDeploy エージェントのインストールやアップデート方法については、AWS Systems Manager や コマンドライン(CLI) から実施可能です。
詳細な手順につきましては、下記参考資料のドキュメントをご参照ください。
参考資料
- Working with the CodeDeploy agent - AWS CodeDeploy
Important
The minimum supported version of the CodeDeploy agent is 1.1.0. Use of an earlier CodeDeploy agent might cause deployments to fail.
1.2.1
September 23, 2020
Added: Support for IMDSv2. Includes a silent fallback to IMDSv1 if IMDSv2 http requests fail.