IMDSv2 有効化の状態で EC2 内の CodeDeploy サービス(エージェント)を正常に起動する方法

2022.06.23

困っていた内容

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) から実施可能です。

詳細な手順につきましては、下記参考資料のドキュメントをご参照ください。

参考資料