AWS(VPC/EC2/RDS/Routes53)デプロイ時のエラー


はじめに

AWS(VPC/EC2/RDS/Routes53)を使用してポートフォリオアプリをデプロイしました。参考にしたQiita記事を貼り付けておきます。

この記事では、上記記事を参考にデプロイした際のエラーについて解決方法を記載します。

開発環境

  • Ruby 2.7.2
  • Rails 6.1.4
  • Docker
  • MySQL
  • CircleCI(RSpec、Rubocop)

デプロイしたアプリのインフラ構成図

エラー内容

yumがアップデートできない

  • NginXの設定

sudo yum -y updateを実行したところ、下記エラーコード

  • エラーコード

Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.ap-northeast-1.amazonaws.com/latest/main/mirror.list error was
12: Timeout on http://repo.ap-northeast-1.amazonaws.com/latest/main/mirror.list: (28, 'Connection timed out after 5001 milliseconds')


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Disable the repository, so yum won't use it by default. Yum will then
        just ignore the repository until you permanently enable it again or use
        --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>

     4. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: amzn-main/latest

原因

  • セキュリティグループのアウトバウンドルールが正しく設定されていなかった。

解決策

  • 下記サイトを参考にして、アウトバウンドルールを設定したところ、解決した。

画像が表示されない

原因

  • デプロイ時の画像ファイルの位置はassets/images配下になっていた。

  • 調べたところ、AWSでは、assets/images配下の画像を読み込まない。読み込まれるのは、public/images配下の画像である、とのこと。

解決策

  • mv assets/images public/imagesを実施し、manifest.jsの中身を修正したところ、解決した。
manifest.js

//= link_tree ../../../public/images
//= link_directory ../../javascript/stylesheets .scss

※もし参考にする場合、階層は各自のpublic配置場所に合わせてください。

まとめ

最低限の知識があれば、Qiita記事を参考に何とかAWSでデプロイできる

これからも勉強を続けたいと思います。

参考