2023-01-11 · 8

AWS EC2(Elastic Compute Cloud)

cloudawsec2

この記事は公開から2年以上経過しています。

EC2(Elastic Compute Cloud)とは?

Amazon Elastic Compute Cloud(Amazon EC2)は、Amazon Web Services(AWS)クラウドでスケーラブルなコンピューティング能力を提供します。Amazon EC2 を使えばハードウェアへの先行投資が不要になり、アプリケーションをより速く開発・デプロイできます。必要な数の仮想サーバーを起動し、セキュリティとネットワークを構成し、ストレージを管理できます。要件の変化や人気の急上昇に合わせて拡張・縮小できるため、トラフィック予測の必要性が減ります。— Amazon 公式ドキュメント

EC2 は、独立したコンピュータ 1 台を借りて使えるようにしてくれるサービスです。

EC2 のメリット

  • とても簡単にコンピュータを 1 台構成できます。
  • 欲しいスペックを合わせやすく、その分の料金だけ払えば OK(涙)。
  • EBS(Elastic Block Store)ボリュームを構成して永続ストレージとして保存できます。
  • EIP(Elastic IP Address)で固定 IP を割り当てられます。

VPC & EC2 の使用

VPC の設定は前回の記事で完了している前提です。EC2 ページで Launch instances を押します。

AMI は Amazon Linux を選びましたが、お好みのもので構いません。詳しい AMI 情報は Quick Start 右の Browse more AMIs から確認できます。

Instance type には性能別のインスタンスがずらりと並んでいます。必要なものを選びましょう。次に、証明書がないので Key pair を作ります。右の Create new key pair を押します。

キー名だけきちんと設定して Create key pair を押します。キーは紛失しないよう大切に保管してください。

すぐ下の Network settings です。同じ画面でない場合は Edit を押してください。VPC と Subnet を設定します。Auto-assign public IP はパブリック IP を自動割り当てする設定ですが、EIP で固定 IP を入れるので Disable にしました。

このサーバーの用途に合わせて設定します。私は Web サービスに使うため、HTTP・HTTPS ポートを追加で開けました。

  • Request Spot Instances は、入札価格を上回るとインスタンスが終了し、下回ると再開する Spot Instances を使うかのチェックです。ユーザーがいつでもリクエストできるオンデマンドが必要なので、チェックしません。
  • Domain join directory は AWS の Microsoft Active Directory フルマネージドサービスを使うかどうかの欄です。
  • IAM instance profile — IAM(Identity and Access Management)は AWS リソースへの権限を制御・管理するサービスです。既に IAM があればここで割り当てます。
  • Hostname type は、ホスト名に IP を入れるかインスタンス ID のようなリソース名を入れるかを決めます。
  • Instance auto-recovery は、システムステータスチェックに失敗したとき自動復旧するかを決めます。
  • Shutdown behavior は、OS 側で shutdown したときにインスタンスを STOP するか TERMINATE するかの選択です。
    • terminate instance:終了すると VM が恒久的に削除され、データも全部消えます。EBS ボリュームもデタッチされ削除されます。
    • stop instance:大きな違いは EBS ボリュームが削除されないことです。EBS の標準料金はかかります。
  • Stop - Hibernate behavior は、インスタンスを休止状態に変更するオプションです。
  • Termination protection は、誤ってインスタンスが終了しないよう保護します。有効にすると CLI やマネジメントコンソールから直接終了できなくなります。
  • Stop protection は、誤って停止しないよう保護するオプションです。
  • Detailed CloudWatch monitoring — 無料の CloudWatch 機能に加えて、より詳細なモニタリング指標を見られるオプションです。当然追加料金が発生します。
  • Elastic inference はディープラーニングなどハードウェアアクセラレーションが必要なときに使います。
  • Credit specification — AWS はバースト可能パフォーマンスインスタンスをサポートしています。
    • 普段は一定の基本性能で動き、一時的にそれ以上の計算力が必要なときにクレジットで性能をバーストさせる仕組みです。
    • unlimited を選ぶとクレジットが尽きても AWS から追加供給され、必要な時に性能を引き上げられます。有料で、使い方を誤ると上位インスタンスより高くつくこともあります。
  • Placement group はインスタンスをどこに配置するか決めるオプションです。
  • EBS-optimized instance は EBS の性能向上を提供します。限られたインスタンスタイプでのみ有効です。
  • Capacity reservation は特定 AZ のインスタンス容量を事前予約するオプションです。
    • 既存の予約に入れる場合は Target by ID または Target by Group を選びます。
    • 使わない場合は None を選びます。
    • 後で作る予約に今のインスタンスを入れたいなら open を選びます。
  • Tenancy — 物理的に他の利用者と同じサーバーで動く可能性があるため、専有インスタンスや専有ホストで物理分離したいときに設定します。追加料金が発生します。
    • 専有インスタンスなら Dedicated - run a dedicated instance を選択。
    • 専有ホストなら Dedicated host - launch this instance on a dedicated Host を選択。
    • それ以外は Shared - run a shared hardware instance を選択します。
  • RAM disk ID・Kernel ID は Select のままにしておくのがおすすめです。
  • Nitro Enclave はインスタンス内で機密情報を安全に処理できるオプションです。特定のインスタンスタイプで有効です。
  • License configurations は AWS License Manager で設定したライセンスをインスタンスに適用します。
  • Metadata accessible はインスタンスメタデータへアクセスできるかの選択です。
  • Metadata version はメタデータのバージョン選択です。
  • Metadata response hop limit はメタデータの許可ホップ数を制限します。
  • Allow tags in metadata は、メタデータからインスタンスタグへのアクセスを許可するかの選択です。
  • User data は、インスタンス生成時に root 権限で実行されるスクリプトを入れる欄です。
    • 例リンク ← こうしたサイトで、好きな bash スクリプトの書き方が見られます。

すべて設定したら Launch instance をクリックしてインスタンスを作ります。

正常に作成されました。ただし自動割り当てを Disable にしたので Public IPv4 がありません。EIP を設定しに行きましょう。

Network & Security の Elastic IPs で Allocate Elastic IP address をクリックします。

Tags で Name だけ設定して Allocate で作成します。

うまく作成できました。上部の Associate this Elastic IP address を押して EC2 に割り当てます。

上の画像のように Instance を選択して Associate で割り当てます。

Public IPv4 が割り当てられました。ではインスタンスに接続しましょう。~/.ssh/config に以下の情報を入れてください。

Host public-ec2-a1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

入力したら、ターミナルで 「ssh public-ec2-a1」 と打てば作成したインスタンスに接続できます。

問題なく接続できました。次はパブリック IP で Web サイトにアクセスしてみます。

Apache がきちんと入っていることを確認できました。最後にあった phpinfo.php にアクセスしてみましょう。

バッチリ表示されました!

user-data のスクリプトが正しく動いたことを確認できました。次は public-subnet-c1 を作ります。public-ec2-a1 を AMI として保存し、同じように作れば OK です。

public-ec2-a1 にチェックして右クリックし、Image and templates → Create image で AMI を作ります。

AMIs に入るときちんと作成されているのが確認できます。

上の画像のように新しくインスタンスを起動し、user-data 以外は先ほどと同じ設定にします。その後 EIP も作成して適用します。

Host public-ec2-c1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

c1 に上記のコードを適用します。IP またはドメインで Web サイトにも問題なくアクセスできます。

お疲れさまでした。基本的な EC2 の使い方はすべて習得できました!


原文(韓国語): tistory — 2023-01-11 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。

コメント

コメントを削除しますか?

関連記事

AWS EC2(Elastic Compute Cloud) · 나봄하랑