SIGN IN SIGN UP

Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.

0 0 17 Java
2021-12-02 15:10:47 -05:00
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
/**
* Before running this C++ 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-cpp/v1/developer-guide/getting-started.html
*
* For information on the structure of the code examples and how to build and run the examples, see
* https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/getting-started-code-examples.html.
*
**/
2021-12-02 15:10:47 -05:00
// snippet-start:[dynamodb.cpp.update_item.inc]
#include <aws/core/Aws.h>
#include <aws/dynamodb/DynamoDBClient.h>
#include <aws/dynamodb/model/UpdateItemRequest.h>
#include <aws/dynamodb/model/UpdateItemResult.h>
#include <iostream>
// snippet-end:[dynamodb.cpp.update_item.inc]
#include "dynamodb_samples.h"
2021-12-02 15:10:47 -05:00
// snippet-start:[dynamodb.cpp.update_item.code]
//! Update an Amazon DynamoDB table item.
/*!
\sa updateItem()
\param tableName: The table name.
\param partitionKey: The partition key.
\param partitionValue: The value for the partition key.
\param attributeKey: The key for the attribute to be updated.
\param attributeValue: The value for the attribute to be updated.
\param clientConfiguration: AWS client configuration.
\return bool: Function succeeded.
*/
2021-12-02 15:10:47 -05:00
/*
* The example code only sets/updates an attribute value. It processes
* the attribute value as a string, even if the value could be interpreted
* as a number. Also, the example code does not remove an existing attribute
* from the key value.
2021-12-02 15:10:47 -05:00
*/
bool AwsDoc::DynamoDB::updateItem(const Aws::String &tableName,
const Aws::String &partitionKey,
const Aws::String &partitionValue,
const Aws::String &attributeKey,
const Aws::String &attributeValue,
const Aws::Client::ClientConfiguration &clientConfiguration) {
Aws::DynamoDB::DynamoDBClient dynamoClient(clientConfiguration);
// *** Define UpdateItem request arguments.
// Define TableName argument.
Aws::DynamoDB::Model::UpdateItemRequest request;
request.SetTableName(tableName);
// Define KeyName argument.
Aws::DynamoDB::Model::AttributeValue attribValue;
attribValue.SetS(partitionValue);
request.AddKey(partitionKey, attribValue);
// Construct the SET update expression argument.
Aws::String update_expression("SET #a = :valueA");
request.SetUpdateExpression(update_expression);
// Construct attribute name argument.
Aws::Map<Aws::String, Aws::String> expressionAttributeNames;
expressionAttributeNames["#a"] = attributeKey;
request.SetExpressionAttributeNames(expressionAttributeNames);
// Construct attribute value argument.
Aws::DynamoDB::Model::AttributeValue attributeUpdatedValue;
attributeUpdatedValue.SetS(attributeValue);
Aws::Map<Aws::String, Aws::DynamoDB::Model::AttributeValue> expressionAttributeValues;
expressionAttributeValues[":valueA"] = attributeUpdatedValue;
request.SetExpressionAttributeValues(expressionAttributeValues);
// Update the item.
const Aws::DynamoDB::Model::UpdateItemOutcome &outcome = dynamoClient.UpdateItem(
request);
if (outcome.IsSuccess()) {
std::cout << "Item was updated" << std::endl;
} else {
std::cerr << outcome.GetError().GetMessage() << std::endl;
return false;
}
return waitTableActive(tableName, dynamoClient);
}
// snippet-end:[dynamodb.cpp.update_item.code]
/*
* main function
*
* Usage: 'run_update_item <table_name> <partition_key> <partition_value> <attribute_key>
* <attribute_value>'
*
* Prerequisites: Create a pre-populated DynamoDB table.
*
* For instructions on populating a table with sample data, see
* https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.html.
*
*/
#ifndef TESTING_BUILD
int main(int argc, char **argv) {
if (argc < 6) {
std::cout << R"(
Usage:
run_update_item <table_name> <partition_key> <partition_value> <attribute_key>
<attribute_value>
Where:
table_name - Name of the table to put the item in.
partition_key - The partition key.
partition_value - The value of the partition key.
attribute_key - The attribute key.
attribute_value - The attribute value.
)";
2021-12-02 15:10:47 -05:00
return 1;
}
Aws::SDKOptions options;
Aws::InitAPI(options);
{
const Aws::String tableName(argv[1]);
const Aws::String partitionKey(argv[2]);
const Aws::String partitionValue(argv[3]);
const Aws::String attributeKey(argv[4]);
const Aws::String attributeValue(argv[5]);
2021-12-02 15:10:47 -05:00
Aws::Client::ClientConfiguration clientConfig;
// Optional: Set to the AWS Region (overrides config file).
// clientConfig.region = "us-east-1";
AwsDoc::DynamoDB::updateItem(tableName, partitionKey, partitionValue,
attributeKey,
attributeValue, clientConfig);
2021-12-02 15:10:47 -05:00
}
Aws::ShutdownAPI(options);
return 0;
}
#endif // TESTING_BUILD