個人アプリ開発 AWS S3


本日も引き続きAWSの作業。自分なりにまとめながら進めていきました。
S3を導入しました。

セキュリティ対策

AWSは従量制のサービスのため、他人がなりすましでログインして膨大な処理を行うと、それに対する支払いが発生する。

セキュリティ対策① 二段階認証

二段階認証:
あるサービスにログインする際に、通常パスワードに加えて、別の方法でも認証されないとログインできないようにする仕組み

・アプリAuthyを使用し設定

セキュリティ対策② IAMユーザーの利用

IAMユーザー:
AWSのサービスの1つ。ルートユーザーとは別に、使用できる機能を制限したアカウントを作成することができる

→IAMユーザーにも二段階認証

セキュリティ対策③ git-secrets

アプリはGitHubのpublicリポジトリソースコードをアップロードしており、誤操作でパスワードをGitHubにpushしてしまうと誰でも見られる状態になってしまう。

git-secretsは、そのような誤操作を防いでくれるツール。pushしようとしたコードをチェックし、パスワードだと推定されるような文字列が含まれている場合は、そこで処理が中断される仕組み。

1.ローカルからS3にアップロード

S3で保存先を用意

バケット
S3で、実際にデータが格納される場所

画像のアップロード先をS3に変更

1.fog-awsをインストール
fog:
画像をアップロードする際、外部のストレージを選択しアップロードするのを補助してくれるGem

2.fogの設定
image_uploader.rbを編集

3.fogのアップロード先の設定
config/initializers/carrierwave.rbファイルの作成・編集

4.安全にAWSのキーを扱えるよう設定
環境変数を設定
secrets.ymlの設定
→credentials(Rails5.2以降)

躓き

本番環境で画像がUPされない現象が起こりました。

1.星形のイメージ図が表示されない
→パスの参照をasseteからpublic/asseteに変更できていませんでした。

2.投稿画像が表示されない
capistrano導入前の投稿についてはパスの参照変更が適用されなかった(多分)
→新たに投稿した画像はちゃんと見れることが確認できました。


本番環境の不具合は肝が冷えます笑
ただこの一週間AWSと格闘して、やるほど理解は進んでいく気がしています。
自分なりにPDCAを回し、初期より対策ができるようになってきました。

・不具合確認→
・開発環境で同様の現象は起きていないか→
・サーバ・DB再起動→
・ログの確認→
・不明であれば検索し、仮説を立てる→
・仮説を潰していく

以降、引き続き作業を行いたいと思います。
日々精進していきます。