📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。<br> <br><br> == DynamoDBの無料枠について == ==== 無料枠の内容 ==== * ストレージ : 25[GB]まで無料 * 読み込みリクエスト *: 月200万リクエスト (25 RCU相当) * 書き込みリクエスト *: 月200万リクエスト (25 WCU相当) * データ転…」
 
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。<br>
AWS DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスである。<br>
キー・バリュー型およびドキュメント型のデータモデルをサポートし、高速で予測可能なパフォーマンスとシームレスなスケーラビリティを実現する。<br>
<br>
主な特徴を以下に示す。<br>
* フルマネージド
*: サーバ管理、ソフトウェアパッチ、セットアップ不要
* 高パフォーマンス
*: 一桁ミリ秒のレスポンスタイム
* 自動スケーリング
*: トラフィックに応じて自動的に容量を調整
* 高可用性
*: 複数のAZに自動的にデータを複製
* 柔軟なスキーマ
*: 各アイテムが異なる属性を持つことが可能
<br>
AWS DynamoDBのデータモデルを以下に示す。<br>
* テーブル
*: データを格納する最上位のコンテナ
* アイテム
*: テーブル内の個々のレコード
* 属性
*: アイテムを構成するデータフィールド (カラムに相当)
* プライマリキー
*: パーティションキー (必須) と ソートキー (オプション) で構成
<br>
AWS DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。<br>
<br><br>
<br><br>


30行目: 55行目:
** 読み込みキャパシティ: $0.000148 / RCU / 時間
** 読み込みキャパシティ: $0.000148 / RCU / 時間
** ストレージ: $0.285 / GB / 月
** ストレージ: $0.285 / GB / 月
<br><br>
== DynamoDBの停止 ==
DynamoDBには <u>停止</u> という概念がない。<br>
EC2 や RDS のようなインスタンスベースのサービスとは異なり、DynamoDBはフルマネージドのサーバーレスデータベースで、ユーザ側でサーバやインスタンスを管理する必要がないためである。<br>
<br>
==== コストを抑える方法 ====
使用していない場合のコストを抑えるには、以下の選択肢がある。<br>
<br>
===== 1. オンデマンドモードを使用 =====
* リクエストした分だけ課金される。
* アクセスがなければリクエスト料金は発生しない。
* ストレージは25[GB]まで永続的に無料である。
<br>
===== 2. テーブルを削除 =====
* 完全に使用しない場合は削除する。
* 必要に応じてバックアップから復元可能。
<br>
===== 3. プロビジョニングモードの調整 =====
* プロビジョニングモードを使用している場合は、最小限のキャパシティ (読み込み 1、書き込み 1) に設定する。
* <u>ただし、この場合も最小限の課金は発生する。</u>
<br>
==== ストレージ料金について ====
無料枠内 (25[GB]以下) の場合<br>
* ストレージ料金は発生しない(永続的な無料枠)
* オンデマンドモードでアクセスがなければ、基本的にコストは0円
<br>
無料枠を超える場合 (25[GB]超え)<br>
* 超過分に対して$0.285/GB/月が課金される。
* 例 : 30[GB]のデータがある場合は、5[GB]分の料金 (約$1.43/月) が発生する。
<br>
==== コストを下げる方法 ====
* ストレージコスト
*: データが25[GB]以下であれば永続的に無料である。
*: 25[GB]を超える場合のみ超過分の料金が発生。
* バックアップ
*: テーブル削除前にオンデマンドバックアップやPoint-in-Time Recovery (PITR) を検討する。
* データエクスポート
*: S3へのエクスポートも選択肢の1つである。
<br>
<u>完全に無料にするには、データが25[GB]以下でオンデマンドモードを有効にして、データベースにアクセスしないこと。</u><br>
<br><br>
<br><br>


372行目: 438行目:
  # 実行方法
  # 実行方法
  python3 dynamodb_example.py
  python3 dynamodb_example.py
<br>
==== デバッグ方法 ====
<syntaxhighlight lang="sh">
# AWS CLIのデバッグモード
aws dynamodb list-tables --debug
</syntaxhighlight>
<br>
<syntaxhighlight lang="python">
# boto3のログ設定
import logging
logging.basicConfig(level=logging.DEBUG)
</syntaxhighlight>
<br><br>
== セキュリティ ==
==== アクセスキーの管理 ====
* アクセスキーをコードに直接記述しない。
* GitHubなどにアクセスキーをコミットしない。
* 定期的にアクセスキーをローテーションする。(90日ごと推奨)
* 不要になったアクセスキーは削除する。
<br>
==== IAMポリシーの最小権限 ====
* AWS DynamoDB専用のIAMユーザを作成する場合
<syntaxhighlight lang="json">
{
    "Version": "2026-10-17",
    "Statement": [
      {
          "Effect": "Allow",
          "Action": [
            "dynamodb:PutItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem"
          ],
          "Resource": "arn:aws:dynamodb:ap-northeast-1:*:table/MyTable"
      }
    ]
}
</syntaxhighlight>
<br>
==== VPCエンドポイントの利用 (オプション) ====
EC2等のAWSリソースからアクセスする場合は、VPCエンドポイントを使用するとインターネットを経由せずにDynamoDBにアクセスすることができる。<br>
<br><br>
== トラブルシューティング ==
==== エラー : "An error occurred (AccessDeniedException)" ====
* 原因
*: IAM権限不足
* 解決
*: IAMユーザに適切なポリシーをアタッチする。
<br>
==== エラー : "ResourceNotFoundException" ====
* 原因
*: テーブルが存在しない、またはリージョンが違う
* 解決
*: テーブル名とリージョンを確認する。
<br>
==== エラー : "ValidationException" ====
* 原因
*: データ型の不一致や必須キーの欠如
* 解決
*: スキーマ定義を確認する。
<br><br>
<br><br>