Amazon Web Services (AWS) 上でアプリケーションを作成する方法に関するチュートリアル

Amazon Web Services (AWS) 上でアプリケーションを作成する方法に関するチュートリアル

Amazon Web Services (AWS) は、世界で最も人気のあるクラウドコンピューティングプラットフォームの1つです。AWS を利用すれば、物理サーバーを購入したり、サーバー領域を設定したり、独自のインフラストラクチャを維持したりすることなく、アプリケーションを構築・実行できます。この記事では、一般的なアプローチを使用して AWS 上にシンプルなアプリケーションを作成する手順を説明します。具体的には、コンピューティングサービス (EC2) を使用して Web アプリケーションをデプロイし、必要に応じてマネージドデータベース (RDS) とストレージおよびドメインも利用します。以下の例は一般的なものですが、多くの種類のアプリケーションに適用できます。

-

1. 初期準備:会計と基本概念

始める前に、AWSアカウントを持っていることを確認してください。多くのAWSサービスには、練習に最適な無料利用枠(一定の制限内で無料)が用意されています。

理解しておくべき重要な概念をいくつかご紹介します。

– リージョン:AWSデータセンターの所在地(例:シンガポール/ap-southeast-1)。低遅延を実現するため、最も近いリージョンを選択してください。
– IAM(アイデンティティおよびアクセス管理):アクセス管理システム。ベストプラクティス:日常業務にはルートアカウントを使用しないこと。
– VPC(仮想プライベートクラウド):サービスが実行される仮想ネットワーク。
– セキュリティグループ:「ファイアウォール」は、サーバーへの送受信アクセスを制御します。

これら4つの点を理解すれば、AWSの基本操作がずっと簡単になります。

-

2. IAMユーザーを作成し、アカウントを保護する

セキュリティは常に私たちの最優先事項です。rootユーザーとしてAWSコンソールにログインし、以下の手順に従ってください。

1. IAMサービスを開きます。
2. 新しいユーザー (例: `admin-dev`) を作成し、「AWS マネジメント コンソールへのユーザー アクセスを提供する」にチェックを入れます。
3. 権限を付与する: 練習用には AdministratorAccess を使用できます (ただし、実際のプロジェクトではより制限する必要があります)。
4. セキュリティを強化するために、MFA(多要素認証)を有効にします。

完了したら、rootユーザーからログアウトし、新しく作成したIAMユーザーでログインしてください。

-

3. アプリケーションアーキテクチャを決定する

このチュートリアルでは、シンプルなアーキテクチャを構築します。

– EC2:Webアプリケーション(例:Node.js/Express、Python Flask、PHP)の実行。
– オプションのRDS:マネージドMySQL/PostgreSQLデータベースにより、データが整理された状態で保存されます。
– S3(オプション):画像、ドキュメント、バックアップなどの静的ファイルを保存します。
– Route 53(オプション):ドメインを管理します。
– CloudWatch:基本的な監視機能。

お客様の声は  ビジネスにおけるクラウドコンピューティングの利用メリット

始めたばかりなら、まずはEC2を使ってアプリケーションを実行することに集中しましょう。

-

4. EC2サーバーを作成する

a) インスタンスを作成する
1. EC2サービスにログインします。
2. [インスタンスの起動]をクリックします。
3. OSを選択します。例えば、Ubuntu Server 22.04 LTSを選択します。
4. インスタンスタイプを選択します。無料利用枠の場合は、`t2.micro` または `t3.micro` を使用してください(空き状況によります)。
5. キーペア(例:`aws-key.pem`)を作成または選択します。`.pem`ファイルはSSHで使用するため、安全な場所に保管してください。

b) ネットワークおよびファイアウォールの設定
– インスタンスがデフォルトのVPC内にあることを確認してください(練習用です)。
– セキュリティグループを設定する:
– ポート22(SSH)は、ご自身のIPアドレス(例:`My IP`)からのみ使用可能です。
– `0.0.0.0/0` (パブリック) のポート 80 (HTTP)
– 後で SSL を使用する場合は、`0​​.0.0.0/0` からポート 443 (HTTPS) を使用します

注:SSHを一般公開することは危険です。必ずIPアドレスを制限してください。

「起動」をクリックし、インスタンスが起動するまでお待ちください。

-

5. SSH経由でサーバーにログインする

Windowsでは、WSLまたはPuTTYを使用できます。macOS/Linuxでは、ターミナルから直接操作できます。

1. 権限キーを変更する:
「「バッシュ」
chmod 400 aws-key.pem
「 `
2. サーバーにSSH接続します(EC2のパブリックIPv4を使用):
「「バッシュ」
ssh -i aws-key.pem ubuntu@PUBLIC_IP
「 `

成功した場合、AWSのUbuntuサーバーに接続されています。

-

6. Webサーバーとアプリケーションランタイムをインストールする

現代のウェブ開発で広く使われているNode.jsアプリケーションの例を以下に示します。

a) 依存関係を更新およびインストールする
「「バッシュ」
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
「 `

b) Node.js(LTSバージョン)をインストールする
「「バッシュ」
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
ノード-v
npm -v
「 `

-

7. シンプルなアプリケーションを作成する

お客様の声は  ECサイトのSEOを最適化する方法

プロジェクトフォルダを作成します。

「「バッシュ」
mkdir myapp && cd myapp
npm init -y
npm インストール エクスプレス
「 `

`index.js`ファイルを作成します。

「`js
const express = require(“express”);
const app = Express();

app.get(“/”, (req, res) => {
res.send(“こんにちは!アプリケーションはAWS EC2上で実行されています。”);
});

app.listen(3000, () => console.log(“サーバーはポート3000で実行中です”));
「 `

アプリケーションを実行します:

「「バッシュ」
ノードindex.js
「 `

ブラウザからアクセスしてみてください。
– `http://PUBLIC_IP:3000`

ただし、セキュリティグループでは現在ポート3000が開いていません。以下の操作をお試しください。
1) セキュリティグループでポート3000を開放するか、
2) リバースプロキシを使用する(より推奨)ことで、アプリケーションは内部ポートに留まりますが、ポート80/443経由でアクセスできるようになります。

-

8. Nginxをリバースプロキシとして使用する(ポート80経由でアクセス)

Nginx をインストールします。
「「バッシュ」
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
「 `

Nginxの設定を行います。
「「バッシュ」
sudo nano /etc/nginx/sites-available/myapp
「 `

設定内容:
「`nginx
サーバー{
80を聞きます。
サーバーの名前 _;

位置/ {
プロキシパス http://127.0.0.1:3000;
proxy_http_バージョン 1.1;
proxy_set_header アップグレード $http_upgrade;
proxy_set_header 接続「アップグレード」;
proxy_set_header ホスト $host;
proxy_cache_bypass $http_upgrade;
}
}
「 `

設定を有効にする:
「「バッシュ」
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctlリロードnginx
「 `

今すぐアクセス:
– `http://PUBLIC_IP/`

このアプリケーションはポート3000で動作しますが、一般ユーザーはポート80経由でアクセスします。

-

9. PM2を使用してアプリケーションを永続的に実行する

SSH接続が切断された際にアプリケーションがクラッシュするのを防ぐには、PM2を使用してください。

「「バッシュ」
sudo npm install -g pm2
pm2 start index.js –name myapp
pm2 保存
pm2の起動
「 `

`pm2 startup`コマンドを実行すると、追加の手順が表示されます。表示されたコマンドを実行すると、サーバー再起動時にアプリケーションが自動的に起動します。

-

10. (オプション) RDS を使用したデータベースの追加

アプリケーションにデータベースが必要な場合、AWSがバックアップ、パッチ適用、スケーリングを管理するため、RDSは簡単に利用できます。

簡単な手順:
1. RDSサービスを開く → データベースを作成します。
2. MySQLまたはPostgreSQLを選択します(一部の構成では無料利用枠のルールが適用されます)。
3. ユーザー名とパスワードを設定します。
4. RDSインスタンスがEC2と同じVPC内にあることを確認してください。
5. RDSセキュリティグループがEC2セキュリティグループからの接続のみを受け入れるように設定します(パブリックからの接続は受け入れないようにします)。

お客様の声は  アジャイルでソフトウェアプロジェクトを管理する方法

データベースが稼働したら、RDSエンドポイントを取得し、データベースドライバを使用してアプリケーションから接続します。

-

11. (オプション) SSL証明書を使用してHTTPSを有効にする

本番環境ではHTTPSが必須です。一般的な方法:
– ドメインを使用する(例:Route 53または他のレジストラから)。
– EC2上でLet's Encrypt(Certbot)を使用してSSLをインストールします。

要約すると:
「「バッシュ」
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
「 `

ウィザードの手順に従ってドメインを選択し、HTTPSリダイレクトを有効にしてください。

-

12.モニタリングとコスト

AWSは、CPU、ネットワーク、特定のログなどのメトリクスを表示できるCloudWatchを提供しています。また、機会損失を防ぐためにも、コストを監視することをお勧めします。

重要なヒント:
– CloudWatchで課金アラームを有効にする(例:請求額が5ドルを超えた場合にアラームを鳴らす)。
使用していないときはインスタンスをオフにしてください。
未使用のリソース(ロードバランサー、EBS、Elastic IP、スナップショットなど)は、引き続きコストが発生する可能性があるため、削除してください。

-

閉鎖

おめでとうございます!EC2を使ったAWS上でのアプリケーション構築、Webアプリケーションの実行、Nginxリバースプロキシの設定、そしてPM2を使った常時稼働の基本を習得しました。さらに、データベース用のRDS、ストレージ用のS3、セキュリティのためのHTTPS証明書といった追加サービスについても概説しました。

レベルアップしたい場合、通常は次の手順を踏みます。
– CI/CD による自動デプロイ (GitHub Actions + SSH、または AWS CodeDeploy)
– Docker を使用したコンテナと、ECS や EKS などのオーケストレーションを使用する、
– LambdaとAPI Gatewayを使用したサーバーレスアーキテクチャを採用。

よろしければ、構築するアプリケーションの種類(Node.js、Laravel、Django、Reactなど)と用途(デモ、本番環境、大規模運用など)をお知らせください。より具体的な手順を盛り込んだチュートリアルを作成いたします。

コメントを残す