MariaDBまえがきひとつ前のナレッジの記事の続き、その2のお話をさっそく記載いたします。その1「基礎知識編」AWSクラウドのインフラを使ってお手軽な費用で公開したいという目的を主軸にしてのインフラ設計となります。本ナレッジは私が思う基礎知識を述べておりますが無料公開のナレッジのためある程度は大雑把にまとめています。完璧な手順書ではなく、あくまで参考情報として基礎知識の補強程度としてお読みいただきますようお願いいたします。画像が小さいですが直接画像を開いて頂ければ少しは見やすくなると思います。鮮明な画像が欲しい方や本ナレッジの内容を元により詳しく知りたいという方、その他追加のご希望があれば単発プランでご相談を頂ければと思います。AWSの料金については2023年5月31日時点で情報を元に記載しています。最新の請求金額は変わっている可能性がありますのでご注意ください。目次AWSクラウドのインフラの基本的な設定EC2インスタンスを起動アプリのみでインフラを整える(簡易説明のみ)Dockerを用いて素早く最小構成を整える(簡易説明のみ)一通りの環境が出来たらバックアップ(自前のAMIを作ろう)AWSクラウドのインフラの基本的な設定AWSクラウドでウェブサイト(ウェブアプリ)を公開するために必要なこと主に以下のVPC関連の設定を用意することでEC2のインスタンスを外部に公開が行えます。数は多いのですが、以下のすべてはAWSのアカウントを作成した時点で自動生成されています。そのため最初はすでにあるデフォルト設定を変更するだけで進められます。後からネットワークが分離された(他のウェブアプリと競合しない)同じ環境を新規に作りたいときは以下のものを追加することになります。細かな設定方法についてはこちらでは述べませんのでご自身で調べましょう。大まかな対応が必要な項目のチェックリストとしてご利用ください。してもわからないことがあれば、MENTAなどで講師に質問したりサポートを依頼しましょう。VPCの作成ネットワークACLの作成インバウンド・アウトバウンドの双方のパケット送信を許可します。DHCPオプションセットの作成デフォルト設定を利用するか、複製します。インターネットゲートウェイの作成ルートテーブルの作成すべてのIPアドレス(0.0.0.0/0)をインタネットゲートウェイへつないでパブリックサブネットを作れるようにします。後悔するアベイラビリティゾーンに合わせてサブネットを作成しルートテーブルと連動させます。セキュリティーグループの作成お使いのインターネット回線のグローバルIPアドレスからの接続を許可させるようにします。ウェブアプリを一般公開する場合は、すべてのIPアドレス(0.0.0.0/0)の80(HTTP)を許可します。以下の画像は私の所有のAWSアカウントのとあるリージョンで自動生成されているVPC環境情報です。未使用のリージョンではありますが、アカウント作成時に有効なリージョンはすべてデフォルトVPCが自動で作られます。使用予定がないリージョンを操作ミスを防ぐために無効化しておくのも手法の一つです。AWSアカウント作成時のデフォルト設定についてセキュリティー対策を全くしない場合は何もしなくても自由にEC2を公開できるような設定になっています。だれでもアクセスできるので公開したくない情報もダダ洩れになります。大量の要求によるトラフィック過多で意図しない料金発生にもつながりかねないです。最小限の対策として、作業開始前に自分自身のグローバルIPアドレスを調べて自分のグローバルIPアドレス以外からのアクセスをすべて拒否するという設定を行うのが安全です。注意点としてグローバルIPアドレスは固定化しない限り一定期間で変動します。作業後はインスタンスを止めてアクセス許可を全部拒否にしておくとより安全でしょう。AWSの利用の有無関係なく、在宅ワークをするならグローバルIPの固定化はほぼ必須グローバルIPの固定化に対応しているISPと契約しIPアドレスの固定化の契約を行っておくと色々と便利です。セキュリティー対策で強めの対策と言えばIPアドレス制限です。グローバルIPの固定化によりデータの交換を行う上でIPアドレスによる制限が掛けやすくなります。IPアドレス制限は一般的にセキュリティー対策の一つとして広く普及しているものなのでクライアントとの取引もスムーズになります。<余談ですが・・・>ISPを変更する機会があればIPoEに対応するかについても検討してみてください。IPoEに対応することでお使いの回線にもよりますが最大2Gbps程度の超高速インターネット回線にグレードアップできる可能性もあります。私の場合は首都圏ではありますが下り30Mbps/上り5Mbpsから下り500Mbps/上り200Mbpsくらいまでアップグレードできました。EC2インスタンスを起動EC2インスタンスの起動を実施VPCの準備が出来たら次はEC2インスタンスの起動を行います。!!!EC2起動後は条件に応じて実費料金が発生します!!!AWSに登録して間もないアカウントであれば登録日から1年のみ無料枠が利用できます。無料利用で進めたい場合は、以下の画像の無料利用枠の対象となっているAMI(Amazonマシンイメージ)とインスタンスタイプを選びましょう。AWSには各種OSのひな型となるイメージデータが用意されています。イメージのデータは、Amazonマシンイメージ(AMI)といいます。Amazonクラウドサービス向けに調整されたLinuxのAMIとしてAmazonLinux系が用意されています。その中でも、AmazonLinux2023は最新のOSでありサポートが5年ついていますので積極的に採用を試みたいOSとなります。AmazonLinux2023はFedora系をベースにしていますので一部コマンドが異なる点に注意です。CentOS(RHEL)をベースとしたAmazonLinux2022やAmazonLinux2など古いAMIもありますし、UbuntuのAMIもあります。無料枠で利用できない場合や逆に高額になる場合もありますので慎重に選択してください。無料期間が終了している場合は、ウェブアプリの要件に応じてインスタンスを選びます。インスタンスの選び方の例として、シンプルなウェブページの表示だけなどプログラムが小さい場合など、0.5GiBメモリ(512MB)以内でプログラムが動作するのであれば最小のt4g.nanoを選びましょう。135円/ドル)程度の費用で済みます。<その他の例1>私の開発環境(nginx,php-fpm,mariadb,redisの4アプリをDockerで起動)では、t4g.microかt4g.smallを選択しています。ウェブアプリなのでCPUのスペックはさほど気にしませんが、メモリが0.5GB~1GB程度で見積もっているためです。<その他の例2>ひとまずt4g.smallで起動し、アプリケーションを動かしてメモリが60%~70%以上余るようであればt4g.mircoに減らすという選び方もありです。念のためメモリサイズを減らす場合はメモリをたくさん使う想定の処理を動かして事前にチェックしておきます。topやfreeコマンド、AWSのモニタリングなどを見てピークメモリ使用量の状態を確認し、問題がなさそうならインスタンスを変更します。逆にt4g.smallで運用していてアプリが勝手に終了する(ログを見てメモリ不足が原因と読み取れる)場合はt4g.mediumなどにグレードアップを行います。メモリ使用量が多くなっている原因を特定して意図していないメモリ仕様用であれば修正しましょう。T系CPUはバーストという概念に注意Tが名前につくインスタンスにはバーストという概念があります。参考情報https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.htmlhttps://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/unlimited-mode-examples.htmlhttps://dev.classmethod.jp/articles/ec2-t-or-m/ざっくりまとめるのであればCPU使用率に制限があるということになります。ゲームのような常に重たい処理をし続けるようなCPU使用率100%の状態で何分も何時間も実行し続けることができません。ウェブアプリのような時々アクセスがあってその時だけCPU使用率が増えるというCPU利用環境に向いているインスタンスです。vCPUを1分だけ100%状態で続けて利用できます。vCPUが25%の状態を4分間使用することでも1ポイントとして換算されます。t4g.smallは1時間に24ポイント配布され最大で576ポイントまでためることができます。クレジット仕様にスタンダードと無制限があり、t4gは無制限がデフォルトとなります。インスタンス起動時にスタンダードに設定されていないと、CPUクレジット不足の際にCPU使用率の制限がない代わりに追加料金が発生します。スタンダードはCPUクレジットが足りなくなった場合、CPU効率は最大で20%まで制限されます。無制限モードの場合はCPU100%の時間が1時間につき$0.04ずつ追加料金となります。CPU使用率が高い状態が何時間も続くのであればt4g系のインスタンスからc6g系のインスタンスに置き換えた方がコストが抑えられる可能性が出てきます。CPUクレジットの動向の確認EC2インスタンスの管理画面からモニタリング情報としてCPUクレジットの使用量や残高が確認できます。重たい処理を行う前のCPUクレジット段高の確認や使用量の変化など監視しながら実装を進めることである程度のコントロールは可能です。キーペア、ネットワーク、ストレージ、高度な詳細キーペア設定EC2サーバーにSSHでログインするための設定となります。RemoteやMobaextermやTerminaなどのSSHクライアントから接続する際の秘密鍵として利用されます。EC2へのログインはパスワードを使用せず、ユーザーアカウント(ec2-user)と秘密鍵による認証でログインを行います。ネットワーク設定デフォルトまたは独自に作成したものを利用します。小規模のウェブアプリであれば10GBもあれば十分でしょう。容量が大きくなるほど料金が掛かりますが、無料枠が利用できる場合は30GBまで無料で使用できます。上記のバーストのところで記載していますが、クレジット仕様は高度な詳細の設定に含まれますので要件に応じて忘れずに設定しましょう。アプリのみでインフラを整える(簡易説明のみ)EC2インスタンスが起動したらSSHクライアントを用いてEC2インスタンスに接続します。