JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする
で発生しうるエラーとその対応方法まとめです。
環境
- OS:Windows10
- IDE:Eclipse 2020-03
- JDK:Amazon Correto 8
- フレームワーク:Spring Boot
- AWS
- CodePipeline
- CodeCommit
- CodeBuild
- CodeDeploy
- Elastic Beantalk
- Java SE(Java 8 バージョン 2.10.8)
→ 異なるプラットフォームブランチ(Corretto 11など)でも同手順でできます。 - RDS:MySQL Community Edition(バージョン8.0.17)
- Java SE(Java 8 バージョン 2.10.8)
- CodePipeline
エラーとその対策集
1. Elastic Beanstalk
(1) アクセス時に、502(Bad Gateway)エラーになる
設定内容を今一度確認しましょう。
【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2
の「4. データベースの設定」の「[3] Elastic Beanstalkにおける設定」を見直して、サーバーのポート番号の設定ができているか確認してください。
2. RDS
(1) データベースにアクセスできない
アクセス許可の設定を今一度確認しましょう。
【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2
の「4. データベースの設定」の「[1] RDSにおける接続設定」の(4)~(9)辺りを見直して、漏れがないか確認してください。
3. CodePipeline
(1) デプロイ時に「The action failed because either the artifact or the Amazon S3 bucket could not be found. ・・・」エラーが出る
入力アーティファクトをBuildArtifact → SourceArtifactへ変更すると解消します。
以下の手順で変更してください。
②「Deploy」欄にて、「ステージを編集する」をクリック。
④「入力アーティファクト」を「SourceArtifact」に変更し(①)、「完了」をクリック(②)。
(2) 「Deployment failed. The provided role does not have sufficient permissions: Failed to deploy application. Service:AWSLogs・・・」が出る
CloudWatchLogsへのアクセス権がないために起こるエラーです。
CodePipeline用に作成されたロールに、「CloudWatchLogsFullAccess」ポリシーを付与することで、解決できます。
以下、手順です。
②「ロール」(①) > 対象のCodePipelineのロールを検索し(②)、ロール名をクリック(③)。
④「CloudWatchLogsFullAccess」を検索して(①)、チェックを入れ(②)、「ポリシーのアタッチ」(③)をクリック。
終わりに
本編にも書きましたが、自分は、本編の1-[3]-(5)のgradlewの権限変更で3日、そして、5-[1]-(10)のデプロイの段階で3回エラーで躓いて何度も心が折れそうになりました。
エラーが発生しても、めげずに、むしろ、どうやって解決しよっかなーって感じで、楽しんでいきましょう!