

# 早期低级别 DynamoDB API 版本（2011-12-05）
<a name="Appendix.APIv20111205"></a>

本节记录早期 DynamoDB 低级别 API 版本 (2011-12-05) 可用的操作。维护此版本的低级 API 以便与现有应用程序向后兼容。

**新应用程序应使用当前 API 版本 (2012-08-10)**。有关更多信息，请参阅 [DynamoDB API 参考](CurrentAPI.md)。

**注意**  
建议您将应用程序迁移到最新 API 版本 (2012-08-10)，因为新的 DynamoDB 功能不会向后移植到以前的 API 版本。

**Topics**
+ [BatchGetItem](API_BatchGetItem_v20111205.md)
+ [BatchWriteItem](API_BatchWriteItem_v20111205.md)
+ [CreateTable](API_CreateTable_v20111205.md)
+ [DeleteItem](API_DeleteItem_v20111205.md)
+ [DeleteTable](API_DeleteTable_v20111205.md)
+ [DescribeTables](API_DescribeTables_v20111205.md)
+ [GetItem](API_GetItem_v20111205.md)
+ [ListTables](API_ListTables_v20111205.md)
+ [PutItem](API_PutItem_v20111205.md)
+ [查询](API_Query_v20111205.md)
+ [扫描](API_Scan_v20111205.md)
+ [UpdateItem](API_UpdateItem_v20111205.md)
+ [UpdateTable](API_UpdateTable_v20111205.md)

# BatchGetItem
<a name="API_BatchGetItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_BatchGetItem_Description"></a>

`BatchGetItem` 操作使用主键返回多个表的多个项目的属性。单个操作可检索的最大项目数为 100。此外，检索到的项目数受到 1 MB 大小的限制。如果超出响应大小限制，或者因超出表的预置吞吐量或内部处理失败而返回部分结果，DynamoDB 将返回 `UnprocessedKeys` 值，以便您可以从要获取的下一个项目开始重试操作。DynamoDB 自动调整每页返回的项数以强制执行此限制。例如，即使您要求检索 100 个项目，但每个项目的大小为 50 KB，系统也会返回 20 个项目和相应 `UnprocessedKeys` 值，这样您可以获取下一页结果。如果需要，应用程序可以加入自己的逻辑，将结果页汇编为一组。

如果由于请求涉及的每个表的预置吞吐量不足而无法处理任何项目，DynamoDB 将返回 `ProvisionedThroughputExceededException` 错误。

**注意**  
默认情况下，`BatchGetItem` 对请求中的每个表执行最终一致性读取。如果需要一致性读取，可以对每个表将 `ConsistentRead` 参数设置为 `true`。  
`BatchGetItem` 并行获取项目，最大程度地减少响应延迟。  
设计应用程序时请记住，DynamoDB 无法保证返回响应中的属性排序方式。在 `AttributesToGet` 中加入请求项目的主键值，帮助按项目解析响应。  
如果请求的项目不存在，则这些项目的响应不会返回任何内容。如果请求的项目不存在，将根据读取类型，消耗最小读取容量单位。有关更多信息，请参阅 [DynamoDB 项目大小和格式](CapacityUnitCalculations.md)。

## 请求
<a name="API_BatchGetItem_RequestParameters"></a>

### 语法
<a name="API_BatchGetItem_RequestParameters.syntax"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.BatchGetItem 
content-type: application/x-amz-json-1.0 

{"RequestItems":
    {"Table1": 
        {"Keys": 
            [{"HashKeyElement": {"S":"KeyValue1"}, "RangeKeyElement":{"N":"KeyValue2"}},
            {"HashKeyElement": {"S":"KeyValue3"}, "RangeKeyElement":{"N":"KeyValue4"}},
            {"HashKeyElement": {"S":"KeyValue5"}, "RangeKeyElement":{"N":"KeyValue6"}}],
        "AttributesToGet":["AttributeName1", "AttributeName2", "AttributeName3"]},
    "Table2": 
        {"Keys": 
            [{"HashKeyElement": {"S":"KeyValue4"}}, 
            {"HashKeyElement": {"S":"KeyValue5"}}],
        "AttributesToGet": ["AttributeName4", "AttributeName5", "AttributeName6"]
        }
    }
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  RequestItems  | 保存表名称和按主键获取的相应项目的容器。请求项目时，每个操作只能调用一次每个表名称。类型：字符串 默认值：无  |  是 | 
| Table |  包含要获取的项目的表名称。该条目是一个字符串，指定没有标签的现有表。 类型：字符串  默认值：无   | 是 | 
| Table:Keys  |  定义指定表中项目的主键值。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。 类型：键   | 是 | 
| Table:AttributesToGet  |  指定表中的属性名称数组。如果没有指定属性名称，将返回所有属性。如果找不到某些属性，则不会出现在结果中。 类型：数组   | 否 | 
| Table:ConsistentRead  |  如果设置为 `true`，则发出一致性读取，否则将使用最终一致性。 类型：布尔值   | 否 | 

## 响应
<a name="API_BatchGetItem_ResponseElements"></a>

### 语法
<a name="API_BatchGetItem_ResponseElements.syntax"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375
content-type: application/x-amz-json-1.0 
content-length: 855

{"Responses":
    {"Table1":
        {"Items":
        [{"AttributeName1": {"S":"AttributeValue"},
        "AttributeName2": {"N":"AttributeValue"},
        "AttributeName3": {"SS":["AttributeValue", "AttributeValue", "AttributeValue"]}
        },
        {"AttributeName1": {"S": "AttributeValue"},
        "AttributeName2": {"S": "AttributeValue"},
        "AttributeName3": {"NS": ["AttributeValue", "AttributeValue", "AttributeValue"]}
        }],
    "ConsumedCapacityUnits":1},
    "Table2": 
        {"Items":
        [{"AttributeName1": {"S":"AttributeValue"},
        "AttributeName2": {"N":"AttributeValue"},
        "AttributeName3": {"SS":["AttributeValue", "AttributeValue", "AttributeValue"]}
        },
        {"AttributeName1": {"S": "AttributeValue"},
        "AttributeName2": {"S": "AttributeValue"},
        "AttributeName3": {"NS": ["AttributeValue", "AttributeValue","AttributeValue"]}
        }],
    "ConsumedCapacityUnits":1}
    },
    "UnprocessedKeys":
        {"Table3": 
        {"Keys": 
            [{"HashKeyElement": {"S":"KeyValue1"}, "RangeKeyElement":{"N":"KeyValue2"}},
            {"HashKeyElement": {"S":"KeyValue3"}, "RangeKeyElement":{"N":"KeyValue4"}},
            {"HashKeyElement": {"S":"KeyValue5"}, "RangeKeyElement":{"N":"KeyValue6"}}],
        "AttributesToGet":["AttributeName1", "AttributeName2", "AttributeName3"]}
        }
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| Responses  | 表名称和表中的相应项目属性。类型：映射  | 
| Table |  包含项目的表名称。该条目只是一个字符串，指定没有标签的表。类型：字符串  | 
| Items  | 保存符合操作参数的属性名称和值的容器。类型：属性名称映射及其数据类型和值。 | 
| ConsumedCapacityUnits | 每个表消耗的读取容量单位数。此值显示应用于预置吞吐量的数字。如果请求的项目不存在，将根据读取类型，消耗最小读取容量单位。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 
| UnprocessedKeys | 包含当前响应未处理的表数字及其相应键，可能因为达到响应大小限制。`UnprocessedKeys` 值的格式和 `RequestItems` 参数相同（因此可以为后续 `BatchGetItem` 操作直接提供值）。有关更多信息，请参见上面的 `RequestItems` 参数。类型：数组  | 
| UnprocessedKeys: Table: Keys  | 定义项目以及与项目关联的属性的主键属性值。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：属性名称-值对的数组。  | 
| UnprocessedKeys: Table: AttributesToGet  |  指定表内的属性名称。如果未指定属性名称，则返回所有属性。如果找不到某些属性，则不会出现在结果中。 类型：属性名称的数组。  | 
| UnprocessedKeys: Table: ConsistentRead  |  如果设置为 `true`，则对指定表使用一致性读取，否则使用最终一致性读取。 类型：布尔值。  | 

## 特殊错误
<a name="API_BatchGetItem_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
| ProvisionedThroughputExceededException  | 超出允许的最大预置吞吐量。  | 

## 示例
<a name="API_BatchGetItem_Examples"></a>

以下示例显示使用 BatchGetItem 操作的 HTTP POST 请求和响应。有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

### 示例请求
<a name="API_BatchGetItem_Examples_Request"></a>

下面的示例请求两个不同表的属性。

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.BatchGetItem 
content-type: application/x-amz-json-1.0 
content-length: 409

{"RequestItems":
    {"comp1":
        {"Keys":
            [{"HashKeyElement":{"S":"Casey"},"RangeKeyElement":{"N":"1319509152"}},
            {"HashKeyElement":{"S":"Dave"},"RangeKeyElement":{"N":"1319509155"}},
            {"HashKeyElement":{"S":"Riley"},"RangeKeyElement":{"N":"1319509158"}}],
        "AttributesToGet":["user","status"]},
    "comp2":
        {"Keys":
            [{"HashKeyElement":{"S":"Julie"}},{"HashKeyElement":{"S":"Mingus"}}],
        "AttributesToGet":["user","friends"]}
    }
}
```

### 示例响应
<a name="API_BatchGetItem_Examples_Response"></a>

下面的示例是响应。

```
HTTP/1.1 200 OK
x-amzn-RequestId: GTPQVRM4VJS792J1UFJTKUBVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0 
content-length: 373
Date: Fri, 02 Sep 2011 23:07:39 GMT

{"Responses":
    {"comp1":
        {"Items":
            [{"status":{"S":"online"},"user":{"S":"Casey"}},
            {"status":{"S":"working"},"user":{"S":"Riley"}},
            {"status":{"S":"running"},"user":{"S":"Dave"}}],
        "ConsumedCapacityUnits":1.5},
    "comp2":
        {"Items":
            [{"friends":{"SS":["Elisabeth", "Peter"]},"user":{"S":"Mingus"}},
            {"friends":{"SS":["Dave", "Peter"]},"user":{"S":"Julie"}}],
        "ConsumedCapacityUnits":1}
    },
    "UnprocessedKeys":{}
}
```

# BatchWriteItem
<a name="API_BatchWriteItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_BatchWriteItems_Description"></a>

此操作可以在一次调用中，放入或删除多个表中的多个项目。

要上传项目，可以使用 `PutItem`，要删除项目，可以使用 `DeleteItem`。但是，如果要上传或删除大量数据（例如从 Amazon EMR (Amazon EMR) 上传大量数据，或将数据从其他数据库迁移到 DynamoDB），`BatchWriteItem` 是一个高效选择。

如果使用 Java 等语言，可以利用线程并行上传项目。这增加了应用程序处理线程的复杂性。其他语言不支持线程。例如，如果使用 PHP，则必须一次上传或删除一个项目。在这两种情况下，`BatchWriteItem` 可以并行处理指定的放入和删除操作，具有线程池方法的优势，同时不必增加应用程序的复杂性。

请注意，`BatchWriteItem` 操作中指定的每个放入和删除在消耗容量单位方面的消耗相同。但是，由于 `BatchWriteItem` 并行执行指定操作，延迟更低。对不存在的项目执行的删除操作消耗 1 个写入容量单位。有关消耗容量单位的更多信息，请参阅 [使用 DynamoDB 中的表和数据](WorkingWithTables.md)。

使用 `BatchWriteItem` 时请注意以下限制：
+ **单个请求中的最大操作数 —** 您最多可以指定 25 个放入或删除操作；但是，请求总大小不能超过 1 MB（HTTP 负载）。
+ 您只能使用 `BatchWriteItem` 操作放入和删除项目，不能用来更新现有项目。
+ **不是原子操作 - **`BatchWriteItem` 中指定的每个操作是原子操作；但是 `BatchWriteItem` 整体是“尽最大努力”的操作，而不是原子操作。也就是说，在 `BatchWriteItem` 请求中，有些操作可能成功，有些操作可能失败。失败的操作将在响应的 `UnprocessedItems` 字段返回。其中一些失败可能是因为超过为表配置的预置吞吐量，或者出现暂时故障，如网络错误。您可以分析，选择重新发送请求。通常，在循环中调用 `BatchWriteItem`，在每个迭代中检查未处理的项目，对没有处理的项目提交新的 `BatchWriteItem` 请求。
+ **不返回任何项目 —** `BatchWriteItem` 设计用于高效上传大量数据，不具备 `PutItem` 和 `DeleteItem` 的一些精密性。例如，`DeleteItem` 支持在请求体中用 `ReturnValues` 字段请求响应中的已删除项目。`BatchWriteItem` 操作在响应中不返回任何项目。
+ 不像 `PutItem` 和 `DeleteItem`，`BatchWriteItem` 不允许为操作中的单个写入请求指定条件。
+ 属性值不得为空；字符串和二进制类型属性的长度必须大于零；设置类型属性不得为空。具有空值的请求将被拒绝，并显示 `ValidationException`。

如果满足以下任一条件，DynamoDB 将拒绝整个批处理写入操作：
+ 如果 `BatchWriteItem` 请求中指定的一个或多个表不存在。
+ 如果在求中的项目上指定的主键属性与相应表的主键架构不匹配。
+ 如果尝试在同一个 `BatchWriteItem` 请求中对同一项目执行多个操作。例如，不能在同一个 `BatchWriteItem` 请求中放入和删除同一项目。
+ 如果总请求大小超过 1 MB（HTTP 有效负载）限制。
+ 如果批处理中的任何单个项目超过 64 KB 项目大小限制。

## 请求
<a name="API_BatchWriteItems_RequestParameters"></a>

### 语法
<a name="API_BatchWriteItems_RequestParameters.syntax"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1
x-amz-target: DynamoDB_20111205.BatchGetItem 
content-type: application/x-amz-json-1.0 

{
  "RequestItems" :  RequestItems
} 

RequestItems
{
     "TableName1" :  [ Request, Request, ... ],
     "TableName2" :  [ Request, Request, ... ],
     ...
}

Request ::=
  PutRequest | DeleteRequest

PutRequest ::=
{
  "PutRequest" : {
     "Item" : {
        "Attribute-Name1" : Attribute-Value,
        "Attribute-Name2" : Attribute-Value,
         ...
     }
  }
}

DeleteRequest ::=
{
   "DeleteRequest" : {
      "Key" : PrimaryKey-Value
   }
}


PrimaryKey-Value ::= HashTypePK | HashAndRangeTypePK

HashTypePK ::=
{ 
   "HashKeyElement" : Attribute-Value
}

HashAndRangeTypePK
{ 
   "HashKeyElement" : Attribute-Value,
   "RangeKeyElement" : Attribute-Value, 
}

Attribute-Value ::= String | Numeric| Binary | StringSet | NumericSet | BinarySet 

Numeric ::=
{
   "N": "Number"
}

String ::=
{
   "S": "String"
}

Binary ::=
{
    "B": "Base64 encoded binary data"
}

StringSet ::=
{
   "SS": [ "String1", "String2", ... ]
}

NumberSet ::=
{
   "NS": [ "Number1", "Number2", ... ]
}  

BinarySet ::=
{
   "BS": [ "Binary1", "Binary2", ... ]
}
```

在请求体中，`RequestItems` JSON 对象说明要执行的操作。操作按表分组。可以使用 `BatchWriteItem` 更新或删除多个表中的多个项目。对于每个特定写入请求，必须确定请求类型（`PutItem`、`DeleteItem`），以及操作的详细信息。
+ 对于 `PutRequest`，提供的项目是属性及其值的列表。
+ 对于 `DeleteRequest`，提供主键名称和值。

## 响应
<a name="API_BatchWriteItems_ResponseElements"></a>

### 语法
<a name="API_BatchWriteItems_ResponseElements.syntax"></a>

响应中返回的 JSON 正文的语法如下。

```
{
  "Responses" :         ConsumedCapacityUnitsByTable
  "UnprocessedItems" :  RequestItems
} 

ConsumedCapacityUnitsByTable
{
    "TableName1" : { "ConsumedCapacityUnits", : NumericValue },
    "TableName2" : { "ConsumedCapacityUnits", : NumericValue },
     ...
}

RequestItems
This syntax is identical to the one described in the JSON syntax in the request.
```

## 特殊错误
<a name="API_BatchWriteItems_SpecialErrors"></a>

没有特定于此操作的错误。

## 示例
<a name="API_BatchWriteItems_Examples"></a>

下面的示例显示 HTTP POST 请求和 `BatchWriteItem` 操作的响应。请求指定对回复和线程表执行以下操作：
+ 在回复表中放入一个项目并删除一个项目
+ 将线程表中放入一个项目

有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

### 示例请求
<a name="API_BatchWriteItems_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1
x-amz-target: DynamoDB_20111205.BatchGetItem 
content-type: application/x-amz-json-1.0 

{
  "RequestItems":{
    "Reply":[
      {
        "PutRequest":{
          "Item":{
            "ReplyDateTime":{
              "S":"2012-04-03T11:04:47.034Z"
            },
            "Id":{
              "S":"DynamoDB#DynamoDB Thread 5"
            }
          }
        }
      },
      {
        "DeleteRequest":{
          "Key":{
            "HashKeyElement":{
              "S":"DynamoDB#DynamoDB Thread 4"
            },
            "RangeKeyElement":{
              "S":"oops - accidental row"
            }
          }
        }
      }
    ],
    "Thread":[
      {
        "PutRequest":{
          "Item":{
            "ForumName":{
              "S":"DynamoDB"
            },
            "Subject":{
              "S":"DynamoDB Thread 5"
            }
          }
        }
      }
    ]
  }
}
```

### 示例响应
<a name="API_BatchWriteItems_Examples_Response"></a>

下面的示例响应显示对线程和回复表执行的放入操作成功，对回复表执行的删除操作失败（原因是超出表的预置吞吐量，导致节流）。注意 JSON 响应的以下内容：
+ `Responses` 对象显示由于在 `Thread` 和 `Reply` 表的放入操作成功，这两个表各消耗一个容量单位。
+ `UnprocessedItems` 对象显示 `Reply` 表上删除操作失败。可以发出一个新的 `BatchWriteItem` 调用来处理这些未处理的请求。

```
HTTP/1.1 200 OK
x-amzn-RequestId: G8M9ANLOE5QA26AEUHJKJE0ASBVV4KQNSO5AEMVJF66Q9ASUAAJG
Content-Type: application/x-amz-json-1.0
Content-Length: 536
Date: Thu, 05 Apr 2012 18:22:09 GMT

{
   "Responses":{
      "Thread":{
         "ConsumedCapacityUnits":1.0
      },
      "Reply":{
         "ConsumedCapacityUnits":1.0
      }
   },
   "UnprocessedItems":{
      "Reply":[
         {
            "DeleteRequest":{
               "Key":{
                  "HashKeyElement":{
                     "S":"DynamoDB#DynamoDB Thread 4"
                  },
                  "RangeKeyElement":{
                     "S":"oops - accidental row"
                  }
               }
            }
         }
      ]
   }
}
```

# CreateTable
<a name="API_CreateTable_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_CreateTable_Description"></a>

`CreateTable` 操作将一个新表添加到您的账户。

表名称在发出请求的 AWS 账户的关联区域，以及接收请求的 AWS 区域（例如 dynamodb.us-west-2.amazonaws.com）中必须唯一。每个 DynamoDB 端点完全独立。例如，如果您有两个名为“MyTable”的表，一个位于 dynamodb.us-west-2.amazonaws.com，另一个位于 dynamodb.us-west-1.amazonaws.com，则这两个表完全独立，不共享任何数据。

`CreateTable` 操作触发异步工作流，开始创建表。DynamoDB 立即返回表的状态 (`CREATING`)，直到表处于 `ACTIVE` 状态。表处于 `ACTIVE` 状态后，可以执行数据层面操作。

使用 [DescribeTables](API_DescribeTables_v20111205.md) 操作检查表的状态。

## 请求
<a name="API_CreateTable_RequestParameters"></a>

### 语法
<a name="API_CreateTable_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.CreateTable 
content-type: application/x-amz-json-1.0 

{"TableName":"Table1",
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"AttributeName1","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"AttributeName2","AttributeType":"N"}},
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":10}
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  要创建的表的名称。允许的字符包括 a-z、A-Z、0-9、“\$1”（下划线）、“-”（短划线）和“.”（点号）。名称长度在 3 和 255 个字符之间。 类型：字符串  |  是  | 
|  KeySchema  | 表的主键（简单或复合）结构。`HashKeyElement` 的名称-值对是必填的，`RangeKeyElement` 的名称-值对是可选的（只有复合主键需要）。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。主键元素名称长度可以在 1 到 255 个字符之间，没有字符限制。 AttributeType 的可能值包括“S”（字符串）、“N”（数字）或“B”（二进制）。类型：`HashKeyElement` 的映射，或者复合主键的 `HashKeyElement` 和 `RangeKeyElement`。 | 是 | 
|  ProvisionedThroughput  | 指定表的新吞吐量，由 ReadCapacityUnits 和 WriteCapacityUnits 的值组成。有关详细信息，请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 有关当前最大值/最小值，请参阅 [Amazon DynamoDB 中的配额](ServiceQuotas.md)。 类型：数组  | 是 | 
| ProvisionedThroughput: ReadCapacityUnits |  设置 DynamoDB 平衡负载和其他操作前，指定表每秒消耗的一致 `ReadCapacityUnits` 的最小数量。 最终一致读取操作需要的资源少于一致读取操作，因此，设置每秒 50 个一致的 `ReadCapacityUnits` 可提供每秒 100 个最终一致的 `ReadCapacityUnits`。类型：数字  | 是 | 
| ProvisionedThroughput: WriteCapacityUnits | 设置 DynamoDB 平衡负载和其他操作前，指定表每秒消耗的 WriteCapacityUnits 的最小数量。类型：数字  | 是 | 

## 响应
<a name="API_CreateTable_CommonResponseElements"></a>

### 语法
<a name="API_CreateTable_CommonResponseElements.syntax"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: CSOC7TJPLR0OOKIRLGOHVAICUFVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 311
Date: Tue, 12 Jul 2011 21:31:03 GMT

{"TableDescription":
    {"CreationDateTime":1.310506263362E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"AttributeName1","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"AttributeName2","AttributeType":"N"}},
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":10},
    "TableName":"Table1",
    "TableStatus":"CREATING"
    }
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| TableDescription  | 表属性的容器。 | 
| CreationDateTime | 以 [UNIX 纪元时间](http://www.epochconverter.com/) 表示的表创建日期。类型：数字 | 
| KeySchema  | 表的主键（简单或复合）结构。`HashKeyElement` 的名称-值对是必填的，`RangeKeyElement` 的名称-值对是可选的（只有复合主键需要）。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 的映射，或者复合主键的 `HashKeyElement` 和 `RangeKeyElement`。 | 
| ProvisionedThroughput  |  指定的表的吞吐量，由 `ReadCapacityUnits` 和 `WriteCapacityUnits` 的值组成。请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数组   | 
| ProvisionedThroughput :ReadCapacityUnits |  DynamoDB 平衡负载和其他操作前，每秒消耗的 `ReadCapacityUnits` 的最小数量。类型：数字  | 
| ProvisionedThroughput :WriteCapacityUnits |  `WriteCapacityUnits` 平衡负载和其他操作前，每秒消耗的 `ReadCapacityUnits` 的最小数量。类型：数字  | 
|  TableName  |  创建的表的名称。 类型：字符串  | 
|  TableStatus  | 表的当前状态 (`CREATING`)。表处于 `ACTIVE` 状态后，可以将数据放入其中。使用 [DescribeTables](API_DescribeTables_v20111205.md) API 检查表的状态。类型：字符串 | 

## 特殊错误
<a name="API_CreateTable_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
|  ResourceInUseException  | 尝试重新创建已存在的表。 | 
|  LimitExceededException  | 同时表请求的数量（`CREATING`、`DELETING` 或 `UPDATING` 状态的表数量总和）超过允许的最大值。 有关当前最大值/最小值，请参阅 [Amazon DynamoDB 中的配额](ServiceQuotas.md)。 .  | 

## 示例
<a name="API_CreateTable_Examples"></a>

下面的示例创建具有复合主键的表，其中包含字符串和数字。有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的表和数据](WorkingWithTables.md)。

### 示例请求
<a name="API_CreateTable_Examples_Request"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.CreateTable 
content-type: application/x-amz-json-1.0


{"TableName":"comp-table",
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"user","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"time","AttributeType":"N"}},
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":10}
}
```

### 示例响应
<a name="API_CreateTable_Examples_Response"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: CSOC7TJPLR0OOKIRLGOHVAICUFVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 311
Date: Tue, 12 Jul 2011 21:31:03 GMT

{"TableDescription":
    {"CreationDateTime":1.310506263362E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"user","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"time","AttributeType":"N"}},
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":10},
    "TableName":"comp-table",
    "TableStatus":"CREATING"
    }
}
```

## 相关操作
<a name="API_CreateTable_Related_Actions"></a>
+  [DescribeTables](API_DescribeTables_v20111205.md) 
+  [DeleteTable](API_DeleteTable_v20111205.md)

# DeleteItem
<a name="API_DeleteItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_DeleteItem_Description"></a>

按主键删除表中的单个项目。可以执行条件删除操作，如果项目存在或者具有预期属性值，则删除该项目。

**注意**  
如果指定没有属性或值的 `DeleteItem`，则将删除该项目的所有属性。  
除非指定条件，否则 `DeleteItem` 是一个幂等操作；在同一个项目或属性上多次运行*不会*导致出现错误响应。  
条件删除用于只有满足特定条件，才删除项目和属性的情况。如果满足这些条件，DynamoDB 将执行删除。否则，不会删除项目。  
您可以在每个操作中对一个属性执行预期条件检查。

## 请求
<a name="API_DeleteItem_RequestParameters"></a>

### 语法
<a name="API_DeleteItem_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DeleteItem 
content-type: application/x-amz-json-1.0 

{"TableName":"Table1",
    "Key":
        {"HashKeyElement":{"S":"AttributeValue1"},"RangeKeyElement":{"N":"AttributeValue2"}},
    "Expected":{"AttributeName3":{"Value":{"S":"AttributeValue3"}}},
    "ReturnValues":"ALL_OLD"}
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含要删除项目的表的名称。 类型：字符串  |  是  | 
|  Key  | 定义项目的主键。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 到其值以及 `RangeKeyElement` 到其值的映射。 | 是 | 
| Expected  | 指定条件删除的属性。`Expected` 参数用于提供属性名称，以及 DynamoDB 是否应在删除前检查属性是否具有特定值。类型：属性名称映射。 | 否 | 
| Expected:AttributeName  | 条件放入的属性的名称。类型：字符串 | 否 | 
| Expected:AttributeName: ExpectedAttributeValue | 使用此参数指定属性名称-值对是否已经存在值。如果项目不存在“Color”属性，则下面的 JSON 表示将删除该项目：<pre>"Expected" :<br />	{"Color":{"Exists":false}}</pre>下面的 JSON 表示在删除项目前，检查“Color”名称的属性是否已有“Yellow”值：<pre>"Expected" : <br />	{"Color":{"Exists":true},{"Value":{"S":"Yellow"}}}</pre>默认情况下，如果使用 `Expected` 参数并提供 `Value`，则 DynamoDB 假定属性存在，并且需要替换当前值。这样不必指定 `{"Exists":true}`，因为是暗含的。可以将请求缩短为：<pre>"Expected" : <br />	{"Color":{"Value":{"S":"Yellow"}}}</pre> 如果指定的 `{"Exists":true}` 没有要检查的属性值，DynamoDB 将返回错误。  | 否 | 
| ReturnValues  | 如果要在删除属性名称-值对之前获取属性名称-值对，请使用此参数。可能的参数值包括 `NONE`（默认值）或 `ALL_OLD`。如果指定 `ALL_OLD`，则返回旧项目的内容。如果不提供此参数或者为 `NONE`，则不返回任何内容。类型：字符串 | 否 | 

## 响应
<a name="API_DeleteItem_CommonResponseElements"></a>

### 语法
<a name="API_DeleteItem_CommonResponseElements.syntax"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: CSOC7TJPLR0OOKIRLGOHVAICUFVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 353
Date: Tue, 12 Jul 2011 21:31:03 GMT

{"Attributes":
    {"AttributeName3":{"SS":["AttributeValue3","AttributeValue4","AttributeValue5"]},
    "AttributeName2":{"S":"AttributeValue2"},
    "AttributeName1":{"N":"AttributeValue1"}
    },
"ConsumedCapacityUnits":1
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  Attributes  | 如果提供 `ReturnValues` 参数作为请求的 `ALL_OLD`，DynamoDB 将返回属性名称-值对数组（即已删除的项目）。否则，响应包含一个空集合。类型：属性名称-值对的数组。 | 
| ConsumedCapacityUnits | 操作消耗的写入容量单位数。此值显示应用于预置吞吐量的数字。对不存在项目的删除请求消耗 1 个写入容量单位。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_DeleteItem_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
|  ConditionalCheckFailedException  | 条件检查失败。找不到预期的属性值。 | 

## 示例
<a name="API_DeleteItem_Examples"></a>

### 示例请求
<a name="API_DeleteItem_Examples_Request"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DeleteItem 
content-type: application/x-amz-json-1.0

{"TableName":"comp-table",
    "Key":
        {"HashKeyElement":{"S":"Mingus"},"RangeKeyElement":{"N":"200"}},
    "Expected":
        {"status":{"Value":{"S":"shopping"}}},
    "ReturnValues":"ALL_OLD"
}
```

### 示例响应
<a name="API_DeleteItem_Examples_Response"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: U9809LI6BBFJA5N2R0TB0P017JVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 353
Date: Tue, 12 Jul 2011 22:31:23 GMT

{"Attributes":
    {"friends":{"SS":["Dooley","Ben","Daisy"]},
    "status":{"S":"shopping"},
    "time":{"N":"200"},
    "user":{"S":"Mingus"}
    },
"ConsumedCapacityUnits":1
}
```

## 相关操作
<a name="API_DeleteItem_Related_Actions"></a>
+  [PutItem](API_PutItem_v20111205.md) 

# DeleteTable
<a name="API_DeleteTable_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_DeleteTable_Description"></a>

`DeleteTable` 操作删除表及其所有项目。`DeleteTable` 请求后，指定的表处于 `DELETING` 状态，直到 DynamoDB 完成删除。如果表处于 `ACTIVE` 状态，可以删除。如果表处于 `CREATING` 或 `UPDATING` 状态，DynamoDB 将返回一个 `ResourceInUseException` 错误。如果指定的表不存在，DynamoDB 将返回 `ResourceNotFoundException`。如果表已经处于 `DELETING` 状态，则不返回任何错误。

**注意**  
DynamoDB 可能会继续接受数据层面操作请求，如处于 `DELETING` 状态的表上的 `GetItem` 和 `PutItem`，直到表删除完成。

表在发出请求的 AWS 账户关联区域，以及接收请求的 AWS 区域（例如 dynamodb.us-west-1.amazonaws.com）中唯一。每个 DynamoDB 端点完全独立。例如，如果您有两个名为“MyTable”的表，一个位于 dynamodb.us-west-2.amazonaws.com，另一个位于 dynamodb.us-west-1.amazonaws.com，则这两个表完全独立，不共享任何数据；删除一个表不会删除另一个表。

使用 [DescribeTables](API_DescribeTables_v20111205.md) 操作检查表的状态。

## 请求
<a name="API_DeleteTable_RequestParameters"></a>

### 语法
<a name="API_DeleteTable_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DeleteTable 
content-type: application/x-amz-json-1.0

{"TableName":"Table1"}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |   要删除的表的名称。  类型：字符串   |  是  | 

## 响应
<a name="API_DeleteTable_CommonResponseElements"></a>

### 语法
<a name="API_DeleteTable_CommonResponseElements.syntax"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: 4HONCKIVH1BFUDQ1U68CTG3N27VV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 311
Date: Sun, 14 Aug 2011 22:56:22 GMT

{"TableDescription":
    {"CreationDateTime":1.313362508446E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"user","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"time","AttributeType":"N"}},
    "ProvisionedThroughput":{"ReadCapacityUnits":10,"WriteCapacityUnits":10},
    "TableName":"Table1",
    "TableStatus":"DELETING"
    }
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| TableDescription  | 表属性的容器。 | 
| CreationDateTime | 表的创建日期。类型：数字  | 
| KeySchema  | 表的主键（简单或复合）结构。`HashKeyElement` 的名称-值对是必填的，`RangeKeyElement` 的名称-值对是可选的（只有复合主键需要）。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 的映射，或者复合主键的 `HashKeyElement` 和 `RangeKeyElement`。 | 
| ProvisionedThroughput  | 指定的表的吞吐量，由 ReadCapacityUnits 和 WriteCapacityUnits 的值组成。请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 | 
| ProvisionedThroughput: ReadCapacityUnits |  DynamoDB 平衡负载和其他操作前，指定表每秒消耗的 `ReadCapacityUnits` 的最小数量。类型：数字  | 
| ProvisionedThroughput: WriteCapacityUnits | DynamoDB 平衡负载和其他操作前，指定表每秒消耗的 `WriteCapacityUnits` 的最小数量。类型：数字  | 
|  TableName  |  已删除的表的名称。 类型：字符串   | 
|  TableStatus  | 表的当前状态 (DELETING)。删除表后，对表的后续请求将返回 resource not found。使用 [DescribeTables](API_DescribeTables_v20111205.md) 操作检查表的状态。类型：字符串 | 

## 特殊错误
<a name="API_DeleteTable_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
|  ResourceInUseException  |  表处于 CREATING 或 UPDATING 状态，无法删除。 | 

## 示例
<a name="API_DeleteTable_Examples"></a>

### 示例请求
<a name="API_DeleteTable_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DeleteTable
content-type: application/x-amz-json-1.0
content-length: 40

{"TableName":"favorite-movies-table"}
```

### 示例响应
<a name="API_DeleteTable_Examples_Response"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: 4HONCKIVH1BFUDQ1U68CTG3N27VV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 160
Date: Sun, 14 Aug 2011 17:20:03 GMT

{"TableDescription":
    {"CreationDateTime":1.313362508446E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"name","AttributeType":"S"}},
    "TableName":"favorite-movies-table",
    "TableStatus":"DELETING"
}
```

## 相关操作
<a name="API_DeleteTable_Related_Actions"></a>
+  [CreateTable](API_CreateTable_v20111205.md) 
+  [DescribeTables](API_DescribeTables_v20111205.md) 

# DescribeTables
<a name="API_DescribeTables_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_DescribeTables_Description"></a>

返回表的信息，包括表的当前状态、主键架构以及表的创建时间。DescribeTable 的结果具有最终一致性。如果在创建表的过程中过早使用 DescribeTable，DynamoDB 将返回 `ResourceNotFoundException`。如果在创建表的过程中过早使用 DescribeTable，新值可能不会立即可用。

## 请求
<a name="API_DescribeTables_RequestParameters"></a>

### 语法
<a name="API_DescribeTables_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DescribeTable
content-type: application/x-amz-json-1.0

{"TableName":"Table1"}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  要描述的表的名称。 类型：字符串   |  是  | 

## 响应
<a name="API_DescribeTables_ResponseElements"></a>

### 语法
<a name="API_DescribeTables_ResponseElements.syntax"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375
content-type: application/x-amz-json-1.0
Content-Length: 543


{"Table":
    {"CreationDateTime":1.309988345372E9,
    ItemCount:1,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"AttributeName1","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"AttributeName2","AttributeType":"N"}},
    "ProvisionedThroughput":{"LastIncreaseDateTime": Date, "LastDecreaseDateTime": Date, "ReadCapacityUnits":10,"WriteCapacityUnits":10},
    "TableName":"Table1",
    "TableSizeBytes":1,
    "TableStatus":"ACTIVE"
    }
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  Table  |  正在描述的表的容器。 类型：字符串  | 
| CreationDateTime | 以 [UNIX 纪元时间](http://www.epochconverter.com/)表示的表创建日期。 | 
|  ItemCount  |  指定表中的项目数。DynamoDB 大约每 6 小时更新一次此值。此值可能不反映最近更改。 类型：数字  | 
|  KeySchema  | 表的主键（简单或复合）结构。HashKeyElement 的名称-值对是必填的，RangeKeyElement 的名称-值对是可选的（只有复合主键需要）。Hash 键最大为 2048 字节。Range 键最大为 1024 字节。这两个限制单独执行（即，可以组合 hash \$1 range 2048 \$1 1024 键）。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。 | 
| ProvisionedThroughput  | 指定表的吞吐量，由 LastIncreaseDateTime（如果适用）、LastDecreaseDateTime（如果适用）、ReadCapacityUnits 和 WriteCapacityUnits 值组成。如果表的吞吐量从未增加或减少，DynamoDB 不会返回这些元素的值。请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。类型：数组  | 
|  TableName  |  请求表的名称。 类型：字符串  | 
|  TableSizeBytes  |  指定表的总大小（以字节为单位）。DynamoDB 大约每 6 小时更新一次此值。此值可能不反映最近更改。 类型：数字  | 
|  TableStatus  | 表的当前状态（CREATING、ACTIVE、DELETING 或 UPDATING）。表处于 ACTIVE 状态后，可以添加数据。 | 

## 特殊错误
<a name="API_DescribeTables_SpecialErrors"></a>

没有特定于此操作的错误。

## 示例
<a name="API_DescribeTables_Examples"></a>

 以下示例显示对 "comp-table" 表的 HTTP POST 请求，以及使用 DescribeTable 操作的响应。此表具有复合主键。

### 示例请求
<a name="API_DescribeTables_Examples_Request"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.DescribeTable
content-type: application/x-amz-json-1.0

{"TableName":"users"}
```

### 示例响应
<a name="API_DescribeTables_Examples_Response"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375
content-type: application/x-amz-json-1.0
content-length: 543

{"Table":
    {"CreationDateTime":1.309988345372E9,
    "ItemCount":23,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"user","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"time","AttributeType":"N"}},
    "ProvisionedThroughput":{"LastIncreaseDateTime": 1.309988345384E9, "ReadCapacityUnits":10,"WriteCapacityUnits":10},
    "TableName":"users",
    "TableSizeBytes":949,
    "TableStatus":"ACTIVE"
    }
}
```

## 相关操作
<a name="API_DescribeTables_Related_Actions"></a>
+  [CreateTable](API_CreateTable_v20111205.md) 
+  [DeleteTable](API_DeleteTable_v20111205.md) 
+  [ListTables](API_ListTables_v20111205.md) 

# GetItem
<a name="API_GetItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_GetItem_Description"></a>

`GetItem` 操作为匹配主键的项目返回一组 `Attributes`。如果没有匹配项目，则 `GetItem` 不返回任何数据。

`GetItem` 操作默认提供最终一致性读取。如果您的应用程序不接受最终一致性读取，请使用 `ConsistentRead`。尽管此操作可能比标准读取所需的时间长，但它始终返回上次更新的值。有关更多信息，请参阅 [DynamoDB 读取一致性](HowItWorks.ReadConsistency.md)。

## 请求
<a name="API_GetItem_RequestParameters"></a>

### 语法
<a name="API_GetItem_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.GetItem
content-type: application/x-amz-json-1.0 

{"TableName":"Table1",
 	"Key": 
		{"HashKeyElement": {"S":"AttributeValue1"},
		"RangeKeyElement": {"N":"AttributeValue2"} 
	},
	"AttributesToGet":["AttributeName3","AttributeName4"],
	"ConsistentRead":Boolean
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含请求项目的表的名称。 类型：字符串  |  是  | 
|  Key  | 定义项目的主键值。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 到其值以及 `RangeKeyElement` 到其值的映射。 | 是 | 
| AttributesToGet  | 属性名称的数组。如果未指定属性名称，则返回所有属性。如果找不到某些属性，则不会出现在结果中。类型：数组 | 否 | 
| ConsistentRead  | 如果设置为 `true`，则发出一致性读取，否则将使用最终一致性。类型：布尔值 | 否 | 

## 响应
<a name="API_GetItem_ResponseElements"></a>

### 语法
<a name="API_GetItem_ResponseElements.syntax"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 144

{"Item":{
	"AttributeName3":{"S":"AttributeValue3"},
	"AttributeName4":{"N":"AttributeValue4"},
	"AttributeName5":{"B":"dmFsdWU="}
	},
"ConsumedCapacityUnits": 0.5
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  Item  | 包含请求的属性。类型：属性名称-值对映射。 | 
| ConsumedCapacityUnits | 操作消耗的读取容量单位数。此值显示应用于预置吞吐量的数字。如果请求的项目不存在，将根据读取类型，消耗最小读取容量单位。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_GetItem_SpecialErrors"></a>

没有特定于此操作的错误。

## 示例
<a name="API_GetItem_Examples"></a>

 有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

### 示例请求
<a name="API_GetItem_Examples_Request"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.GetItem
content-type: application/x-amz-json-1.0 

{"TableName":"comptable",
	"Key":
		{"HashKeyElement":{"S":"Julie"},
		"RangeKeyElement":{"N":"1307654345"}},
	"AttributesToGet":["status","friends"],
	"ConsistentRead":true
}
```

### 示例响应
<a name="API_GetItem_Examples_Response"></a>

请注意，ConsumedCapacityUnits 值为 1，因为可选参数 `ConsistentRead` 设置为 `true`。如果同一请求的 `ConsistentRead` 设置为 `false`（或未指定），则响应最终一致，ConsumedCapacityUnits 值为 0.5。

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 72

{"Item":
	{"friends":{"SS":["Lynda, Aaron"]},
	"status":{"S":"online"}
	},
"ConsumedCapacityUnits": 1
}
```

# ListTables
<a name="API_ListTables_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_ListTables_Description"></a>

返回与当前账户和端点关联的所有表的数组。

每个 DynamoDB 端点完全独立。例如，如果您有两个名为“MyTable”的表，一个位于 dynamodb.us-west-2.amazonaws.com，另一个位于 dynamodb.us-east-1.amazonaws.com，则这两个表完全独立，不共享任何数据。ListTables 操作为接收请求的端点返回与发出请求的账户关联的所有表名称。

## 请求
<a name="API_ListTables_RequestParameters"></a>

### 语法
<a name="API_ListTables_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.ListTables
content-type: application/x-amz-json-1.0

{"ExclusiveStartTableName":"Table1","Limit":3}
```

默认 ListTables 操作为接收请求的端点请求与发出请求的账户关联的所有表名称。


****  

|  名称  |  描述  | 必填 | 
| --- | --- | --- | 
|  Limit  |  要返回的表名称最大数量。 类型：整数  | 否 | 
| ExclusiveStartTableName  | 开始列表的表的名称。如果已经运行 ListTables 操作，并响在应中收到 `LastEvaluatedTableName` 值，则使用该值继续列表。 类型：字符串 | 否 | 

## 响应
<a name="API_ListTables_ResponseElements"></a>

### 语法
<a name="API_ListTables_ResponseElements.syntax"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: S1LEK2DPQP8OJNHVHL8OU2M7KRVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 81
Date: Fri, 21 Oct 2011 20:35:38 GMT

{"TableNames":["Table1","Table2","Table3"], "LastEvaluatedTableName":"Table3"}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  TableNames  |  与当前端点的当前账户关联的表的名称。 类型：数组  | 
| LastEvaluatedTableName  | 当前列表中最后一个表的名称，仅当没有返回账户和端点的某些表时。如果已返回所有表名，则响应中不存在此值。将此值作为新请求中的 `ExclusiveStartTableName` 以继续列表，直到返回所有表名称。 类型：字符串  | 

## 特殊错误
<a name="API_ListTables_SpecialErrors"></a>

没有特定于此操作的错误。

## 示例
<a name="API_ListTables_Examples"></a>

以下示例显示使用 ListTables 操作的 HTTP POST 请求和响应。

### 示例请求
<a name="API_ListTables_Examples_Request"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.ListTables
content-type: application/x-amz-json-1.0

{"ExclusiveStartTableName":"comp2","Limit":3}
```

### 示例响应
<a name="API_ListTables_Examples_Response"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: S1LEK2DPQP8OJNHVHL8OU2M7KRVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 81
Date: Fri, 21 Oct 2011 20:35:38 GMT

{"LastEvaluatedTableName":"comp5","TableNames":["comp3","comp4","comp5"]}
```

## 相关操作
<a name="API_ListTables_Related_Actions"></a>
+  [DescribeTables](API_DescribeTables_v20111205.md) 
+  [CreateTable](API_CreateTable_v20111205.md) 
+  [DeleteTable](API_DeleteTable_v20111205.md) 

# PutItem
<a name="API_PutItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_PutItem_Description"></a>

创建新项目，或将旧项目替换为新项目（包括属性）。如果指定表中已存在具有相同主键的项目，则新项目将完全替换现有项目。可以执行条件放入（如果不存在具有指定主键的项目，则插入新项目），或替换现有项目（如果具有特定属性值）。

属性值不能为空；字符串和二进制类型属性的长度必须大于零；设置类型属性不能为空。具有空值的请求将被拒绝，并显示 `ValidationException`。

**注意**  
要确保新项目不会替换现有项目，请使用 `Exists` 设置为 `false`（对于主键属性）的条件放入操作。

有关使用 `PutItem` 的更多信息，请参见 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

## 请求
<a name="API_PutItem_RequestParameters"></a>

### 语法
<a name="API_PutItem_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.PutItem
content-type: application/x-amz-json-1.0

{"TableName":"Table1",
    "Item":{
        "AttributeName1":{"S":"AttributeValue1"},
        "AttributeName2":{"N":"AttributeValue2"},
        "AttributeName5":{"B":"dmFsdWU="}
    },
    "Expected":{"AttributeName3":{"Value": {"S":"AttributeValue"}, "Exists":Boolean}},
    "ReturnValues":"ReturnValuesConstant"}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含项目的表的名称。 类型：字符串  |  是  | 
|  Item  | 项目属性的映射，必须包括定义项目的主键值。可以为项目提供其他属性名称-值对。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：属性名称到属性值的映射。 | 是 | 
| Expected  | 指定条件放入的属性。`Expected` 参数用于提供属性名称，以及 DynamoDB 是否应在更改前检查属性值是否已存在；或者属性值是否已存在并且具有特定值。类型：属性名称到属性值的映射，以及是否存在。 | 否 | 
| Expected:AttributeName  | 条件放入的属性的名称。类型：字符串 | 否 | 
| Expected:AttributeName: ExpectedAttributeValue | 使用此参数指定属性名称-值对是否已经存在值。如果项目不存在 "Color" 属性，则下面的 JSON 表示将替换该项目：<pre>"Expected" :<br />	{"Color":{"Exists":false}}</pre>下面的 JSON 表示在替换项目前，检查 "Color" 名称的属性是否已有 "Yellow" 值：<pre>"Expected" : <br />	{"Color":{"Exists":true,{"Value":{"S":"Yellow"}}}</pre>默认情况下，如果使用 `Expected` 参数并提供 `Value`，则 DynamoDB 假定属性存在，并且需要替换当前值。这样不必指定 `{"Exists":true}`，因为是暗含的。可以将请求缩短为：<pre>"Expected" : <br />	{"Color":{"Value":{"S":"Yellow"}}}</pre> 如果指定的 `{"Exists":true}` 没有要检查的属性值，DynamoDB 将返回错误。  | 否 | 
| ReturnValues  | 如果要在用 `PutItem` 更新属性名称-值对之前获取属性名称-值对，请使用此参数。可能的参数值包括 `NONE`（默认值）或 `ALL_OLD`。如果指定 `ALL_OLD`，并且 `PutItem` 覆盖属性名称-值对，则返回旧项目的内容。如果未提供此参数或者为 `NONE`，则不会返回任何内容。类型：字符串 | 否 | 

## 响应
<a name="API_PutItem_CommonResponseElements"></a>

### 语法
<a name="API_PutItem_CommonResponseElements.syntax"></a>

下面的语法示例假定请求指定 `ALL_OLD` 的 `ReturnValues` 参数；否则，响应只有 `ConsumedCapacityUnits` 元素。

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 85

{"Attributes":
	{"AttributeName3":{"S":"AttributeValue3"},
	"AttributeName2":{"SS":"AttributeValue2"},
	"AttributeName1":{"SS":"AttributeValue1"},
	},
"ConsumedCapacityUnits":1
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  Attributes  | 放入操作之前的属性值，仅当 `ReturnValues` 参数指定为请求的 `ALL_OLD`。类型：属性名称-值对映射。 | 
| ConsumedCapacityUnits | 操作消耗的写入容量单位数。此值显示应用于预置吞吐量的数字。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_PutItem_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
|  ConditionalCheckFailedException  | 条件检查失败。找不到预期属性值。 | 
| ResourceNotFoundException  | 找不到指定项目或属性。 | 

## 示例
<a name="API_PutItem_Examples"></a>

有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

### 示例请求
<a name="API_PutItem_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.PutItem 
content-type: application/x-amz-json-1.0

{"TableName":"comp5",
	"Item":
		{"time":{"N":"300"},
		"feeling":{"S":"not surprised"},
		"user":{"S":"Riley"}
		},
	"Expected":
		{"feeling":{"Value":{"S":"surprised"},"Exists":true}}
	"ReturnValues":"ALL_OLD"
}
```

### 示例响应
<a name="API_PutItem_Examples_Response"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8952fa74-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 84

{"Attributes":
	{"feeling":{"S":"surprised"},
	"time":{"N":"300"},
	"user":{"S":"Riley"}},
"ConsumedCapacityUnits":1
}
```

## 相关操作
<a name="API_PutItem_Related_Actions"></a>
+  [UpdateItem](API_UpdateItem_v20111205.md) 
+  [DeleteItem](API_DeleteItem_v20111205.md) 
+  [GetItem](API_GetItem_v20111205.md) 
+  [BatchGetItem](API_BatchGetItem_v20111205.md) 

# 查询
<a name="API_Query_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_Query_Description"></a>

`Query` 操作通过主键获取一个或多个项目的值及其属性（`Query` 仅对 hash-and-range 主键表可用）。您必须提供一个特定 `HashKeyValue`，并且可以对主键的 `RangeKeyValue` 使用比较运算符缩小查询范围。使用 `ScanIndexForward` 参数按 range 键获取正向或反向顺序结果。

不返回结果的查询会根据读取类型消耗最小读取容量单位。

**注意**  
如果满足查询参数的项目总数超过 1MB 限制，则查询将停止，结果将返回给用户，并显示 `LastEvaluatedKey`，以在后续操作中继续查询。与扫描操作不同，查询操作永远不会返回空结果集*和* `LastEvaluatedKey`。仅当结果超过 1MB 或者使用 `Limit` 参数时提供 `LastEvaluatedKey`。  
可以使用 `ConsistentRead` 参数为一致性读取设置结果。

## 请求
<a name="API_Query_RequestParameters"></a>

### 语法
<a name="API_Query_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Query  
content-type: application/x-amz-json-1.0

{"TableName":"Table1",
	"Limit":2,
	"ConsistentRead":true,
	"HashKeyValue":{"S":"AttributeValue1":},
	"RangeKeyCondition": {"AttributeValueList":[{"N":"AttributeValue2"}],"ComparisonOperator":"GT"}
	"ScanIndexForward":true,
	"ExclusiveStartKey":{
		"HashKeyElement":{"S":"AttributeName1"},
		"RangeKeyElement":{"N":"AttributeName2"}
	},
    "AttributesToGet":["AttributeName1", "AttributeName2", "AttributeName3"]},
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含请求项目的表的名称。 类型：字符串  |  是  | 
| AttributesToGet  | 属性名称的数组。如果未指定属性名称，则返回所有属性。如果找不到某些属性，则不会出现在结果中。类型：数组 | 否 | 
| Limit  | 要返回的最大项目数（不一定是匹配项目数）。如果 DynamoDB 在查询表时处理的项目数达到限制，将停止查询并返回到此时的匹配值和 `LastEvaluatedKey`，在后续操作中应用以继续查询。此外，如果在 DynamoDB 达到此限制之前结果集大小超过 1MB，将停止查询并返回匹配值和 `LastEvaluatedKey`，在后续操作中应用以继续查询。类型：数字 | 否 | 
| ConsistentRead  | 如果设置为 `true`，则发出一致性读取，否则将使用最终一致性。类型：布尔值 | 否 | 
| Count  | 如果设置为 `true`，DynamoDB 将返回匹配查询参数的项目总数，而不是匹配项目及其属性的列表。可以对仅计数查询应用 `Limit` 参数。 提供 `AttributesToGet` 列表时不要将 `Count` 设置为 `true`；否则 DynamoDB 将返回验证错误。有关更多信息，请参阅 [对结果中的项目进行计数](Query.Other.md#Query.Count)。类型：布尔值 | 否 | 
| HashKeyValue  | 复合主键的 hash 部分的属性值。类型：字符串、数字或二进制 | 是 | 
| RangeKeyCondition  | 用于查询的属性值和比较运算符的容器。查询请求不需要 `RangeKeyCondition`。如果仅提供 `HashKeyValue`，DynamoDB 将返回具有指定 hash 键元素值的所有项目。类型：映射 | 否 | 
| RangeKeyCondition:​ AttributeValueList | 为查询参数计算的属性值。`AttributeValueList` 包含一个属性值，除非指定 `BETWEEN` 比较。对于 `BETWEEN` 比较，`AttributeValueList` 包含两个属性值。类型：`AttributeValue` 到 `ComparisonOperator` 的映射。 | 否 | 
| RangeKeyCondition:​ ComparisonOperator |  计算所提供属性的标准，例如等于、大于等于等。以下是查询操作的有效比较运算符。  大于、等于或小于的字符串值比较基于 ASCII 字符代码值。例如，`a` 大于 `A`，`aa` 大于 `B`。有关代码值列表，请参见 [http://en.wikipedia.org/wiki/ASCII\$1ASCII\$1printable\$1characters](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters)。 对于二进制，DynamoDB 在比较二进制值时将二进制数据的每个字节视为无符号值，例如计算查询表达式时。  类型：字符串或二进制  | 否 | 
|   | `EQ`：等于。 对于 `EQ`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `LE`：小于或等于。 对于 `LE`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `LT`：小于。 对于 `LT`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `GE`：大于或等于。 对于 `GE`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `GT`：大于。 对于 `GT`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `BEGINS_WITH`：检查前缀。 对于 `BEGINS_WITH`，`AttributeValueList` 只能包含一个字符串或二进制类型的 `AttributeValue`（不是数字或集合）。比较的目标属性必须是字符串或二进制（不是数字或集合）。 |   | 
|   | `BETWEEN`：大于或等于第一个值，小于或等于第二个值。 对于 `BETWEEN`，`AttributeValueList` 必须包含两个相同类型的 `AttributeValue` 元素，可以是字符串，数字或二进制（不是集合）。如果目标值大于等于第一个元素，小于等于第二个元素，则目标属性匹配。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
| ScanIndexForward | 指定索引的升序或降序遍历。DynamoDB 返回的结果反映由 range 键确定的请求顺序：如果数据类型为数字，则按数字顺序返回结果；否则，遍历基于 ASCII 字符代码值。类型：布尔值默认值为 `true`（升序）。 | 否 | 
| ExclusiveStartKey | 继续早期查询的项目的主键。如果早期查询操作在完成查询之前因为结果集大小或 `Limit` 参数中断，该查询可能会提供此值作为 `LastEvaluatedKey`。`LastEvaluatedKey` 可以在新的查询请求中传回，从此处开始继续操作。类型：`HashKeyElement` 或 `HashKeyElement` 和 `RangeKeyElement`（对于复合主键）。 | 否 | 

## 响应
<a name="API_Query_ResponseElements"></a>

### 语法
<a name="API_Query_ResponseElements.syntax"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 308

{"Count":2,"Items":[{
    "AttributeName1":{"S":"AttributeValue1"},
    "AttributeName2":{"N":"AttributeValue2"},
    "AttributeName3":{"S":"AttributeValue3"}
    },{
    "AttributeName1":{"S":"AttributeValue3"},
    "AttributeName2":{"N":"AttributeValue4"},
    "AttributeName3":{"S":"AttributeValue3"},
    "AttributeName5":{"B":"dmFsdWU="}
}],
    "LastEvaluatedKey":{"HashKeyElement":{"AttributeValue3":"S"},
                        "RangeKeyElement":{"AttributeValue4":"N"}
     },
     "ConsumedCapacityUnits":1
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| Items  | 符合查询参数的项目属性。类型：属性名称映射及其数据类型和值。 | 
| Count  |  响应中的项目数。有关更多信息，请参阅 [对结果中的项目进行计数](Query.Other.md#Query.Count)。 类型：数字  | 
| LastEvaluatedKey | 查询操作停止的项目主键，包括以前的结果集。使用此值可以在新请求中开始不包含此值的新操作。整个查询结果集完成后（即操作处理“最后一页”），`LastEvaluatedKey` 为 `null`。类型：`HashKeyElement` 或 `HashKeyElement` 和 `RangeKeyElement`（对于复合主键）。 | 
| ConsumedCapacityUnits | 操作消耗的读取容量单位数。此值显示应用于预置吞吐量的数字。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_Query_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
| ResourceNotFoundException  | 找不到指定表。 | 

## 示例
<a name="API_Query_Examples"></a>

 有关使用 AWS SDK 的示例，请参阅 [在 DynamoDB 中查询表](Query.md)。

### 示例请求
<a name="API_Query_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Query  
content-type: application/x-amz-json-1.0

{"TableName":"1-hash-rangetable",
	"Limit":2,
	"HashKeyValue":{"S":"John"},
	"ScanIndexForward":false,
	"ExclusiveStartKey":{
		"HashKeyElement":{"S":"John"},
		"RangeKeyElement":{"S":"The Matrix"}
	}
}
```

### 示例响应
<a name="API_Query_Examples_Response"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 3647e778-71eb-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 308

{"Count":2,"Items":[{
	"fans":{"SS":["Jody","Jake"]},
	"name":{"S":"John"},
	"rating":{"S":"***"},
	"title":{"S":"The End"}
	},{
	"fans":{"SS":["Jody","Jake"]},
	"name":{"S":"John"},
	"rating":{"S":"***"},
	"title":{"S":"The Beatles"}
	}],
	"LastEvaluatedKey":{"HashKeyElement":{"S":"John"},"RangeKeyElement":{"S":"The Beatles"}},
"ConsumedCapacityUnits":1
}
```

### 示例请求
<a name="API_Query_Examples_Request2"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Query 
content-type: application/x-amz-json-1.0
 
{"TableName":"1-hash-rangetable",
	"Limit":2,
	"HashKeyValue":{"S":"Airplane"},
	"RangeKeyCondition":{"AttributeValueList":[{"N":"1980"}],"ComparisonOperator":"EQ"},
	"ScanIndexForward":false}
```

### 示例响应
<a name="API_Query_Examples_Response2"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8b9ee1ad-774c-11e0-9172-d954e38f553a
content-type: application/x-amz-json-1.0
content-length: 119 
 
{"Count":1,"Items":[{
	"fans":{"SS":["Dave","Aaron"]},
	"name":{"S":"Airplane"},
	"rating":{"S":"***"},
	"year":{"N":"1980"}
	}],
"ConsumedCapacityUnits":1
}
```

## 相关操作
<a name="API_Query_Related_Actions"></a>
+  [扫描](API_Scan_v20111205.md) 

# 扫描
<a name="API_Scan_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_Scan_Description"></a>

`Scan` 操作对表执行完整扫描，返回一个或多个项目及其属性。提供 `ScanFilter` 以获得更具体的结果。

**注意**  
如果扫描项目的总数超过 1MB 限制，则扫描停止，并将结果返回给用户并显示 `LastEvaluatedKey`，以在后续操作中继续扫描。结果还包括超出限制的项目数量。扫描可能导致没有符合筛选条件的表数据。  
结果集具有最终一致性。

## 请求
<a name="API_Scan_RequestParameters"></a>

### 语法
<a name="API_Scan_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Scan  
content-type: application/x-amz-json-1.0

{"TableName":"Table1",
    "Limit": 2,
    "ScanFilter":{
        "AttributeName1":{"AttributeValueList":[{"S":"AttributeValue"}],"ComparisonOperator":"EQ"}
    },
    "ExclusiveStartKey":{
        "HashKeyElement":{"S":"AttributeName1"},
        "RangeKeyElement":{"N":"AttributeName2"}
    },
    "AttributesToGet":["AttributeName1", "AttributeName2", "AttributeName3"]},
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含请求项目的表的名称。 类型：字符串  |  是  | 
| AttributesToGet  | 属性名称的数组。如果未指定属性名称，则返回所有属性。如果找不到某些属性，则不会出现在结果中。类型：数组 | 否 | 
| Limit  | 要计算的最大项目数（不一定是匹配项目数）。如果 DynamoDB 在处理结果时处理达到限制的项目数量，将停止并返回到此时的匹配值和 `LastEvaluatedKey`，在后续操作中应用以继续检索项目。此外，如果在 DynamoDB 达到此限制之前扫描的数据集大小超过 1MB，将停止扫描并返回达到限制的匹配值和 `LastEvaluatedKey`，在后续操作中应用以继续扫描。类型：数字 | 否 | 
| Count  | 如果设置为 `true`，DynamoDB 将返回扫描操作的项目总数，即使该操作没有与分配的筛选器匹配的项目。您可以将 Limit 参数应用于仅计数扫描。 提供 `AttributesToGet` 列表时不要将 `Count` 设置为 `true`；否则 DynamoDB 将返回验证错误。有关更多信息，请参阅 [对结果中的项目进行计数](Scan.md#Scan.Count)。类型：布尔值 | 否 | 
| ScanFilter  | 计算扫描结果并仅返回所需值。多个条件被视为 "AND" 操作：必须满足所有条件才能包含在结果中。 类型：属性名称到具有比较运算符的值的映射。 | 否 | 
| ScanFilter:AttributeValueList | 用于计算筛选器扫描结果的值和条件。类型：`AttributeValue` 到 `Condition` 的映射。 | 否 | 
| ScanFilter:​ ComparisonOperator | 计算所提供属性的标准，例如等于、大于等于等。以下是扫描操作的有效比较运算符。 大于、等于或小于的字符串值比较基于 ASCII 字符代码值。例如，`a` 大于 `A`，`aa` 大于 `B`。有关代码值列表，请参见 [http://en.wikipedia.org/wiki/ASCII\$1ASCII\$1printable\$1characters](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters)。 对于二进制，DynamoDB 在比较二进制值时将二进制数据的每个字节视为无符号值，例如计算查询表达式时。  类型：字符串或二进制  | 否 | 
|   | `EQ`：等于。 对于 `EQ`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `NE`：不等于。 对于 `NE`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `LE`：小于或等于。 对于 `LE`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `LT`：小于。 对于 `LT`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `GE`：大于或等于。 对于 `GE`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `GT`：大于。 对于 `GT`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。同样，`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
|   | `NOT_NULL`：属性存在。  |   | 
|   | `NULL`：属性不存在。  |   | 
|   | `CONTAINS`：检查子序列或集合中的值。 对于 `CONTAINS`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果比较的目标属性是字符串，则操作将检查子字符串匹配。如果比较的目标属性是二进制，则操作将查找与输入匹配的目标子序列。如果比较的目标属性是集合（“SS”、“NS”或“BS”），则操作将检查集合的成员（而不是作为子字符串）。 |   | 
|   | `NOT_CONTAINS`：检查缺少子序列，或者集合中缺少值。 对于 `NOT_CONTAINS`，`AttributeValueList` 只能包含一个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。如果比较的目标属性是字符串，则操作将检查是否没有子字符串匹配项。如果比较的目标属性是二进制，则操作将检查是否没有匹配输入的目标子序列。如果比较的目标属性是集合（“SS”、“NS”或“BS”），则操作将检查是否不存在集合的成员（而不是作为子字符串）。 |   | 
|   | `BEGINS_WITH`：检查前缀。 对于 `BEGINS_WITH`，`AttributeValueList` 只能包含一个字符串或二进制类型的 `AttributeValue`（不是数字或集合）。比较的目标属性必须是字符串或二进制（不是数字或集合）。 |   | 
|   | `IN`：检查确切匹配。 对于 `IN`，`AttributeValueList` 可以包含多个字符串、数字或二进制类型的 `AttributeValue`（不是集合）。比较的目标属性必须具有相同的类型和精确值才能匹配。字符串从不匹配字符串集。 |   | 
|   | `BETWEEN`：大于等于第一个值，小于等于第二个值。 对于 `BETWEEN`，`AttributeValueList` 必须包含两个相同类型的 `AttributeValue` 元素，可以是字符串，数字或二进制（不是集合）。如果目标值大于等于第一个元素，小于等于第二个元素，则目标属性匹配。如果项目包含的 `AttributeValue` 类型与请求中指定的类型不同，则该值不匹配。例如，`{"S":"6"}` 不等于 `{"N":"6"}`。同样，`{"N":"6"}` 不等于 `{"NS":["6", "2", "1"]}`。 |   | 
| ExclusiveStartKey | 继续早期扫描的项目的主键。如果因为结果集大小或 `Limit` 参数，扫描操作在扫描整个表之前中断，则早期扫描可能提供此值。。`LastEvaluatedKey` 可以在新的扫描请求中传回，以便从此时继续操作。类型：`HashKeyElement` 或 `HashKeyElement`，以及复合主键的 `RangeKeyElement`。 | 否 | 

## 响应
<a name="API_Scan_ResponseElements"></a>

### 语法
<a name="API_Scan_ResponseElements.syntax"></a>

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 229 

{"Count":2,"Items":[{
    "AttributeName1":{"S":"AttributeValue1"},
    "AttributeName2":{"S":"AttributeValue2"},
    "AttributeName3":{"S":"AttributeValue3"}
    },{
    "AttributeName1":{"S":"AttributeValue4"},
    "AttributeName2":{"S":"AttributeValue5"},
    "AttributeName3":{"S":"AttributeValue6"},
    "AttributeName5":{"B":"dmFsdWU="}
    }],
    "LastEvaluatedKey":
        {"HashKeyElement":{"S":"AttributeName1"},
        "RangeKeyElement":{"N":"AttributeName2"},
    "ConsumedCapacityUnits":1,
    "ScannedCount":2}
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| Items  | 符合操作参数的属性的容器。类型：属性名称映射到及其数据类型和值。 | 
| Count  |  响应中的项目数。有关更多信息，请参阅 [对结果中的项目进行计数](Scan.md#Scan.Count)。 类型：数字  | 
| ScannedCount  | 在应用任何筛选器之前，完整扫描中的项目数。如果 `ScannedCount` 值很高但 `Count` 结果很少或为零，说明操作效率低下。有关更多信息，请参阅 [对结果中的项目进行计数](Scan.md#Scan.Count)。类型：数字 | 
| LastEvaluatedKey | 扫描操作停止的项目的主键。在后续扫描操作中提供此值，以便从此时继续该操作。整个扫描结果集完成后（即操作处理“最后一页”），则 `LastEvaluatedKey` 为 `null`。 | 
| ConsumedCapacityUnits | 操作消耗的读取容量单位数。此值显示应用于预置吞吐量的数字。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_Scan_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
| ResourceNotFoundException  | 找不到指定表。 | 

## 示例
<a name="API_Scan_Examples"></a>

有关使用 AWS SDK 的示例，请参阅 [在 DynamoDB 中扫描表](Scan.md)。

### 示例请求
<a name="API_Scan_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Scan 
content-type: application/x-amz-json-1.0

{"TableName":"1-hash-rangetable","ScanFilter":{}}
```

### 示例响应
<a name="API_Scan_Examples_Response"></a>

```
HTTP/1.1 200
x-amzn-RequestId: 4e8a5fa9-71e7-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0 
content-length: 465 

{"Count":4,"Items":[{
	"date":{"S":"1980"},
	"fans":{"SS":["Dave","Aaron"]},
	"name":{"S":"Airplane"},
	"rating":{"S":"***"}
	},{
	"date":{"S":"1999"},
	"fans":{"SS":["Ziggy","Laura","Dean"]},
	"name":{"S":"Matrix"},
	"rating":{"S":"*****"}
	},{
	"date":{"S":"1976"},
	"fans":{"SS":["Riley"]},"
	name":{"S":"The Shaggy D.A."},
	"rating":{"S":"**"}
	},{
	"date":{"S":"1985"},
	"fans":{"SS":["Fox","Lloyd"]},
	"name":{"S":"Back To The Future"},
	"rating":{"S":"****"}
	}],
    "ConsumedCapacityUnits":0.5
	"ScannedCount":4}
```

### 示例请求
<a name="API_Scan_Examples_Request2"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Scan 
content-type: application/x-amz-json-1.0
content-length: 125 

{"TableName":"comp5",
	"ScanFilter":
		{"time":
			{"AttributeValueList":[{"N":"400"}],
			"ComparisonOperator":"GT"}
	}
}
```

### 示例响应
<a name="API_Scan_Examples_Response2"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: PD1CQK9QCTERLTJP20VALJ60TRVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 262
Date: Mon, 15 Aug 2011 16:52:02 GMT

{"Count":2,
	"Items":[
		{"friends":{"SS":["Dave","Ziggy","Barrie"]},
		"status":{"S":"chatting"},
		"time":{"N":"2000"},
		"user":{"S":"Casey"}},
		{"friends":{"SS":["Dave","Ziggy","Barrie"]},
		"status":{"S":"chatting"},
		"time":{"N":"2000"},
		"user":{"S":"Fredy"}
		}],
"ConsumedCapacityUnits":0.5
"ScannedCount":4
}
```

### 示例请求
<a name="API_Scan_Examples_Request3"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.Scan
content-type: application/x-amz-json-1.0

{"TableName":"comp5",
	"Limit":2,
	"ScanFilter":
		{"time":
			{"AttributeValueList":[{"N":"400"}],
			"ComparisonOperator":"GT"}
	},
	"ExclusiveStartKey":
		{"HashKeyElement":{"S":"Fredy"},"RangeKeyElement":{"N":"2000"}}
}
```

### 示例响应
<a name="API_Scan_Examples_Response3"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: PD1CQK9QCTERLTJP20VALJ60TRVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 232
Date: Mon, 15 Aug 2011 16:52:02 GMT

{"Count":1,
	"Items":[
		{"friends":{"SS":["Jane","James","John"]},
		"status":{"S":"exercising"},
		"time":{"N":"2200"},
		"user":{"S":"Roger"}}
	],
	"LastEvaluatedKey":{"HashKeyElement":{"S":"Riley"},"RangeKeyElement":{"N":"250"}},
"ConsumedCapacityUnits":0.5
"ScannedCount":2
}
```

## 相关操作
<a name="API_Scan_Related_Actions"></a>
+  [查询](API_Query_v20111205.md) 
+  [BatchGetItem](API_BatchGetItem_v20111205.md) 

# UpdateItem
<a name="API_UpdateItem_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_UpdateItem_Description"></a>

编辑现有项目的属性。您可以执行条件更新（如果不存在，则插入新的属性名称-值对；如果现有名称-值对具有某些预期属性值，则替换它）。

**注意**  
无法使用 UpdateItem 更新主键属性。而应删除项目，使用 PutItem 创建具有新属性的新项目。

UpdateItem 操作包括 `Action` 参数，定义如何执行更新。您可以放入、删除或添加属性值。

属性值不能为空；字符串和二进制类型属性的长度必须大于零；集合类型属性不能为空。具有空值的请求将被拒绝，并显示 `ValidationException`。

如果现有项目具有指定的主键：
+ **PUT—** 添加指定的属性。如果属性存在，则将替换为新值。
+ **DDELETE —** 如果未指定值，则删除属性及其值。如果指定了一组值，则将从旧集中删除指定集中的值。因此，如果属性值包含 [a,b,c] 并且删除操作包含 [a,c]，则最终属性值为 [b]。指定值的类型必须与现有值类型匹配。指定空集无效。
+ **ADD —** 仅对数字或者目标属性是集合（包括字符串集）时，使用 add 操作。如果目标属性是单个字符串值或标量二进制值，ADD 将不起作用。指定的值将添加到数值中（递增或递减现有数值），或作为字符串集中的附加值添加。如果指定一组值，则这些值将添加到现有集合。例如，如果原始集合是 [1,2]，提供的值为 [3]，则在 add 操作后，集合为 [1,2,3]，而不是 [4,5]。如果为集合属性指定 Add 操作，并且指定的属性类型与现有集合类型不匹配，则会出错。

  如果对不存在的属性使用 ADD，则将该属性及其值添加到项目。

如果没有项目匹配指定的主键：
+ **PUT—** 使用指定主键创建新项目。然后添加指定属性。
+ **DELETE—** 什么都不会发生。
+ **ADD—** 为属性值创建一个具有提供的主键和数字（或一组数字）的项目。对字符串或二进制类型无效。

**注意**  
如果使用 `ADD` 为更新前不存在的项目递增或递减数值，则 DynamoDB 使用 `0` 作为初始值。如果使用 `ADD` 为更新前不存在的属性递增或递减数值（但项目存在），则 DynamoDB 使用 `0` 作为初始值。例如，可以使用 `ADD` 将 `+3` 添加到更新之前不存在的属性。DynamoDB 对初始值使用 `0`，更新后的值为 `3`。

有关使用此操作的更多信息，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

## 请求
<a name="API_UpdateItem_RequestParameters"></a>

### 语法
<a name="API_UpdateItem_RequestParameters.syntax"></a>

```
// This header is abbreviated.
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.UpdateItem
content-type: application/x-amz-json-1.0

{"TableName":"Table1",
    "Key":
        {"HashKeyElement":{"S":"AttributeValue1"},
        "RangeKeyElement":{"N":"AttributeValue2"}},
    "AttributeUpdates":{"AttributeName3":{"Value":{"S":"AttributeValue3_New"},"Action":"PUT"}},
    "Expected":{"AttributeName3":{"Value":{"S":"AttributeValue3_Current"}}},
    "ReturnValues":"ReturnValuesConstant"
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  包含要更新项目的表的名称。 类型：字符串  |  是  | 
|  Key  | 定义项目的主键。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 到其值以及 `RangeKeyElement` 到其值的映射。 | 是 | 
| AttributeUpdates | 属性名称到新值和更新操作的映射。属性名称指定要修改的属性，不能包含任何主键属性。类型：属性名称、值和属性更新操作的映射。 |  | 
| AttributeUpdates:Action | 指定如何执行更新。可能的值：`PUT`（默认）、`ADD` 或 `DELETE`。UpdateItem 说明中解释语义类型：字符串默认：`PUT` | 否 | 
| Expected  | 指定条件更新的属性。`Expected` 参数用于提供属性名称，以及 DynamoDB 是否应在更改前检查属性值是否已存在；或者属性值是否已存在并且具有特定值。类型：属性名称映射。 | 否 | 
| Expected:AttributeName  | 条件放入的属性的名称。类型：字符串 | 否 | 
| Expected:AttributeName: ExpectedAttributeValue | 使用此参数指定属性名称-值对是否已经存在值。如果项目不存在 "Color" 属性，则下面的 JSON 表示将更新该项目：<pre>"Expected" :<br />	{"Color":{"Exists":false}}</pre>下面的 JSON 表示在更新项目前，检查 "Color" 名称的属性是否已有 "Yellow" 值：<pre>"Expected" : <br />	{"Color":{"Exists":true},{"Value":{"S":"Yellow"}}}</pre>默认情况下，如果使用 `Expected` 参数并提供 `Value`，则 DynamoDB 假定属性存在，并且需要替换当前值。这样不必指定 `{"Exists":true}`，因为是暗含的。可以将请求缩短为：<pre>"Expected" : <br />	{"Color":{"Value":{"S":"Yellow"}}}</pre> 如果指定的 `{"Exists":true}` 没有要检查的属性值，DynamoDB 将返回错误。  | 否 | 
| ReturnValues  | 如果要在用 `UpdateItem` 更新属性名称-值对之前获取属性名称-值对，请使用此参数。可能的参数值包括 `NONE`（默认）或 `ALL_OLD`、`UPDATED_OLD`、`ALL_NEW` 或 `UPDATED_NEW`。如果指定 `ALL_OLD`，并且 `UpdateItem` 覆盖属性名称-值对，则返回旧项目的内容。如果未提供此参数或者为 `NONE`，则不会返回任何内容。如果指定 `ALL_NEW`，则返回项目新版本的所有属性。如果指定 `UPDATED_NEW`，则仅返回更新属性的新版本。类型：字符串 | 否 | 

## 响应
<a name="API_UpdateItem_CommonResponseElements"></a>

### 语法
<a name="API_UpdateItem_CommonResponseElements.syntax"></a>

下面的语法示例假定请求指定 `ALL_OLD` 的 `ReturnValues` 参数；否则，响应只有 `ConsumedCapacityUnits` 元素。

```
HTTP/1.1 200 
x-amzn-RequestId: 8966d095-71e9-11e0-a498-71d736f27375 
content-type: application/x-amz-json-1.0
content-length: 140

{"Attributes":{
	"AttributeName1":{"S":"AttributeValue1"},
	"AttributeName2":{"S":"AttributeValue2"},
	"AttributeName3":{"S":"AttributeValue3"},
	"AttributeName5":{"B":"dmFsdWU="}
	},
"ConsumedCapacityUnits":1
}
```


****  

|  名称  |  描述  | 
| --- | --- | 
|  Attributes  | 属性名称-值对的映射，但仅当 `ReturnValues` 参数在请求中指定为 `NONE` 以外的内容。类型：属性名称-值对映射。 | 
| ConsumedCapacityUnits | 操作消耗的写入容量单位数。此值显示应用于预置吞吐量的数字。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)。 类型：数字 | 

## 特殊错误
<a name="API_UpdateItem_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
|  ConditionalCheckFailedException  | 条件检查失败。属性（“\$1 名称 \$1”）值是（“\$1 值 \$1”），但是预期值（“\$1 expValue \$1”）  | 
| ResourceNotFoundExceptions  | 找不到指定项目或属性。 | 

## 示例
<a name="API_UpdateItem_Examples"></a>

有关使用 AWS SDK 的示例，请参阅 [使用 DynamoDB 中的项目和属性](WorkingWithItems.md)。

### 示例请求
<a name="API_UpdateItem_Examples_Request"></a>

```
// This header is abbreviated. For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.UpdateItem
content-type: application/x-amz-json-1.0 

{"TableName":"comp5",
    "Key":
        {"HashKeyElement":{"S":"Julie"},"RangeKeyElement":{"N":"1307654350"}},
    "AttributeUpdates":
        {"status":{"Value":{"S":"online"},
        "Action":"PUT"}},
    "Expected":{"status":{"Value":{"S":"offline"}}},
    "ReturnValues":"ALL_NEW"
}
```

### 示例响应
<a name="API_UpdateItem_Examples_Response"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: 5IMHO7F01Q9P7Q6QMKMMI3R3QRVV4KQNSO5AEMVJF66Q9ASUAAJG
content-type: application/x-amz-json-1.0
content-length: 121
Date: Fri, 26 Aug 2011 21:05:00 GMT

{"Attributes":
    {"friends":{"SS":["Lynda, Aaron"]},
    "status":{"S":"online"},
    "time":{"N":"1307654350"},
    "user":{"S":"Julie"}},
"ConsumedCapacityUnits":1
}
```

## 相关操作
<a name="API_UpdateItem_Related_Actions"></a>
+  [PutItem](API_PutItem_v20111205.md) 
+  [DeleteItem](API_DeleteItem_v20111205.md) 

# UpdateTable
<a name="API_UpdateTable_v20111205"></a>

**重要**  
***本节介绍已经弃用的 API 版本 2011-12-05，不应用于新应用程序。***  
 **有关当前低级别 API 的文档，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)。**

## 描述
<a name="API_updatetable_Description"></a>

更新给定表的预置吞吐量。设置表的吞吐量有助于管理性能，是 DynamoDB 预置吞吐量功能的一部分。有关更多信息，请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。

可以根据 [Amazon DynamoDB 中的配额](ServiceQuotas.md) 中列出的最大和最小值，升级或降级预置吞吐量值。

表必须处于 `ACTIVE` 状态才能成功执行此操作。UpdateTable 是一个异步操作；执行操作时，表处于 `UPDATING` 状态。表处于 `UPDATING` 状态时，仍具有调用之前的预置吞吐量。仅当表在 UpdateTable 操作后返回 `ACTIVE` 状态时，新的预置吞吐量设置生效。

## 请求
<a name="API_UpdateTable_RequestParameters"></a>

### 语法
<a name="API_UpdateTable_RequestParameters.syntax"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.UpdateTable
content-type: application/x-amz-json-1.0

{"TableName":"Table1",
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":15}
}
```


****  

|  名称  |  描述  |  必填 | 
| --- | --- | --- | 
|  TableName  |  要更新的表的名称。 类型：字符串   |  是  | 
|  ProvisionedThroughput  | 指定表的新吞吐量，由 `ReadCapacityUnits` 和 `WriteCapacityUnits` 的值组成。请参阅 [DynamoDB 预置容量模式](provisioned-capacity-mode.md)。类型：数组  | 是 | 
| ProvisionedThroughput :ReadCapacityUnits |  设置 DynamoDB 平衡负载和其他操作前，指定表每秒消耗的一致 `ReadCapacityUnits` 的最小数量。 最终一致读取操作需要的资源少于一致读取操作，因此，设置每秒 50 个一致的 `ReadCapacityUnits` 可提供每秒 100 个最终一致的 `ReadCapacityUnits`。类型：数字  | 是 | 
| ProvisionedThroughput :WriteCapacityUnits |  设置 DynamoDB 平衡负载和其他操作前，指定表每秒消耗的 `WriteCapacityUnits` 的最小数量。类型：数字  | 是 | 

## 响应
<a name="API_UpdateTable_ResponseElements"></a>

### 语法
<a name="API_UpdateTable_ResponseElements.syntax"></a>

```
HTTP/1.1 200 OK
x-amzn-RequestId: CSOC7TJPLR0OOKIRLGOHVAICUFVV4KQNSO5AEMVJF66Q9ASUAAJG
Content-Type: application/json
Content-Length: 311
Date: Tue, 12 Jul 2011 21:31:03 GMT

{"TableDescription":
    {"CreationDateTime":1.321657838135E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"AttributeValue1","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"AttributeValue2","AttributeType":"N"}},
    "ProvisionedThroughput":
        {"LastDecreaseDateTime":1.321661704489E9,
        "LastIncreaseDateTime":1.321663607695E9,
        "ReadCapacityUnits":5,
        "WriteCapacityUnits":10},
    "TableName":"Table1",
    "TableStatus":"UPDATING"}}
```


****  

|  名称  |  描述  | 
| --- | --- | 
| CreationDateTime | 表的创建日期。类型：数字 | 
|  KeySchema  | 表的主键（简单或复合）结构。`HashKeyElement` 的名称-值对是必填的，`RangeKeyElement` 的名称-值对是可选的（只有复合主键需要）。Hash 键最大为 2048 字节。Range 键最大为 1024 字节。这两个限制单独执行（即，可以组合 hash \$1 range 2048 \$1 1024 键）。有关主键的更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。类型：`HashKeyElement` 的映射，或者复合主键的 `HashKeyElement` 和 `RangeKeyElement`。 | 
| ProvisionedThroughput | 指定表的当前吞吐量设置，包括 `LastIncreaseDateTime`（如果适用），`LastDecreaseDateTime`（如果适用）值。类型：数组  | 
|  TableName  |  已更新的表的名称。 类型：字符串  | 
|  TableStatus  | 表的当前状态（CREATING、ACTIVE、DELETING 或 UPDATING），应为 UPDATING。使用 [DescribeTables](API_DescribeTables_v20111205.md) 操作检查表的状态。类型：字符串 | 

## 特殊错误
<a name="API_UpdateTable_SpecialErrors"></a>


****  

|  错误  |  描述  | 
| --- | --- | 
| ResourceNotFoundException  | 找不到指定表。 | 
| ResourceInUseException | 表不处于 ACTIVE 状态。 | 

## 示例
<a name="API_UpdateTable_Examples"></a>

### 示例请求
<a name="API_UpdateTable_Examples_Request"></a>

```
// This header is abbreviated. 
// For a sample of a complete header, see DynamoDB 低级 API.
POST / HTTP/1.1 
x-amz-target: DynamoDB_20111205.UpdateTable
content-type: application/x-amz-json-1.0

{"TableName":"comp1",
    "ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":15}
}
```

### 示例响应
<a name="API_UpdateTable_Examples_Response"></a>

```
HTTP/1.1 200 OK
content-type: application/x-amz-json-1.0
content-length: 390
Date: Sat, 19 Nov 2011 00:46:47 GMT

{"TableDescription":
    {"CreationDateTime":1.321657838135E9,
    "KeySchema":
        {"HashKeyElement":{"AttributeName":"user","AttributeType":"S"},
        "RangeKeyElement":{"AttributeName":"time","AttributeType":"N"}},
    "ProvisionedThroughput":
        {"LastDecreaseDateTime":1.321661704489E9,
        "LastIncreaseDateTime":1.321663607695E9,
        "ReadCapacityUnits":5,
        "WriteCapacityUnits":10},
    "TableName":"comp1",
    "TableStatus":"UPDATING"}
}
```

## 相关操作
<a name="API_UpdateTable_Related_Actions"></a>
+  [CreateTable](API_CreateTable_v20111205.md) 
+  [DescribeTables](API_DescribeTables_v20111205.md) 
+  [DeleteTable](API_DeleteTable_v20111205.md) 