BatchPutAttributes
Description
With the BatchPutAttributes operation, you can perform multiple PutAttribute
operations in a single call. This helps you yield savings in round trips and latencies, and enables Amazon SimpleDB to optimize
requests, which generally yields better throughput.
You can specify attributes and values for items using a combination of the
Item.Y.Attribute.X.Name and Item.Y.Attribute.X.Value parameters.
To specify attributes and values for the first item, you use Item.1.Attribute.1.Name and
Item.1.Attribute.1.Value for the first attribute, Item.1.Attribute.2.Name
and Item.1.Attribute.2.Value for the second attribute, and so on.
To specify attributes and values for the second item, you use Item.2.Attribute.1.Name and
Item.2.Attribute.1.Value for the first attribute, Item.2.Attribute.2.Name
and Item.2.Attribute.2.Value for the second attribute, and so on.
Amazon SimpleDB uniquely identifies attributes in an item by their name/value combinations. For example, a
single item can have the attributes { "first_name", "first_value" } and {
"first_name", second_value" }. However, it cannot have two attribute instances where
both the Item.Y.Attribute.X.Name and Item.Y.Attribute.X.Value are
the same.
Optionally, you can supply the Replace parameter for each
individual attribute. Setting this value to true causes the new attribute value to
replace the existing attribute value(s) if any exist. Otherwise, Amazon SimpleDB simply inserts the attribute values.
For example, if an item has the attributes { 'a', '1' }, { 'b', '2'}, and
{ 'b', '3' } and the requester calls BatchPutAttributes using the
attributes { 'b', '4' } with the Replace parameter set to
true, the final attributes of the item are changed to { 'a', '1' } and
{ 'b', '4' }. This occurs because the new 'b' attribute replaces the old value.
Note
You cannot specify an empty string as an item or attribute name.
The BatchPutAttributes operation succeeds or fails in its entirety. There are
no partial puts.
You can execute multiple BatchPutAttributes operations and other operations in parallel.
However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503)
responses.
This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method.
This operation does not support conditions using Expected.Name,
Expected.Value, or
Expected.Exists.
The following limitations are enforced for this operation:
-
256 attribute name-value pairs per item
-
1 MB request size
-
1 billion attributes per domain
-
10 GB of total user data storage per domain
-
25 item limit per
BatchPutAttributesoperation
Request Parameters
| Name | Description | Required |
|---|---|---|
Item.Y.ItemName
|
The name of the item. Type: String. Default: None. |
Yes |
|
|
The name of the attribute for the specified item. Y or X can be any positive integer or 0. Type: String. Default: None. |
Yes |
|
|
The value of the attribute for the specified item. Y or X can be any positive integer or 0. Type: String. Default: None. |
Yes |
|
|
Flag to specify whether to replace the Attribute/Value or to add a new
Attribute/Value. The To reduce the request size and latencies, we recommend that you do not specify this request parameter at all. Type: Boolean. Default: |
No |
DomainName
|
The name of the domain in which to perform the operation. Type: String Default: None. |
Yes |
Note
When using eventually consistent reads, a GetAttributes or Select request (read) immediately after a DeleteAttributes or PutAttributes request (write) might not return the updated data. Some items might be updated before others, despite the fact that the operation never partially succeeds. A consistent read always reflects all writes that received a successful response prior to the read. For more information, see Consistency.
Response Elements
Special Errors
| Error | Description |
|---|---|
DuplicateItemName
|
Item item_name was specified more than once.
|
InvalidParameterValue
|
Value value for parameter Name is invalid. Value exceeds maximum
length of 1024. |
InvalidParameterValue
|
Value value for parameter Value is invalid. Value exceeds maximum
length of 1024. |
InvalidParameterValue
|
Value value for parameter Item is invalid. Value exceeds max length
of 1024. |
InvalidParameterValue
|
Value value for parameter Replace is invalid. The Replace flag
should be either true or false. |
MissingParameter
|
The request must contain the parameter
DomainName. |
MissingParameter
|
The request must contain the parameter
ItemName. |
MissingParameter
|
Attribute.Value missing for Attribute.Name=attribute_name. |
MissingParameter
|
Attribute.Name missing for Attribute.Value=attribute_name. |
MissingParameter
|
No attributes for item item_name. |
NoSuchDomain
|
The specified domain does not exist. |
NumberItemAttributesExceeded
|
Too many attributes in this item. |
NumberDomainAttributesExceeded
|
Too many attributes in this domain. |
NumberDomainBytesExceeded
|
Too many bytes in this domain. |
|
|
Too many items in a single call. Up to 25 items per call allowed. |
|
|
Too many attributes for item itemName in a single call. Up to 256 attributes per call allowed.
|
Examples
Sample Request
The following example uses BatchPutAttributes on Shirt1, which
has attributes (Color=Blue), (Size=Med), and
(Price=0014.99) in MyDomain. If Shirt1 already had the
Price attribute, this operation would replace the values for that attribute.
Otherwise, a new (additional) Price attribute is created with the value 0014.99.
The example also uses BatchPutAttributes on Shirt2 which
has attributes (Color=Red), (Size=Large), and
(Price=0019.99).
https://sdb.amazonaws.com/ ?Action=BatchPutAttributes &Item.1.ItemName=Shirt1 &Item.1.Attribute.1.Name=Color &Item.1.Attribute.1.Value=Blue &Item.1.Attribute.2.Name=Size &Item.1.Attribute.2.Value=Med &Item.1.Attribute.3.Name=Price &Item.1.Attribute.3.Value=0014.99 &Item.1.Attribute.3.Replace=true &Item.2.ItemName=Shirt2 &Item.2.Attribute.1.Name=Color &Item.2.Attribute.1.Value=Red &Item.2.Attribute.2.Name=Size &Item.2.Attribute.2.Value=Large &Item.2.Attribute.3.Name=Price &Item.2.Attribute.3.Value=0019.99 &AWSAccessKeyId=[valid access key id] &DomainName=MyDomain &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-01-12T15%3A03%3A05-07%3A00 &Version=2009-04-15 &Signature=[valid signature]
Sample Response
<BatchPutAttributesResponse> <ResponseMetadata> <RequestId>490206ce-8292-456c-a00f-61b335eb202b</RequestId> <BoxUsage>0.0000219907</BoxUsage> </ResponseMetadata> </BatchPutAttributesResponse>