20201215_アウトプット(AWSのS3実装)

アプトプット画像

今日行ったこと 6時間30分

  • AWSのアカウント作成

  • S3の実装(デプロイにHerokuを使っているので、画像を消えないようにするため)

👉うまく反映せず(´;Д;`)(出品できず)概要は理解。



新しい発見

AWSとS3って何?

  • AWSAmazon Web Services)とは、米Amazonが提供している、サーバーに関するサービスの総称のこと。

  • その中のひとつがS3(Amazon Simple Storage Servise)で、データを保存・取得できるサービス。

  • リージョンと呼ばれる実在の施設に分散して保存するのでネットワーク障害に強い。

  • (少ない容量であれば)1年間は無料。

  • インスタンス(アカウント作成)に紐づいていないElastic IDアドレスがあったり、IAMユーザーの一時的なセキュリティ認証情報を使用して他のAWSサービスにアクセスしたりすると課金される。



使うにあたって大事なポイントは?

セキュリティに気をつけよう!そのための対策は以下の通り。

(1)AWS上で工夫するよ
  • ルートユーザーと呼ばれる大元のユーザー情報は、必要最低限の情報にする。アプリケーションに関する機能は紐付けない。(アカウント設定・変更・バケット作成📦・IAMアカウント作成等の役割を担う)

  • (関係ないけど)バケットはバケツで覚えるとイメージしやすい。データを保存する入れ物。

  • IAM(Identitiy and Access Management)ユーザーと呼ばれる利用制限付きのユーザーを作成し、アプリケーションに関する機能を紐付ける。(今回であればデータを保存・取得できるようにする)

  • IAMユーザーを作成する時に「どんな機能持たせる?」と設定する。(Amazon S3 FullAccess

  • (ルートユーザー側の)バケット作成では「”全てブロック”は解除して、画像は保存できるようにしよう」と設定をする。

  • IAMユーザーでもログインできるようパスワードを設定する。

  • IAMユーザー情報のCSVをダウンロードすると、ソースコードからAWSにアクセスする時のキー🔑が入っている。


(2)Authy(オーシー)を使って工夫するよ
  • Authy(オーシー)とは、30秒ごとにトークンを発行できるアプリケーション。

  • ルートユーザーも、IAMユーザーも、仮装MFAデバイスが設定出来るので、Authy(オーシー)アプリケーションを使って2段階認証をするよ。


(3)環境変数を使って工夫するよ
  • S3を使う際には、ソースコードバケット名(どの入れ物?)、リージョン名(どの保存場所?)、AWSへアクセスするキー🔑を記載する。

  • その中のキーについては環境変数に設定して外からみると代入後の変数になるようにするよ。(ターミナルで設定して、パスを通しておく)


(4)git-secrets(AWSが公開しているツール)を使って工夫するよ
  • 秘密情報を誤操作でGitHubにコミットできないよう防止する機能

  • コマンドで設定するよ(開発中のアプリに移動して実行する)

1. brew install git-secrets(インストール)
2. git secrets --register-aws --global(アップロードしたくない秘密情報を一括設定)
3. git secrets --list(確認)
4. sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/app/git/bin/git-secretsGitHubデスクトップに反映)
5. git secrets --install ~/.git-templates/git-secrets(今後も適用するようにする①)
6. git config --global init.templatedir '~/.git-templates/git-secrets' (今後も適用するようにする②)



どういう風に使うの?(流れは?)

(セキュリティ以外の部分を)ざっくりいうと、
1. AWS上にバケットと呼ばれる入れ物を作る
2. VSコード上でaws-sdk-s3をインストール
3. VSコード上のconfigdevelopment.rbproduction.rbに、「ローカルじゃなくてアマゾンに保存する」と記述
4. VSコード上のstorage.ymlに、バケット先(入れ物)・リージョン先(保存先)・鍵情報等を記述



初めて知った単語

意味がわかりやすかったリンクを貼りました。ありがとうございます!



感想

  • 今日はカリキュラム進められた!嬉しい!頑張れる気持ちになれた背景として、Twitterで返事をもらえてめちゃくちゃ嬉しかったため。頑張る。

  • 以前に比べて新しい概念の理解が少し早くなった気がする😍

  • あとは、デブスト等の話を聞いていて、フレームワークだけでなくて、他から必要な機能をくっつける、という技術がとにかくやって見たかったので、テンションが上がった。実装成功したら最高だったけど、うまくいかず。悔しー。(不明点はメンターさんにチャットで質問するところで終わった)



これから理解したいこと(覚書用)

  • Formオブジェクト(モデルの存在しないデータを更新)


  • エラー解決

  • カラムの追加方法、ロールバック

  • 環境変数(OSの知識)

  • 環境構築、バージョン対応

  • GitHub(他のアプリケーションと連携・自分に取り入れること)APICilent

  • Herokuのデプロイ方法 👉11/15・16学習 50%進む

  • README(DB設計だけでなく、全体について取扱説明書としてどんな風に書くと良いのか)

  • リファクタリング

  • データベースをインポート、エクスポート

  • Docker

  • gimei(Gem)

  • GitHubActions×OpenAPIGenerator(APICilent)