【AWSの呼吸 壱ノ型】CodeDeployでハマった話

CodeDeployは標準でblue/greenデプロイに対応している便利サービスですよね。 ソースリポジトリからの取得・配置やロールバックなどの実行がマネージドで作りこみが不要なのがいいところです。
そんなCodeDeployを試していてハマってしまったので備忘として残します。

目次

やったこと

AWSCodeDeployでblue/greenデプロイメントをやってみた | Tech ブログ | JIG-SAW OPS」を参考にCodeDeployのための準備をしました。 上記のサイトはblue/greenですが、今回はin-placeを試してみました。
一通り設定を終えて、マネコンからデプロイを実行してみるも失敗。。

失敗の詳細

事象

in-placeデプロイが失敗する。
デプロイの全てのステップがスキップされて何も処理されていない状態。

調査

「codedeploy-agent.log」に以下のエラーが出力されていた。
(/var/log/aws/codedeploy-agent/配下にCodeDeployエージェントが出力する実行ログです。)

2019-12-28 11:28:37 ERROR [codedeploy-agent(5462)]: InstanceAgent::Plugins::CodeDeployPlugin::CodeDeployControl: Error
 during certificate verification on codedeploy endpoint https://codedeploy-commands.ap-northeast-1.amazonaws.com

原因・対策

凡ミス・・・
CodeDeployのエンドポイントにNWアクセスできていないためでした。
今回のEC2インスタンスはプライベートセグメントに作成しており、所属しているサブネットにNATゲートウェイが設定されていませんでした。
EC2インスタンスをNATゲートウェイのあるサブネットに作り直し、NW的に疎通できる状態にしたところ、無事にデプロイが成功しました。

本エラーが出た時に疑った方がよい点

  • まずは何はともあれ、NWの設定
    CodeDeployエージェントがhttpsで外に出る必要があります
    (2019/1/4現在ではCodeDeployはVPCエンドポイントに対応してない模様)

2021/1/12 追記: 2020年8月にVPCエンドポイントに対応しました! AWS CodeDeploy が VPC エンドポイントへのデプロイのサポートを開始

# service codedepoloy-agent status
The AWS CodeDeploy agent is running as PID 2724

以上。