AWSについて(備忘録)

AWSを使うにあたり

AWSは1年分無料とあるがどうやら各機能毎に使える容量が限られれているため注意する
しばらく放置して後から多額の請求がこないように上限額アラート機能をつける

#上限額アラート機能の付け方
管理画面にログインすれば大体場所がわかるので省略

#使う機能と設定

ECS  ,  S3  , Fargate , EC2 を使う予定

参考サイトによるAWS で使う機能のメモ

参考サイト
https://qiita.com/mejileben/items/f68a50ec9164b261b9cd#%E6%A6%82%E8%A6%81

#ACM
HTTPS通信の証明書を発行したり、期限の管理ができるサービス

CloudFrontやALBに証明書を紐付けて利用する
バージニア北部のリージョンで取得した証明書じゃないと紐付けることができない
#CloudFront
WAF(IP制限など)や画像のキャッシュ機構などを乗せることができるサービス

CSSやJavaScriptのgzip配信も対応しているので、ページの読み込み速度向上も簡単に実現
S3やALBなどを後段に置き、URLのパスごとに振り分けることができる
XServer側のDNSレコード設定でCNAMEにCloudFrontのデフォルトURLを指定し、先程発行したACMの証明書をCloudFrontに紐付けると、「noschool.asia」をHTTPSで利用できる
#S3
画像置き場
#ALB
ALBはロードバランサではありますが、URLのパスベースでアクセスを振り分けることも可能
#EC2
セキュリティグループ
HTTP/HTTPS通信をALBからのもののみ許可
AMI

CodeDeployやAutoScaling
#RDS
データベースを構築する
Laravelとの組み合わせとしては、RDSのホスト名やユーザー名、パスワードを.envファイルに記載する(=環境変数に設定する)ことが必要
ネットワークの観点ではRDSのセキュリティグループでEC2からのアクセスを許可する必要
パラメータストアで秘匿情報を管理し、デプロイ時にそれらの情報を環境変数に設定することでアクセスする手法
#ElastiCache
複数台のEC2でセッション情報を始めとする各種キャッシュを共通化する必要があり、キャッシュ版のRDS
#CodeDeploy / CodePipeline
C2インスタンスにソースコードをリリースする用途で使う
appspec.ymlというファイルを作成しルートディレクトリに配置
リリース時に実行してほしいスクリプトを書く(例えばnpm installcomposer install
LBと連携することで、ALBが自動でリリース中のインスタンスをトラフィックから外してくれる
#AutoScaling
EC2インスタンスを複数台まとめて登録しておくと、台数を指定した範囲内で自動で上下させてくれるサービス
常に台数を一定に保ってくれるので、不調になったインスタンスを削除すると勝手に補充してくれる
CodeDeployと連携することで、補充したインスタンスが起動すると自動でソースコードをインストールできる
#Systems Manager(Parameter Store)
RDSのパスワードやIAMで発行したアクセスキーなど、サービスで利用することはあるけどAWS外には出したくない

#全体構成
draw.ioでAWSのインフラ構成図を書くツール
https://www.draw.io/