AWS SDK を使用した DynamoDB のコード例
以下は、AWS ソフトウェア開発キット (SDK) で DynamoDB を使用する方法を説明するコード例です。
「基本」は、重要なオペレーションをサービス内で実行する方法を示すコード例です。
アクションはより大きなプログラムからのコードの抜粋であり、コンテキスト内で実行する必要があります。アクションは個々のサービス機能を呼び出す方法を示していますが、コンテキスト内のアクションは、関連するシナリオで確認できます。
「シナリオ」は、1 つのサービス内から、または他の AWS のサービスと組み合わせて複数の関数を呼び出し、特定のタスクを実行する方法を示すコード例です。
AWS SDK デベロッパーガイドとコード例の完全なリストについては、「AWS SDK で DynamoDB を使用する」を参照してください。このトピックには、使用開始方法に関する情報と、以前の SDK バージョンの詳細も含まれています。
開始方法
次のコード例は、DynamoDB の使用を開始する方法を示しています。
- .NET
-
- AWS SDK for .NET
-
注記
GitHub には、その他のリソースもあります。AWS コード例リポジトリ
で全く同じ例を見つけて、設定と実行の方法を確認してください。 using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.Model; namespace DynamoDB_Actions; public static class HelloDynamoDB { static async Task Main(string[] args) { var dynamoDbClient = new AmazonDynamoDBClient(); Console.WriteLine($"Hello Amazon Dynamo DB! Following are some of your tables:"); Console.WriteLine(); // You can use await and any of the async methods to get a response. // Let's get the first five tables. var response = await dynamoDbClient.ListTablesAsync( new ListTablesRequest() { Limit = 5 }); foreach (var table in response.TableNames) { Console.WriteLine($"\tTable: {table}"); Console.WriteLine(); } } }
-
API の詳細については、「AWS SDK for .NET API リファレンス」の「ListTables」を参照してください。
-
- C++
-
- SDK for C++
-
注記
GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 CMakeLists.txt CMake ファイルのコード。
# Set the minimum required version of CMake for this project. cmake_minimum_required(VERSION 3.13) # Set the AWS service components used by this project. set(SERVICE_COMPONENTS dynamodb) # Set this project's name. project("hello_dynamodb") # Set the C++ standard to use to build this target. # At least C++ 11 is required for the AWS SDK for C++. set(CMAKE_CXX_STANDARD 11) # Use the MSVC variable to determine if this is a Windows build. set(WINDOWS_BUILD ${MSVC}) if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK. string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all") list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH}) endif () # Find the AWS SDK for C++ package. find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS}) if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS) # Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging. # set(BIN_SUB_DIR "/Debug") # if you are building from the command line you may need to uncomment this # and set the proper subdirectory to the executables' location. AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR}) endif () add_executable(${PROJECT_NAME} hello_dynamodb.cpp) target_link_libraries(${PROJECT_NAME} ${AWSSDK_LINK_LIBRARIES})
hello_dynamodb.cpp ソースファイルのコード。
#include <aws/core/Aws.h> #include <aws/dynamodb/DynamoDBClient.h> #include <aws/dynamodb/model/ListTablesRequest.h> #include <iostream> /* * A "Hello DynamoDB" starter application which initializes an Amazon DynamoDB (DynamoDB) client and lists the * DynamoDB tables. * * main function * * Usage: 'hello_dynamodb' * */ int main(int argc, char **argv) { Aws::SDKOptions options; // Optionally change the log level for debugging. // options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug; Aws::InitAPI(options); // Should only be called once. int result = 0; { Aws::Client::ClientConfiguration clientConfig; // Optional: Set to the AWS Region (overrides config file). // clientConfig.region = "us-east-1"; Aws::DynamoDB::DynamoDBClient dynamodbClient(clientConfig); Aws::DynamoDB::Model::ListTablesRequest listTablesRequest; listTablesRequest.SetLimit(50); do { const Aws::DynamoDB::Model::ListTablesOutcome &outcome = dynamodbClient.ListTables( listTablesRequest); if (!outcome.IsSuccess()) { std::cout << "Error: " << outcome.GetError().GetMessage() << std::endl; result = 1; break; } for (const auto &tableName: outcome.GetResult().GetTableNames()) { std::cout << tableName << std::endl; } listTablesRequest.SetExclusiveStartTableName( outcome.GetResult().GetLastEvaluatedTableName()); } while (!listTablesRequest.GetExclusiveStartTableName().empty()); } Aws::ShutdownAPI(options); // Should only be called once. return result; }
-
API の詳細については、「AWS SDK for C++ API リファレンス」の「ListTables」を参照してください。
-
- Java
-
- SDK for Java 2.x
-
注記
GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.ListTablesRequest; import software.amazon.awssdk.services.dynamodb.model.ListTablesResponse; import java.util.List; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class ListTables { public static void main(String[] args) { System.out.println("Listing your Amazon DynamoDB tables:\n"); Region region = Region.US_EAST_1; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); listAllTables(ddb); ddb.close(); } public static void listAllTables(DynamoDbClient ddb) { boolean moreTables = true; String lastName = null; while (moreTables) { try { ListTablesResponse response = null; if (lastName == null) { ListTablesRequest request = ListTablesRequest.builder().build(); response = ddb.listTables(request); } else { ListTablesRequest request = ListTablesRequest.builder() .exclusiveStartTableName(lastName).build(); response = ddb.listTables(request); } List<String> tableNames = response.tableNames(); if (tableNames.size() > 0) { for (String curName : tableNames) { System.out.format("* %s\n", curName); } } else { System.out.println("No tables found!"); System.exit(0); } lastName = response.lastEvaluatedTableName(); if (lastName == null) { moreTables = false; } } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } } System.out.println("\nDone!"); } }
-
API の詳細については、「AWS SDK for Java 2.x API リファレンス」の「ListTables」を参照してください。
-
- JavaScript
-
- SDK for JavaScript (v3)
-
注記
GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 AWS SDK for JavaScript で DynamoDB を使用する方法の詳細については、「JavaScript による DynamoDB のプログラミング」を参照してください。
import { ListTablesCommand, DynamoDBClient } from "@aws-sdk/client-dynamodb"; const client = new DynamoDBClient({}); export const main = async () => { const command = new ListTablesCommand({}); const response = await client.send(command); console.log(response.TableNames.join("\n")); return response; };
-
API の詳細については、「AWS SDK for JavaScript API リファレンス」の「ListTables」を参照してください。
-
- Python
-
- SDK for Python (Boto3)
-
注記
GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 import boto3 # Create a DynamoDB client using the default credentials and region dynamodb = boto3.client("dynamodb") # Initialize a paginator for the list_tables operation paginator = dynamodb.get_paginator("list_tables") # Create a PageIterator from the paginator page_iterator = paginator.paginate(Limit=10) # List the tables in the current AWS account print("Here are the DynamoDB tables in your account:") # Use pagination to list all tables table_names = [] for page in page_iterator: for table_name in page.get("TableNames", []): print(f"- {table_name}") table_names.append(table_name) if not table_names: print("You don't have any DynamoDB tables in your account.") else: print(f"\nFound {len(table_names)} tables.")
-
API の詳細については、「AWS SDK for Python (Boto3) API リファレンス」の「ListTables」を参照してください。
-
- Ruby
-
- SDK for Ruby
-
注記
GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリ
での設定と実行の方法を確認してください。 require 'aws-sdk-dynamodb' require 'logger' # DynamoDBManager is a class responsible for managing DynamoDB operations # such as listing all tables in the current AWS account. class DynamoDBManager def initialize(client) @client = client @logger = Logger.new($stdout) end # Lists and prints all DynamoDB tables in the current AWS account. def list_tables @logger.info('Here are the DynamoDB tables in your account:') paginator = @client.list_tables(limit: 10) table_names = [] paginator.each_page do |page| page.table_names.each do |table_name| @logger.info("- #{table_name}") table_names << table_name end end if table_names.empty? @logger.info("You don't have any DynamoDB tables in your account.") else @logger.info("\nFound #{table_names.length} tables.") end end end if $PROGRAM_NAME == __FILE__ dynamodb_client = Aws::DynamoDB::Client.new manager = DynamoDBManager.new(dynamodb_client) manager.list_tables end
-
API の詳細については、「AWS SDK for Ruby API リファレンス」の「ListTables」を参照してください。
-
コードの例
- 基本
- シナリオ
- DAX で読み取りを高速化
- DynamoDB テーブルにデータを送信するアプリケーションを構築する
- 項目の TTL を条件付きで更新する
- ローカルインスタンスに接続する
- COVID-19 データを追跡する REST API を作成する
- メッセンジャーアプリケーションを作成する
- サーバーレスアプリケーションを作成して写真の管理
- DynamoDB データを追跡するウェブアプリケーションを作成する
- WebSocket チャットアプリケーションを作成する
- TTL を含む項目を作成する
- イメージ内の PPE を検出する
- ブラウザからの Lambda 関数の呼び出し
- DynamoDB のパフォーマンスのモニタリング
- PartiQL ステートメントのバッチを使用してテーブルにクエリを実行する
- PartiQL を使用してテーブルに対してクエリを実行する
- TTL 項目のクエリ
- EXIF およびその他のイメージ情報を保存します
- 項目を TTL を更新する
- API Gateway を使用して Lambda 関数を呼び出す
- Step Functions を使用して Lambda 関数を呼び出す
- ドキュメントモデルを使用する
- 高レベルのオブジェクト永続性モデルを使用する
- スケジュールされたイベントを使用した Lambda 関数の呼び出し
- サーバーレスサンプル