【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的に疎通できる状態にしたところ、無事にデプロイが成功しました。
本エラーが出た時に疑った方がよい点
2021/1/12 追記: 2020年8月にVPCエンドポイントに対応しました! AWS CodeDeploy が VPC エンドポイントへのデプロイのサポートを開始
IAMロールが正しく設定されているか
「AWSCodeDeployでblue/greenデプロイメントをやってみた | Tech ブログ | JIG-SAW OPS」のようにEC2側とCodeDeploy側のそれぞれで適切なIAMロールが設定されていればOKCodeDeployエージェントが起動しているか
以下のように"running"と出ればOK
# service codedepoloy-agent status The AWS CodeDeploy agent is running as PID 2724
以上。