AWS EC2 を使い始めたとき、私はサーバーを回転させていると思っていました。 ほとんどのチュートリアルがそう言っている。 ただ「インスタンスを起動する」と、あなたは良いです。 しかし、私が知らなかったのは、EC2は表面上はシンプルですが、あなたに時間、お金、理性がかかる多くの隠れた詳細を持っています。 EC2 を初めて使用する前に誰かが私に話したかったことはすべてここにありますので、私が犯した間違いを避けることができます。 1. 適切なインスタンスタイプを選択することはオプションではありません。 最初に決めるのは、インスタンスの種類です. You'll see names like で、 で、 そして、その他。 t2.micro t3.medium m5.large そこで、一番安いものを選びました・・・。 自由な動物ですよね。 t2.micro しかし、私のアプリは崩壊し続けた。 なぜ?私は「ブルスタイブル」インスタンスがどのように機能するのか理解していませんでした。 : What I learned t2.micro は CPU クレジットを使用します. You earn credits over time and spend them when your app needs more CPU. 長いプロセスを実行している場合(ビルドやスクリプトなど)は、クレジットがすぐに無くなることができます。 実行終了すると、あなたのインスタンスは非常に遅くなります。 : What to do instead 静的なサイトを実験したりホスティングしたりしている場合、t2.micro は大丈夫です。 バックグラウンドタスクに安定したものが必要な場合は、t3 またはm シリーズを使用します。 常にインスタンスを実際のワークロードと一致させます - 価格タグではありません。 セキュリティグループはファイアウォール(そしてそれらは重要) EC2 インスタンスを起動したとき、SSH を入力できませんでした。 壊れたと思っていた。 しかし、それはただの ファイアウォールのEC2のバージョン - アクセスをブロックします。 security group : What I learned デフォルトでは、EC2はすべての入力トラフィックをブロックします。 ポートは、SSH(ポート22)またはHTTP(ポート80)でも手動で開く必要があります。 ブラウザでアプリを訪問する場合は、ポート 80 (または HTTPS の場合は 443) を許可する必要があります。 : What to do instead インスタンスを設定する際には、IP から SSH を許可するルールを追加します。 公共のウェブサイトでは、HTTPとHTTPSを許可します。 世界のすべての港を開けてはいけない、それは問題を招くことだ。 EC2はただの空白サーバーです。 私のインスタンスに入ったとき、I typed 私のNodeアプリを起動します。 node 「コマンドが見つかりません」 試してみた それも効かなかった。 git pull Then it hit me - EC2 is just a 何も事前設置されていません。 bare OS : What I learned すべてをインストールする必要があります: Node、Python、Git、Nginx、何でも。 GUIはありません、ターミナルだけです。 基本的に、クラウドからコンピュータを借りるのと同じです。 : What to do instead スタートアップ スクリプトを使用して、初期設定を自動化します。 または、すべてがあなたが望む方法で構成された後、独自のカスタムAMIを作成します。 頻繁にデプロイしている場合は、Elastic Beanstalk または AWS AMI イメージをプレインストールされたスタックで使用することを検討してください。 4. EC2 は、あなたが言わない限り、あなたのデータを保存しません。 私は一度、EC2インスタンスを再起動し、すべてのアプリケーションファイルがなくなりました。 行った Why? I was using ストップ/スタートで清潔に掃除する。 ephemeral storage : What I learned EC2にはインスタンスストア(一時的)とEBS(永続的)の2種類があります。 EBS ボリュームだけが、シャットダウン後にデータを保持します。 変更しない限り、一部の AMI はインスタンスストアにデフォルトされます。 : What to do instead 常に重要なもののためにEBSを使用します。 Take of your volume regularly. snapshots さらに耐久性が必要な場合は、代わりにS3にファイルを保存することを検討してください。 Public IPs Can Change (Unless You Use Elastic IPs) 私は素敵な小さなアプリを作り、EC2にデプロイし、IPを友人に送りました。 数日後、彼らはそれが機能しなかったと言った。 調べてみると、IPが変わりました。 : What I learned EC2 は、インスタンスを停止して開始するたびに新しいパブリック IP を割り当てます。 安定したIPが必要な場合は、Elastic IPを使用する必要があります。 : What to do instead EC2 > Elastic IPs を選択し、1 つ割り当てます。 あなたのインスタンスとつながります。 DNSを更新するか、このIPをフロントエンドコードで使用します。 注: 未使用の Elastic IP は請求されますので、必要ないときにリリースします。 SSH Key Pairs Are Everything(SSHキーパースはすべて) 単にパスワードでログインすることはできません。 インスタンスを起動すると、AWS がリクエストします。 ~あの ファイル key pair .pem 私は、もう二度と必要としないと思っていた自分のものを削除しました。 大きなミス : What I learned .pem ファイルがなければ、インスタンスに SSH を入力できません。 失う場合は、新しいインスタンスを作成するか、スナップショットの解決策を使用する必要があります。 : What to do instead 鍵を安全に保管する インスタンスで100%完了していない限り、決して削除しないでください。 パスワードマネージャーまたはセキュアなバックアップツールを使用します。 あなたは自動シャットダウンを設定する必要がありますか、またはあなたは忘れるでしょう。 私は一度、EC2インスタンスを1ヶ月間実行していました。 気づいたこともない。 法案が来るまで : What I learned EC2 は、インスタンスが実行されている間のみ、第 2 回で充電します。 何かが起動している場合の警告や思い出はありません。 : What to do instead 使用しないインスタンスを停止するためのカレンダーメモを設定します。 AWS 予算を使用して、支出に関する警告を取得します。 また、Lambda 関数を設定して、無職 EC2 インスタンスを自動停止できます。 EC2は強力ですが、常に最良の選択肢ではありません。 静的なウェブサイトをホストしようとしているだけなら、EC2は過剰です。 Linuxを管理したくない場合も同じです。 : What I learned EC2はあなたに完全なコントロールを提供します - つまり完全な責任を意味します。 For simpler use cases, AWS offers easier tools: for frontend apps Amplify for managed backends Elastic Beanstalk for WordPress or quick server setup Lightsail for serverless tasks Lambda : What to do instead あなたが本当に必要としているものについて考えてください。 何かをテストしているだけなら、EC2は大丈夫です。 しかし、それが意味を持たない限り、インフラを管理することを強要しないでください。 最終思考 EC2 は強力なツールですが、ほとんどの AWS サービスと同様に、あなたが何をしているかを知っていることを前提とします。 ドキュメンタリーは常に物事を単純にするわけではありません。 そして、小さな設定で数時間のデバッグや予期せぬコストが発生する可能性があります。 しかし、インスタンス、IP、ストレージ、ファイアウォールなどの基本を理解すると、EC2は意味を持ち始めます。 信頼できるツールになります。 ただ、覚えておいてください:EC2を本物のサーバーのように扱います。 そして、ちょっとした準備は後で多くの痛みを救うでしょう。