MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
AWS - DynamoDBのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
AWS - DynamoDB
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。<br> <br><br> == DynamoDBの無料枠について == ==== 無料枠の内容 ==== * ストレージ : 25[GB]まで無料 * 読み込みリクエスト *: 月200万リクエスト (25 RCU相当) * 書き込みリクエスト *: 月200万リクエスト (25 WCU相当) * データ転送 *: 同一リージョン内は無料、1[GB]/月のアウトまで無料 <br> <u>※注意</u><br> * この無料枠は12ヶ月限定ではなく、永続的に利用可能である。 * DynamoDBオンデマンドモードでも無料枠が適用される。 * グローバルテーブル、バックアップ、ストリームは別料金が掛かる。 <br> ==== 料金体系 ==== 無料枠を超えた場合の料金 (東京リージョンの例)<br> <br> * オンデマンドモード ** 書き込み: $1.4464 / 100万リクエスト ** 読み込み: $0.28928 / 100万リクエスト ** ストレージ: $0.285 / GB / 月 *: <br> * プロビジョンドモード ** 書き込みキャパシティ: $0.000742 / WCU / 時間 ** 読み込みキャパシティ: $0.000148 / RCU / 時間 ** ストレージ: $0.285 / GB / 月 <br><br> == DynamoDBテーブルの作成 == ==== マネジメントコンソールでの作成 ==== # AWSマネジメントコンソールにログインする。 # リージョンを選択する。 #: 東京リージョン : ap-northeast-1 # 検索バーに "DynamoDB" と入力して選択する。 # [テーブルの作成]を選択する。 <br> ==== テーブル設定 ==== # テーブル名を入力する。 #: 例 : MyTable # パーティションキーを設定する。 #* 属性名を入力(例:<code>id</code>) #* 型を選択:「文字列」、「数値」、「バイナリ」のいずれか # ソートキー (オプション) #* 必要に応じて追加する。 #* パーティションキーとソートキーの組み合わせが一意になる。 # テーブルクラス #: [DynamoDB Standard]を選択する。(推奨) # キャパシティモード #* オンデマンド (推奨) #*: アクセスパターンが不規則な場合 #* プロビジョンド #*: 安定したアクセスパターンの場合 # [テーブルの作成]を選択する。 <br> ステータスが"アクティブ"になれば使用可能である。<br> <br> ==== テーブル設定の確認 ==== 作成したテーブルを選択して、以下に示す項目を確認する。<br> <br> * 概要タブ *: テーブルのARN、作成日時、項目数 * インデックスタブ *: グローバルセカンダリインデックス (GSI) の追加が可能 * モニタータブ *: リクエスト数、レイテンシー等のメトリクス * アラームタブ *: CloudWatchアラームの設定 <br><br> 以下、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テーブルの作成 == ==== マネジメントコンソールでの作成 ==== 手順: # AWSマネジメントコンソールにログイン # リージョンを選択(東京リージョン: <code>ap-northeast-1</code> 推奨) # 検索バーに「DynamoDB」と入力して選択 # 「テーブルの作成」をクリック テーブル設定: <ol start="5"> <li>テーブル名を入力(例:<code>MyTable</code>)</li> <li>パーティションキーを設定: * 属性名を入力(例:<code>id</code>) * 型を選択:「文字列」、「数値」、「バイナリ」のいずれか </li> <li>ソートキー(オプション): * 必要に応じて追加 * パーティションキーとソートキーの組み合わせが一意になります </li> </ol> テーブル設定: <ol start="8"> <li>テーブルクラス:「DynamoDB Standard」を選択(推奨)</li> <li>キャパシティモード: * オンデマンド(推奨):アクセスパターンが不規則な場合 * プロビジョンド:安定したアクセスパターンの場合 </li> <li>「テーブルの作成」をクリック</li> </ol> 作成には数秒かかります。ステータスが「アクティブ」になれば使用可能です。 ==== テーブル設定の確認 ==== 作成したテーブルをクリックして、以下を確認: * 概要タブ: テーブルのARN、作成日時、項目数 * インデックスタブ: グローバルセカンダリインデックス(GSI)の追加が可能 * モニタータブ: リクエスト数、レイテンシーなどのメトリクス * アラームタブ: CloudWatchアラームの設定 == Linux PCからのアクセス設定 == ==== AWS CLIのインストール ==== ===== 方法1 : pip経由 (推奨) ===== Python3をインストールする。<br> sudo apt update sudo apt install python3 python3-pip -y <br> AWS CLIをインストールする。<br> pip3 install awscli --user <br> 正常にインストールされているかどうかを確認する。<br> aws --version <br> ===== 方法2 : 公式インストーラ ===== AWS CLIをダウンロードおよびインストールする。<br> curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install <br> 正常にインストールされているかどうかを確認する。<br> aws --version <br> ==== アクセスキーの作成 ==== # AWSマネジメントコンソールで "IAM" を検索する。 # [ユーザ] - 作成したIAMユーザを選択する。 # [セキュリティ認証情報]タブを選択する。 # [アクセスキーを作成]を選択する。 # ユースケース : [コマンドラインインターフェイス (CLI)]を選択する。 # 確認のチェックボックスにチェックを入力する。 # [次へ]を選択する。 # 説明タグを入力する。(オプション) #: 例 : MyLinuxPC # [アクセスキーを作成]を選択する。 #: 重要 : アクセスキーIDとシークレットアクセスキーを控えておく。 #* シークレットキーは後で確認できない。 #* .csvファイルをダウンロードして安全に保管する。 <br> ==== AWS CLIの設定 ==== 設定コマンドを実行する。<br> aws configure <br> 以下に示すものを順番に入力する。<br> * AWS Access Key ID *: 作成したアクセスキーID * AWS Secret Access Key *: シークレットアクセスキー * Default region name *: 例 : ap-northeast-1 (東京リージョン) * Default output format *: json (推奨) <br> 設定ファイルの場所は以下の通りである。<br> * ~/.aws/credentials *: アクセスキー情報 * ~/.aws/config *: リージョンや出力形式 <br> ==== 接続テスト ==== DynamoDBテーブル一覧を取得する。<br> aws dynamodb list-tables <br> 特定のテーブルの情報を取得する。<br> aws dynamodb describe-table --table-name MyTable <br><br> == DynamoDBの基本操作 (CLI) == ==== データの追加 ==== <syntaxhighlight lang="sh"> # 単一アイテムの追加 aws dynamodb put-item \ --table-name MyTable \ --item '{ "id": {"S": "001"}, "name": {"S": "山田太郎"}, "age": {"N": "30"}, "email": {"S": "yamada@example.com"} }' </syntaxhighlight> <br> ==== データの取得 ==== <syntaxhighlight lang="sh"> # 単一アイテムの取得 aws dynamodb get-item \ --table-name MyTable \ --key '{ "id": {"S": "001"} }' </syntaxhighlight> <br> ==== データのクエリ ==== <syntaxhighlight lang="sh"> # パーティションキーでのクエリ aws dynamodb query \ --table-name MyTable \ --key-condition-expression "id = :id" \ --expression-attribute-values '{ ":id": {"S": "001"} }' </syntaxhighlight> <br> ==== データのスキャン ==== <syntaxhighlight lang="sh"> # テーブル全体のスキャン (注意 : 大きなテーブルでは高コスト) aws dynamodb scan \ --table-name MyTable \ --limit 10 </syntaxhighlight> <br> ==== データの更新 (UpdateItem) ==== <syntaxhighlight lang="sh"> # 既存アイテムの更新 aws dynamodb update-item \ --table-name MyTable \ --key '{ "id": {"S": "001"} }' \ --update-expression "SET age = :newage" \ --expression-attribute-values '{ ":newage": {"N": "31"} }' </syntaxhighlight> <br> ==== データの削除 (DeleteItem) ==== <syntaxhighlight lang="sh"> # 単一アイテムの削除 aws dynamodb delete-item \ --table-name MyTable \ --key '{ "id": {"S": "001"} }' </syntaxhighlight> <br><br> == Python SDK (boto3) の使用 == 以下の例では、Pythonを使用してAWS DynamoDBを操作している。<br> <br> まず、boto3をインストールする。<br> pip3 install boto3 --user <br> <syntaxhighlight lang="python"> # 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() # 削除する場合はコメント解除 </syntaxhighlight> <br> # 実行方法 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> __FORCETOC__ [[カテゴリ:Web]]
AWS - DynamoDB
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse