Jump to Content

New API Documentation - Developer Preview Available

We are excited to announce the developer preview of our new API documentation for AWS SDK for JavaScript v3. Please follow instructions on the landing page to leave us your feedback.

Class PutItemCommandProtected

Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values. You can return the item's attribute values in the same operation, using the ReturnValues parameter.

When you add an item, the primary key attributes are the only required attributes.

Empty String and Binary attribute values are allowed. Attribute values of type String and Binary must have a length greater than zero if the attribute is used as a key attribute for a table or index. Set type attributes cannot be empty.

Invalid Requests with empty values will be rejected with a ValidationException exception.

To prevent a new item from replacing an existing item, use a conditional expression that contains the attribute_not_exists function with the name of the attribute being used as the partition key for the table. Since every record must contain that attribute, the attribute_not_exists function will only succeed if no matching item exists.

For more information about PutItem, see Working with Items in the Amazon DynamoDB Developer Guide.

Example

Use a bare-bones client and the command you need to make an API call.

import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb"; // ES Modules import
// const { DynamoDBClient, PutItemCommand } = require("@aws-sdk/client-dynamodb"); // CommonJS import
const client = new DynamoDBClient(config);
const input = { // PutItemInput
TableName: "STRING_VALUE", // required
Item: { // PutItemInputAttributeMap // required
"<keys>": { // AttributeValue Union: only one key present
S: "STRING_VALUE",
N: "STRING_VALUE",
B: "BLOB_VALUE",
SS: [ // StringSetAttributeValue
"STRING_VALUE",
],
NS: [ // NumberSetAttributeValue
"STRING_VALUE",
],
BS: [ // BinarySetAttributeValue
"BLOB_VALUE",
],
M: { // MapAttributeValue
"<keys>": {// Union: only one key present
S: "STRING_VALUE",
N: "STRING_VALUE",
B: "BLOB_VALUE",
SS: [
"STRING_VALUE",
],
NS: [
"STRING_VALUE",
],
BS: [
"BLOB_VALUE",
],
M: {
"<keys>": "<AttributeValue>",
},
L: [ // ListAttributeValue
"<AttributeValue>",
],
NULL: true || false,
BOOL: true || false,
},
},
L: [
"<AttributeValue>",
],
NULL: true || false,
BOOL: true || false,
},
},
Expected: { // ExpectedAttributeMap
"<keys>": { // ExpectedAttributeValue
Value: "<AttributeValue>",
Exists: true || false,
ComparisonOperator: "EQ" || "NE" || "IN" || "LE" || "LT" || "GE" || "GT" || "BETWEEN" || "NOT_NULL" || "NULL" || "CONTAINS" || "NOT_CONTAINS" || "BEGINS_WITH",
AttributeValueList: [ // AttributeValueList
"<AttributeValue>",
],
},
},
ReturnValues: "NONE" || "ALL_OLD" || "UPDATED_OLD" || "ALL_NEW" || "UPDATED_NEW",
ReturnConsumedCapacity: "INDEXES" || "TOTAL" || "NONE",
ReturnItemCollectionMetrics: "SIZE" || "NONE",
ConditionalOperator: "AND" || "OR",
ConditionExpression: "STRING_VALUE",
ExpressionAttributeNames: { // ExpressionAttributeNameMap
"<keys>": "STRING_VALUE",
},
ExpressionAttributeValues: { // ExpressionAttributeValueMap
"<keys>": "<AttributeValue>",
},
};
const command = new PutItemCommand(input);
const response = await client.send(command);
// { // PutItemOutput
// Attributes: { // AttributeMap
// "<keys>": { // AttributeValue Union: only one key present
// S: "STRING_VALUE",
// N: "STRING_VALUE",
// B: "BLOB_VALUE",
// SS: [ // StringSetAttributeValue
// "STRING_VALUE",
// ],
// NS: [ // NumberSetAttributeValue
// "STRING_VALUE",
// ],
// BS: [ // BinarySetAttributeValue
// "BLOB_VALUE",
// ],
// M: { // MapAttributeValue
// "<keys>": {// Union: only one key present
// S: "STRING_VALUE",
// N: "STRING_VALUE",
// B: "BLOB_VALUE",
// SS: [
// "STRING_VALUE",
// ],
// NS: [
// "STRING_VALUE",
// ],
// BS: [
// "BLOB_VALUE",
// ],
// M: {
// "<keys>": "<AttributeValue>",
// },
// L: [ // ListAttributeValue
// "<AttributeValue>",
// ],
// NULL: true || false,
// BOOL: true || false,
// },
// },
// L: [
// "<AttributeValue>",
// ],
// NULL: true || false,
// BOOL: true || false,
// },
// },
// ConsumedCapacity: { // ConsumedCapacity
// TableName: "STRING_VALUE",
// CapacityUnits: Number("double"),
// ReadCapacityUnits: Number("double"),
// WriteCapacityUnits: Number("double"),
// Table: { // Capacity
// ReadCapacityUnits: Number("double"),
// WriteCapacityUnits: Number("double"),
// CapacityUnits: Number("double"),
// },
// LocalSecondaryIndexes: { // SecondaryIndexesCapacityMap
// "<keys>": {
// ReadCapacityUnits: Number("double"),
// WriteCapacityUnits: Number("double"),
// CapacityUnits: Number("double"),
// },
// },
// GlobalSecondaryIndexes: {
// "<keys>": {
// ReadCapacityUnits: Number("double"),
// WriteCapacityUnits: Number("double"),
// CapacityUnits: Number("double"),
// },
// },
// },
// ItemCollectionMetrics: { // ItemCollectionMetrics
// ItemCollectionKey: { // ItemCollectionKeyAttributeMap
// "<keys>": "<AttributeValue>",
// },
// SizeEstimateRangeGB: [ // ItemCollectionSizeEstimateRange
// Number("double"),
// ],
// },
// };

Param

PutItemCommandInput

Returns

PutItemCommandOutput

See

Throws

ConditionalCheckFailedException (client fault)

A condition specified in the operation could not be evaluated.

Throws

InternalServerError (server fault)

An error occurred on the server side.

Throws

InvalidEndpointException (client fault)

Throws

ItemCollectionSizeLimitExceededException (client fault)

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

Throws

ProvisionedThroughputExceededException (client fault)

Your request rate is too high. The Amazon Web Services SDKs for DynamoDB automatically retry requests that receive this exception. Your request is eventually successful, unless your retry queue is too large to finish. Reduce the frequency of requests and use exponential backoff. For more information, go to Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

Throws

RequestLimitExceeded (client fault)

Throughput exceeds the current throughput quota for your account. Please contact Amazon Web Services Support to request a quota increase.

Throws

ResourceNotFoundException (client fault)

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

Throws

TransactionConflictException (client fault)

Operation was rejected because there is an ongoing transaction for the item.

Throws

DynamoDBServiceException

Base exception class for all service exceptions from DynamoDB service.

Example

To add an item to a table

// This example adds a new item to the Music table.
const input = {
"Item": {
"AlbumTitle": {
"S": "Somewhat Famous"
},
"Artist": {
"S": "No One You Know"
},
"SongTitle": {
"S": "Call Me Today"
}
},
"ReturnConsumedCapacity": "TOTAL",
"TableName": "Music"
};
const command = new PutItemCommand(input);
const response = await client.send(command);
/* response ==
{
"ConsumedCapacity": {
"CapacityUnits": 1,
"TableName": "Music"
}
}
*/
// example id: to-add-an-item-to-a-table-1476116191110

Hierarchy

Constructors

Properties

middlewareStack: MiddlewareStack<PutItemCommandInput, PutItemCommandOutput>

Methods