Lire un élément d'une table DynamoDB - Amazon DynamoDB

Lire un élément d'une table DynamoDB

Vous pouvez lire des éléments provenant de tables DynamoDB à l'aide de l'AWS Management Console, de l'AWS CLI, ou d'un kit AWS SDK. Pour plus d'informations sur les éléments, consultez Principaux composants d'Amazon DynamoDB.

Lire un élément d'une table DynamoDB à l'aide d'un kit AWS SDK

Les exemples de code suivants montrent comment lire un élément d'une table DynamoDB à l'aide d'un kit AWS SDK.

C++
Kit SDK for C++

Aws::Client::ClientConfiguration clientConfig; Aws::DynamoDB::DynamoDBClient dynamoClient(clientConfig); Aws::DynamoDB::Model::GetItemRequest req; // Set up the request. req.SetTableName(table); Aws::DynamoDB::Model::AttributeValue hashKey; hashKey.SetS(keyval); req.AddKey(key, hashKey); // Retrieve the item's fields and values const Aws::DynamoDB::Model::GetItemOutcome& result = dynamoClient.GetItem(req); if (result.IsSuccess()) { // Reference the retrieved fields/values. const Aws::Map<Aws::String, Aws::DynamoDB::Model::AttributeValue>& item = result.GetResult().GetItem(); if (item.size() > 0) { // Output each retrieved field and its value. for (const auto& i : item) std::cout << "Values: " << i.first << ": " << i.second.GetS() << std::endl; } else { std::cout << "No item found with the key " << key << std::endl; } } else { std::cout << "Failed to get item: " << result.GetError().GetMessage(); }
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API AWS SDK for C++.

Go
Kit SDK for Go V2

// TableBasics encapsulates the Amazon DynamoDB service actions used in the examples. // It contains a DynamoDB service client that is used to act on the specified table. type TableBasics struct { DynamoDbClient *dynamodb.Client TableName string } // GetMovie gets movie data from the DynamoDB table by using the primary composite key // made of title and year. func (basics TableBasics) GetMovie(title string, year int) (Movie, error) { movie := Movie{Title: title, Year: year} response, err := basics.DynamoDbClient.GetItem(context.TODO(), &dynamodb.GetItemInput{ Key: movie.GetKey(), TableName: aws.String(basics.TableName), }) if err != nil { log.Printf("Couldn't get info about %v. Here's why: %v\n", title, err) } else { err = attributevalue.UnmarshalMap(response.Item, &movie) if err != nil { log.Printf("Couldn't unmarshal response. Here's why: %v\n", err) } } return movie, err }
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API AWS SDK for Go.

Java
SDK pour Java 2.x

Extrait un élément d'une table à l'aide du client amélioré.

public static void getItem(DynamoDbEnhancedClient enhancedClient) { try { DynamoDbTable<Customer> table = enhancedClient.table("Customer", TableSchema.fromBean(Customer.class)); Key key = Key.builder() .partitionValue("id120") .build(); // Get the item by using the key. Customer result = table.getItem(r->r.key(key)); System.out.println("******* The description value is "+result.getCustName()); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } }
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API AWS SDK for Java 2.x.

JavaScript
SDK pour JavaScript V3

Créez le client.

// Create the DynamoDB service client module using ES6 syntax. import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // Set the AWS Region. export const REGION = "REGION"; // For example, "us-east-1". // Create an Amazon DynamoDB service client object. export const ddbClient = new DynamoDBClient({ region: REGION });

Créez le client de document DynamoDB.

// Create a service client module using ES6 syntax. import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; import { ddbClient } from "./ddbClient.js"; // Set the AWS Region. const REGION = "REGION"; // For example, "us-east-1". const marshallOptions = { // Whether to automatically convert empty strings, blobs, and sets to `null`. convertEmptyValues: false, // false, by default. // Whether to remove undefined values while marshalling. removeUndefinedValues: false, // false, by default. // Whether to convert typeof object to map attribute. convertClassInstanceToMap: false, // false, by default. }; const unmarshallOptions = { // Whether to return numbers as a string instead of converting them to native JavaScript numbers. wrapNumbers: false, // false, by default. }; const translateConfig = { marshallOptions, unmarshallOptions }; // Create the DynamoDB document client. const ddbDocClient = DynamoDBDocumentClient.from(ddbClient, translateConfig); export { ddbDocClient };

Obtenir un élément d'une table

import { GetCommand } from "@aws-sdk/lib-dynamodb"; import { ddbDocClient } from "../libs/ddbDocClient.js"; // Set the parameters. export const params = { TableName: "TABLE_NAME", Key: { primaryKey: "VALUE_1", sortKey: "VALUE_2", }, }; export const getItem = async () => { try { const data = await ddbDocClient.send(new GetCommand(params)); console.log("Success :", data.Item); } catch (err) { console.log("Error", err); } }; getItem();

Obtenir un élément d'une table à l'aide de PartiQL.

// Import required AWS SDK clients and commands for Node.js. import { ExecuteStatementCommand } from "@aws-sdk/client-dynamodb"; import { ddbDocClient } from "../libs/ddbDocClient"; const tableName = process.argv[2]; const movieTitle1 = process.argv[3]; export const run = async (tableName, movieTitle1) => { const params = { Statement: "SELECT * FROM " + tableName + " where title=?", Parameters: [{ S: movieTitle1 }], }; try { const data = await ddbDocClient.send(new ExecuteStatementCommand(params)); for (let i = 0; i < data.Items.length; i++) { console.log( "Success. The query return the following data. Item " + i, data.Items[i].year, data.Items[i].title, data.Items[i].info ); } return "Run successfully"; // For unit tests. } catch (err) { console.error(err); } }; run(tableName, movieTitle1);

Obtenez des éléments par lot à partir d'une table à l'aide de PartiQL.

// Import required AWS SDK clients and commands for Node.js. import { BatchExecuteStatementCommand } from "@aws-sdk/client-dynamodb"; import { ddbDocClient } from "../libs/ddbDocClient.js"; const tableName = process.argv[2]; const movieYear1 = process.argv[3]; const movieTitle1 = process.argv[4]; const movieYear2 = process.argv[5]; const movieTitle2 = process.argv[6]; export const run = async ( tableName, movieYear1, movieTitle1, movieYear2, movieTitle2 ) => { const params = { Statements: [ { Statement: "SELECT * FROM " + tableName + " where title=? and year=?", Parameters: [{ S: movieTitle1 }, { N: movieYear1 }], }, { Statement: "SELECT * FROM " + tableName + " where title=? and year=?", Parameters: [{ S: movieTitle2 }, { N: movieYear2 }], }, ], }; try { const data = await ddbDocClient.send( new BatchExecuteStatementCommand(params) ); for (let i = 0; i < data.Responses.length; i++) { console.log(data.Responses[i].Item.year); console.log(data.Responses[i].Item.title); } return "Run successfully"; // For unit tests. } catch (err) { console.error(err); } }; run(tableName, movieYear1, movieTitle1, movieYear2, movieTitle2);
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API AWS SDK for JavaScript.

Kit SDK pour JavaScript V2

Obtenir un élément d'une table

// Load the AWS SDK for Node.js var AWS = require('aws-sdk'); // Set the region AWS.config.update({region: 'REGION'}); // Create the DynamoDB service object var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'}); var params = { TableName: 'TABLE', Key: { 'KEY_NAME': {N: '001'} }, ProjectionExpression: 'ATTRIBUTE_NAME' }; // Call DynamoDB to read the item from the table ddb.getItem(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Item); } });

Obtenez un élément d'une table à l'aide du client de document DynamoDB.

// Load the AWS SDK for Node.js var AWS = require('aws-sdk'); // Set the region AWS.config.update({region: 'REGION'}); // Create DynamoDB document client var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'}); var params = { TableName: 'EPISODES_TABLE', Key: {'KEY_NAME': VALUE} }; docClient.get(params, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Item); } });
Kotlin
Kits SDK pour Kotlin
Note

Ceci est une documentation préliminaire pour une fonctionnalité en version de prévisualisation. Elle est susceptible d'être modifiée.

suspend fun getSpecificItem(tableNameVal: String, keyName: String, keyVal: String) { val keyToGet = mutableMapOf<String, AttributeValue>() keyToGet[keyName] = AttributeValue.S(keyVal) val request = GetItemRequest { key = keyToGet tableName = tableNameVal } DynamoDbClient { region = "us-east-1" }.use { ddb -> val returnedItem = ddb.getItem(request) val numbersMap = returnedItem.item numbersMap?.forEach { key1 -> println(key1.key) println(key1.value) } } }
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetObject dans la référence d'API du kit AWS SDK pour Kotlin.

Python
SDK pour Python (Boto3)

class Movies: """Encapsulates an Amazon DynamoDB table of movie data.""" def __init__(self, dyn_resource): """ :param dyn_resource: A Boto3 DynamoDB resource. """ self.dyn_resource = dyn_resource self.table = None def get_movie(self, title, year): """ Gets movie data from the table for a specific movie. :param title: The title of the movie. :param year: The release year of the movie. :return: The data about the requested movie. """ try: response = self.table.get_item(Key={'year': year, 'title': title}) except ClientError as err: logger.error( "Couldn't get movie %s from table %s. Here's why: %s: %s", title, self.table.name, err.response['Error']['Code'], err.response['Error']['Message']) raise else: return response['Item']
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API du kit AWS SDK pour Python (Boto3).

Ruby
Kit SDK for Ruby

# Gets movie data from the table for a specific movie. # # @param title [String] The title of the movie. # @param year [Integer] The release year of the movie. # @return [Hash] The data about the requested movie. def get_movie(title, year) response = @table.get_item(key: {"year" => year, "title" => title}) rescue Aws::Errors::ServiceError => e puts("Couldn't get movie #{title} from table #{@table.name}. Here's why:") puts("\t#{e.code}: #{e.message}") raise else response.item end
  • Trouvez des instructions et plus de code sur GitHub.

  • Pour plus d'informations sur l'API, consultez GetItem dans la référence d'API AWS SDK for Ruby.

Pour obtenir plus d'exemples avec DynamoDB, consultez Exemples de code pour Amazon S3 utilisant des kits AWS SDK.