Portfolio
AWS無料枠でポートフォリオを作る方法
AWS無料枠を活用して、S3、CloudFront、Lambda、DynamoDBを使ったポートフォリオサイトを作る方法を初心者向けに解説します。
結論
AWSでポートフォリオを作るなら、最初はサーバーレス構成がおすすめです。
理由は、常時起動サーバーを持たずに済むため、個人開発でもコストを抑えやすいからです。
このサイトでは、次のような構成を想定しています。
| 用途 | AWSサービス |
|---|---|
| 静的サイト配信 | S3、CloudFront |
| 問い合わせAPI | API Gateway、Lambda |
| 問い合わせ保存 | DynamoDB |
| ログ確認 | CloudWatch Logs |
| 権限管理 | IAM |
| 課金監視 | AWS Budgets |
この構成は、Cloud PractitionerやSAAの学習内容とも相性がよいです。
AWS無料枠で作れる構成
初心者がポートフォリオを作るときに避けたいのは、固定費が発生しやすい構成です。
たとえば、EC2を起動しっぱなしにしたり、RDSを立てっぱなしにしたりすると、学習用途でも料金が発生しやすくなります。
そのため、最初は以下の方針で作ります。
| 方針 | 内容 |
|---|---|
| 静的サイト中心 | HTML、CSS、JavaScriptをS3に置く |
| CDN配信 | CloudFrontでHTTPS配信する |
| APIは最小限 | 問い合わせだけAPI化する |
| DBは小さく使う | DynamoDBに問い合わせだけ保存する |
| 課金監視 | AWS Budgetsを最初に設定する |
使うサービス
Amazon S3
S3は、静的ファイルを保存するために使います。
Next.jsを静的出力すると、HTML、CSS、JavaScript、画像が生成されます。
それらをS3に配置することで、Webサイトのファイル置き場として使えます。
ただし、S3バケットを直接公開するのは避けます。
このサイトでは、CloudFront経由で配信する前提です。
Amazon CloudFront
CloudFrontは、ユーザーにサイトを高速配信するためのCDNです。
CloudFrontを使うと、以下のメリットがあります。
| メリット | 内容 |
|---|---|
| HTTPS配信 | ブラウザから安全にアクセスできる |
| キャッシュ | 静的ファイルを高速に配信できる |
| S3保護 | S3を直接公開せずに済む |
| ポートフォリオ性 | CDN構成を説明できる |
AWS Lambda
Lambdaは、問い合わせフォームの処理に使います。
サーバーを常時起動せず、リクエストが来たときだけ処理が実行されます。
個人開発の問い合わせフォームのように、アクセス頻度が低い処理と相性がよいです。
Amazon API Gateway
API Gatewayは、フロントエンドからLambdaを呼び出す入口です。
問い合わせフォームで送信ボタンを押すと、フロントエンドからAPI GatewayへPOSTリクエストを送ります。
API GatewayがLambdaを呼び出し、LambdaがDynamoDBへ保存します。
Amazon DynamoDB
DynamoDBは、問い合わせデータを保存するために使います。
今回のMVPでは、複雑なリレーションを扱いません。
名前、メールアドレス、件名、本文、作成日時を保存できれば十分です。
そのため、RDSではなくDynamoDBを選びます。
課金リスクがあるサービス
AWS無料枠を使う場合でも、課金リスクはゼロではありません。
特に初心者は、以下のサービスに注意してください。
| サービス | 注意点 |
|---|---|
| EC2 | 起動したままだと時間課金が発生する |
| RDS | 小さな構成でも固定費になりやすい |
| NAT Gateway | 作成しただけで費用が発生しやすい |
| ALB | 常時利用料金が発生しやすい |
| CloudWatch Logs | ログを無期限保存すると蓄積課金につながる |
| CloudFront | 大量アクセスや大容量画像で転送料が増える |
今回のMVPでは、EC2、RDS、NAT Gateway、ALBは使いません。
実装ステップ
実装の流れは以下です。
- Next.jsで静的サイトを作る
npm run buildで静的ファイルを生成する- S3バケットを作成する
- S3へ静的ファイルをアップロードする
- CloudFront Distributionを作成する
- CloudFront OACでS3を非公開にする
- 問い合わせ用にAPI Gateway、Lambda、DynamoDBを作る
- AWS Budgetsで課金アラートを設定する
- READMEに構成図と設計意図を書く
この流れで作れば、単なる画面だけのポートフォリオではなく、AWS構成まで説明できる作品になります。
ポートフォリオとして見せるポイント
採用担当者や面接官に見せるときは、画面だけを見せても弱いです。
次の観点まで説明できると評価されやすいです。
| 観点 | 説明する内容 |
|---|---|
| なぜS3か | 静的サイトなのでサーバー不要 |
| なぜCloudFrontか | HTTPS、キャッシュ、S3非公開化 |
| なぜLambdaか | 問い合わせ処理は常時起動不要 |
| なぜDynamoDBか | 小規模な問い合わせ保存に合う |
| なぜRDSを使わないか | MVPでは固定費と管理負荷が重い |
| どう課金事故を防ぐか | AWS Budgetsを最初に設定する |
| どう安全にするか | IAM最小権限、S3非公開、CORS制限 |
まとめ
AWS無料枠でポートフォリオを作るなら、S3 + CloudFrontの静的サイト構成から始めるのが現実的です。
動的処理は、問い合わせフォームのように小さく始めます。
API Gateway、Lambda、DynamoDBを組み合わせれば、サーバーレスAPIも学べます。
この構成なら、Cloud Practitionerの知識を実装に変換しながら、SAAにつながる設計力も身につけられます。
次に学ぶ内容
ブログ記事だけでなく、AWS用語集・サービス比較・模擬問題・構成図を組み合わせると、 資格知識と実装イメージをつなげて理解できます。