AWS - DynamoDB

提供: MochiuWiki : SUSE, EC, PCB

2025年11月18日 (火) 13:45時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。<br> <br><br> == DynamoDBの無料枠について == ==== 無料枠の内容 ==== * ストレージ : 25[GB]まで無料 * 読み込みリクエスト *: 月200万リクエスト (25 RCU相当) * 書き込みリクエスト *: 月200万リクエスト (25 WCU相当) * データ転…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

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

概要

DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。


DynamoDBの無料枠について

無料枠の内容

  • ストレージ : 25[GB]まで無料
  • 読み込みリクエスト
    月200万リクエスト (25 RCU相当)
  • 書き込みリクエスト
    月200万リクエスト (25 WCU相当)
  • データ転送
    同一リージョン内は無料、1[GB]/月のアウトまで無料


※注意

  • この無料枠は12ヶ月限定ではなく、永続的に利用可能である。
  • DynamoDBオンデマンドモードでも無料枠が適用される。
  • グローバルテーブル、バックアップ、ストリームは別料金が掛かる。


料金体系

無料枠を超えた場合の料金 (東京リージョンの例)

  • オンデマンドモード
    • 書き込み: $1.4464 / 100万リクエスト
    • 読み込み: $0.28928 / 100万リクエスト
    • ストレージ: $0.285 / GB / 月

  • プロビジョンドモード
    • 書き込みキャパシティ: $0.000742 / WCU / 時間
    • 読み込みキャパシティ: $0.000148 / RCU / 時間
    • ストレージ: $0.285 / GB / 月



DynamoDBテーブルの作成

マネジメントコンソールでの作成

  1. AWSマネジメントコンソールにログインする。
  2. リージョンを選択する。
    東京リージョン : ap-northeast-1
  3. 検索バーに "DynamoDB" と入力して選択する。
  4. [テーブルの作成]を選択する。


テーブル設定

  1. テーブル名を入力する。
    例 : MyTable
  2. パーティションキーを設定する。
    • 属性名を入力(例:id
    • 型を選択:「文字列」、「数値」、「バイナリ」のいずれか
  3. ソートキー (オプション)
    • 必要に応じて追加する。
    • パーティションキーとソートキーの組み合わせが一意になる。
  4. テーブルクラス
    [DynamoDB Standard]を選択する。(推奨)
  5. キャパシティモード
    • オンデマンド (推奨)
      アクセスパターンが不規則な場合
    • プロビジョンド
      安定したアクセスパターンの場合
  6. [テーブルの作成]を選択する。


ステータスが"アクティブ"になれば使用可能である。

テーブル設定の確認

作成したテーブルを選択して、以下に示す項目を確認する。

  • 概要タブ
    テーブルのARN、作成日時、項目数
  • インデックスタブ
    グローバルセカンダリインデックス (GSI) の追加が可能
  • モニタータブ
    リクエスト数、レイテンシー等のメトリクス
  • アラームタブ
    CloudWatchアラームの設定



以下、MediaWiki形式で記述します: mediawiki== 概要 ==

このドキュメントでは、AWS DynamoDBの無料枠の詳細とテーブルの作成方法、Linux PCからのアクセス設定、基本的な操作方法について説明します。DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることがほとんどです。

DynamoDBの無料枠について

無料枠の内容

AWS無料利用枠(永続的):

  • ストレージ: 25 GBまで無料
  • 読み込みリクエスト: 月200万リクエスト(25 RCU相当)
  • 書き込みリクエスト: 月200万リクエスト(25 WCU相当)
  • データ転送: 同一リージョン内は無料、1 GB/月のアウトまで無料

注意点:

  • この無料枠は12ヶ月限定ではなく、永続的に利用可能
  • DynamoDBオンデマンドモードでも無料枠が適用されます
  • グローバルテーブル、バックアップ、ストリームは別料金

料金体系

無料枠を超えた場合の料金(東京リージョンの例):

オンデマンドモード:

  • 書き込み: $1.4464 / 100万リクエスト
  • 読み込み: $0.28928 / 100万リクエスト
  • ストレージ: $0.285 / GB / 月

プロビジョンドモード:

  • 書き込みキャパシティ: $0.000742 / WCU / 時間
  • 読み込みキャパシティ: $0.000148 / RCU / 時間
  • ストレージ: $0.285 / GB / 月

個人利用であれば、無料枠内で十分収まることがほとんどです。

DynamoDBテーブルの作成

マネジメントコンソールでの作成

手順:

  1. AWSマネジメントコンソールにログイン
  2. リージョンを選択(東京リージョン: ap-northeast-1 推奨)
  3. 検索バーに「DynamoDB」と入力して選択
  4. 「テーブルの作成」をクリック

テーブル設定:

  1. テーブル名を入力(例:MyTable
  2. パーティションキーを設定:
    • 属性名を入力(例:id
    • 型を選択:「文字列」、「数値」、「バイナリ」のいずれか
  3. ソートキー(オプション):
    • 必要に応じて追加
    • パーティションキーとソートキーの組み合わせが一意になります

テーブル設定:

  1. テーブルクラス:「DynamoDB Standard」を選択(推奨)
  2. キャパシティモード:
    • オンデマンド(推奨):アクセスパターンが不規則な場合
    • プロビジョンド:安定したアクセスパターンの場合
  3. 「テーブルの作成」をクリック

作成には数秒かかります。ステータスが「アクティブ」になれば使用可能です。

テーブル設定の確認

作成したテーブルをクリックして、以下を確認:

  • 概要タブ: テーブルのARN、作成日時、項目数
  • インデックスタブ: グローバルセカンダリインデックス(GSI)の追加が可能
  • モニタータブ: リクエスト数、レイテンシーなどのメトリクス
  • アラームタブ: CloudWatchアラームの設定

Linux PCからのアクセス設定

AWS CLIのインストール

方法1 : pip経由 (推奨)

Python3をインストールする。

sudo apt update
sudo apt install python3 python3-pip -y


AWS CLIをインストールする。

pip3 install awscli --user


正常にインストールされているかどうかを確認する。

aws --version


方法2 : 公式インストーラ

AWS CLIをダウンロードおよびインストールする。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install


正常にインストールされているかどうかを確認する。

aws --version


アクセスキーの作成

  1. AWSマネジメントコンソールで "IAM" を検索する。
  2. [ユーザ] - 作成したIAMユーザを選択する。
  3. [セキュリティ認証情報]タブを選択する。
  4. [アクセスキーを作成]を選択する。
  5. ユースケース : [コマンドラインインターフェイス (CLI)]を選択する。
  6. 確認のチェックボックスにチェックを入力する。
  7. [次へ]を選択する。
  8. 説明タグを入力する。(オプション)
    例 : MyLinuxPC
  9. [アクセスキーを作成]を選択する。
    重要 : アクセスキーIDとシークレットアクセスキーを控えておく。
    • シークレットキーは後で確認できない。
    • .csvファイルをダウンロードして安全に保管する。


AWS CLIの設定

設定コマンドを実行する。

aws configure


以下に示すものを順番に入力する。

  • AWS Access Key ID
    作成したアクセスキーID
  • AWS Secret Access Key
    シークレットアクセスキー
  • Default region name
    例 : ap-northeast-1 (東京リージョン)
  • Default output format
    json (推奨)


設定ファイルの場所は以下の通りである。

  • ~/.aws/credentials
    アクセスキー情報
  • ~/.aws/config
    リージョンや出力形式


接続テスト

DynamoDBテーブル一覧を取得する。

aws dynamodb list-tables


特定のテーブルの情報を取得する。

aws dynamodb describe-table --table-name MyTable



DynamoDBの基本操作 (CLI)

データの追加

 # 単一アイテムの追加
 aws dynamodb put-item \
    --table-name MyTable \
    --item '{
       "id": {"S": "001"},
       "name": {"S": "山田太郎"},
       "age": {"N": "30"},
       "email": {"S": "yamada@example.com"}
    }'


データの取得

 # 単一アイテムの取得
 aws dynamodb get-item \
    --table-name MyTable \
    --key '{
       "id": {"S": "001"}
    }'


データのクエリ

 # パーティションキーでのクエリ
 aws dynamodb query \
    --table-name MyTable \
    --key-condition-expression "id = :id" \
    --expression-attribute-values '{
       ":id": {"S": "001"}
    }'


データのスキャン

 # テーブル全体のスキャン (注意 : 大きなテーブルでは高コスト)
 aws dynamodb scan \
    --table-name MyTable \
    --limit 10


データの更新 (UpdateItem)

 # 既存アイテムの更新
 aws dynamodb update-item \
    --table-name MyTable \
    --key '{
       "id": {"S": "001"}
    }' \
    --update-expression "SET age = :newage" \
    --expression-attribute-values '{
       ":newage": {"N": "31"}
    }'


データの削除 (DeleteItem)

 # 単一アイテムの削除
 aws dynamodb delete-item \
    --table-name MyTable \
    --key '{
       "id": {"S": "001"}
    }'



Python SDK (boto3) の使用

以下の例では、Pythonを使用してAWS DynamoDBを操作している。

まず、boto3をインストールする。

pip3 install boto3 --user


 # dynamodb_example.pyファイル
 
 import boto3
 from boto3.dynamodb.conditions import Key
 
 # DynamoDBリソースの作成
 dynamodb = boto3.resource('dynamodb', region_name='ap-northeast-1')
 table = dynamodb.Table('MyTable')
 
 # データの追加
 def put_item():
    response = table.put_item(
       Item={
          'id': '002',
          'name': '佐藤花子',
          'age': 25,
          'email': 'sato@example.com'
       }
    )
    print("PutItem成功:", response)
 
 # データの取得
 def get_item():
    response = table.get_item(
       Key={
          'id': '002'
       }
    )
    item = response.get('Item')
    print("取得したアイテム:", item)
 
 # データのクエリ
 def query_items():
    response = table.query(
       KeyConditionExpression=Key('id').eq('002')
    )
    items = response.get('Items', [])
    print("クエリ結果:", items)
 
 # データの更新
 def update_item():
    response = table.update_item(
       Key={
          'id': '002'
       },
       UpdateExpression='SET age = :val',
       ExpressionAttributeValues={
          ':val': 26
       }
    )
    print("UpdateItem成功:", response)
 
 # データの削除
 def delete_item():
    response = table.delete_item(
       Key={
          'id': '002'
       }
    )
    print("DeleteItem成功:", response)
 
 # メイン処理
 if __name__ == '__main__':
    put_item()
    get_item()
    update_item()
    query_items()
    # delete_item()  # 削除する場合はコメント解除


# 実行方法
python3 dynamodb_example.py