【Vercel】Vercel×AWSで無料インフラを作るには ①AWS初期設定(IAMユーザー,DynamoDB,AWS-sdk) 

1. 概要

個人開発でNext.jsを使っている方には、
「とにかくランニングコストを抑えたい」 「でも、表示スピード(パフォーマンス)は落としたくない」 「AWS Amplifyの無料枠がもうない」
といった事情により悩まれているかたもいらっしゃるかと思います。
そこで、

・Vercel + AWS SDK + DynamoDB

を選定しました。理由として、
VercelのHobbyプランなら期限なく無料で、かつ強力なキャッシュ機能(ISR)を前段に挟むことで、バックエンドであるAWS(DynamoDB)へリクエストが飛ぶ回数を劇的に減らし、AWS側の課金も原則無料枠内に安全に抑え込むことができると考えたためです。

本ブログでは前段で必要となるAWS 周りの初期環境構築を中心に解説していきます。
実際へのVercelへの設定等は次回ブログにて記載予定ですのでご了承ください。

システム構成図(スマホ版を現在考慮してないなど実際との差異有り)

2. 前提条件、注意事項

※上記について単独完遂することができるジュニアPG以上を前提に以降のブログを記載しております。

課金について: 本記事は個人開発を想定し、Vercelの無料枠(Hobbyプラン)およびAWSの無料利用枠、または極低コストでの運用(キャッシュを活用したアクセス削減)を前提とした設計になっています。しかし、想定外のアクセス急増や設定ミスによって課金が発生する可能性があります。各サービスの利用および管理は自己責任で行い、定期的にVercelの「Usage」やAWSの「請求ダッシュボード」を確認するようにしてください。

3. IAMユーザー(アクセスキー)の作成

(Vercel)からAWSへアクセスするための「アクセスキー」を作ります。 万が一鍵が漏れても被害が出ないよう、DynamoDBとS3だけを操作できる専用ユーザーを作ります。

3.1 rootユーザーでログイン後、AWSコンソールから「IAM」リンクを押下しアクセスします。

3.2 「IAMユーザー」リンクを押下し「ユーザーの作成」ボタンを押下します。

3.3 任意のユーザー名を記載して「次へ」ボタンを押下します。

3.4 許可を設定から「ポリシーを直接アタッチする」を選択して、検索窓で以下の2つを検索し、チェックを入れます。

  • AmazonDynamoDBFullAccess
  • AmazonS3FullAccess
    問題無ければ、「次へ」ボタンを押下します。

3.5 設定した内容が正しいか確認して「ユーザーの作成」ボタンを押下します。

3.6 作成したユーザー名のリンクを押下します。

3.7 「アクセスキーを作成」リンクを押下します。

3.8 「AWS外で実行されるアプリケーション」を選択して「次へ」ボタンを押下します。


3.9 必要に応じて説明タグ値を設定して、「アクセスキーを作成」を押下します。

3.10 表示される 「アクセスキー」 と 「シークレットアクセスキー」 を手元のメモ帳などにコピーして保存してください。
シークレットキーは本画面以降二度と確認できない為、控えを忘れないようにしてください。
※必要に応じてcsvファイルのダウンロードを進めます。


4. DynamoDBテーブルの作成

4.1 AWSコンソールから「DynamoDB」リンクを押下し、
  表示された画面から「テーブルの作成」ボタンを押下します。

4.2 テーブルを以下の赤枠の通りに作成します。
※赤枠で指定した箇所以外はすべてデフォルトとしました。
 →作成されているProjectに応じてテーブル名やパーティションキーの設定をしてください。

4.3 作成されたテーブルのリンクを押下します。

4.4 「テーブルアイテムの探索」ボタンを押下します。

4.5 「項目を作成」ボタンを押下します。

4.6 DynamoDB JSONをオフにする(トグルスイッチをクリックして【オフ】(黒色))にして、データを貼り付けます。
「項目を作成」ボタンを押下します。

※今回は筆者の贔屓にしているアーティストのアルバムとその曲順を想定したデータとしていますが、ここは作成されているデータに応じて実データを投入してください。

{
  "id": "20260513001",
  "year": 2026,
  "artist": "HYDE",
  "album,": "JEKYLL",
  "date": "2026/05/13",
  "isChecked": false,
  "setlist": [
      { "songOrder": 1, "songTitle": "DIE HAPPILY" },
      { "songOrder": 2, "songTitle": "SSS (Sending Secret Signals)" },
      { "songOrder": 3, "songTitle": "MAISIE" },
      { "songOrder": 4, "songTitle": "FINAL PIECE" },
      { "songOrder": 5, "songTitle": "SO DREAMY" },
      { "songOrder": 6, "songTitle": "THE ABYSS" },
      { "songOrder": 7, "songTitle": "TATTOO" },
      { "songOrder": 8, "songTitle": "NOSTALGIC" },
      { "songOrder": 9, "songTitle": "SMILING" },
      { "songOrder": 10, "songTitle": "FADING OUT" }
    ]
}

4.7 想定通りのレコードが作成されていればOKです。

5. AWS SDKのインストール

5.1 お使いのエディタから以下のコマンドをプロジェクト直下で実施します。

npm install @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb

上記を行うことで関数一つで簡単にPGからDynamoDBへアクセス可能になります。

6. あとがき

今回はVercelとAWSを連携させると冒頭に記載しましたが、事前に必要なAWS周りの設定を中心に記載いたしました。
IAMとDynamoDB、AWS SDKに留めましたが次回はS3やCloudFrontの設定について記載予定です。

7. 参考

投稿者プロフィール

KakazuYoshinari

関連記事

  1. AWS

    【AWS】Deploy Serverless NextJS app w…

  2. AWS

    【AWS】API Gateway + Lambda + SESで汎用メ…

  3. 日記アプリ第2回

    【第2回】AIエージェントと一緒にクラウド日記アプリ開発してみる:Ne…

  4. AWSのロールプレイングゲーム「AWS Cloud Quest」を触っ…

  5. Ollama の環境構築メモ

  6. AWS

    【AWS】Amazon DynamoDBを使ってみる(Manageme…

最近の記事

  1. Go-Logo_Aqua
  2. 2026.07.09

    AWTF2026の紹介
  3. Go-Logo_Aqua

制作実績一覧

  1. Vivaya
  2. Checkeys