【CodePipeline×Elastic Beanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする、のエラーとその対応方法まとめ

[JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする](https://qiita.com/C_HERO/items/387bb394f5862421513a)
で発生しうるエラーとその対応方法まとめです。

## 環境
- 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）
      <br>→ 異なるプラットフォームブランチ（Corretto 11など）でも同手順でできます。
        - RDS：MySQL Community Edition（バージョン8.0.17）

## エラーとその対策集

### 1. Elastic Beanstalk
#### (1) アクセス時に、502（Bad Gateway）エラーになる
設定内容を今一度確認しましょう。
[【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2](https://qiita.com/C_HERO/items/37b931cca5892c2345ff)
の「4. データベースの設定」の「[3] Elastic Beanstalkにおける設定」を見直して、サーバーのポート番号の設定ができているか確認してください。

### 2. RDS
#### (1) データベースにアクセスできない
アクセス許可の設定を今一度確認しましょう。
[【CodePipeline×ElasticBeanstalk】JavaアプリケーションをCodePipelineでElasticBeanstalkにCI/CDする その2](https://qiita.com/C_HERO/items/37b931cca5892c2345ff)
の「4. データベースの設定」の「[1] RDSにおける接続設定」の(4)～(9)辺りを見直して、漏れがないか確認してください。

### 3. CodePipeline
#### (1) デプロイ時に「The action failed because either the artifact or the Amazon S3 bucket could not be found. ・・・」エラーが出る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/5fef9c04-1aa9-c2c9-6e42-72b1f9472f58.png)



入力アーティファクトをBuildArtifact → SourceArtifactへ変更すると解消します。
以下の手順で変更してください。

①パイプラインにて、「編集する」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/7b6afd5c-e689-0973-ef03-6b94da113a2f.png)

②「Deploy」欄にて、「ステージを編集する」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/5cd80e9e-d305-e628-c320-2b28822821c3.png)

③編集マーク（?）をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/c60cc44b-d1c7-3146-290c-7a086a8fe9c3.png)

④「入力アーティファクト」を「SourceArtifact」に変更し（①）、「完了」をクリック（②）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/fa6b82a9-fe04-36d0-4c19-a5960b56689c.png)

⑤「保存する」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/db444f92-9959-4ea9-5741-753659b654c0.png)

⑥「保存する」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/84e0a9fb-bf23-4583-1d34-1eea3b77a9ab.png)

#### (2) 「Deployment failed. The provided role does not have sufficient permissions: Failed to deploy application. Service:AWSLogs・・・」が出る

CloudWatchLogsへのアクセス権がないために起こるエラーです。
CodePipeline用に作成されたロールに、「CloudWatchLogsFullAccess」ポリシーを付与することで、解決できます。

以下、手順です。

①マネジメントコンソールにて、「IAM」を探してクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/cb3a7f55-5136-6002-866f-2d34d74999dc.png)

②「ロール」（①） > 対象のCodePipelineのロールを検索し（②）、ロール名をクリック（③）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/56ae976c-2759-22ff-0b97-b7357d082719.png)

③「ポリシーをアタッチします」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/0714eccf-4ef5-350d-a17a-a0192e58beee.png)

④「CloudWatchLogsFullAccess」を検索して（①）、チェックを入れ（②）、「ポリシーのアタッチ」（③）をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/805b104d-5490-2196-f7db-076acb4022c5.png)

## 終わりに
本編にも書きましたが、自分は、本編の1-[3]-(5)のgradlewの権限変更で3日、そして、5-[1]-(10）のデプロイの段階で3回エラーで躓いて何度も心が折れそうになりました。
エラーが発生しても、めげずに、むしろ、どうやって解決しよっかなーって感じで、楽しんでいきましょう！