📢 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> | ||