

# 在 AWS CLI 中使用 Amazon DynamoDB
<a name="cli-services-dynamodb"></a>

AWS Command Line Interface (AWS CLI) 为所有AWS数据库服务（包括 Amazon DynamoDB）提供支持。您可以使用 AWS CLI 进行临时操作，如创建表。您还可以使用它在实用工具脚本中嵌入 DynamoDB 操作。

有关将 AWS CLI 与 DynamoDB 结合使用的更多信息，请参阅**《AWS CLI 命令参考》中的 ```[dynamodb](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)`。

要列出适用于 DynamoDB 的 AWS CLI 命令，请使用以下命令。

```
$ aws dynamodb help
```

**Topics**
+ [先决条件](#cli-services-dynamodb-prereqs)
+ [创建和使用 DynamoDB 表](#cli-services-dynamodb-using)
+ [使用 DynamoDB Local](#cli-services-dynamodb-local)
+ [资源](#cli-services-dynamodb-resources)

## 先决条件
<a name="cli-services-dynamodb-prereqs"></a>

要运行 `dynamodb` 命令，您需要：
+ 安装和配置 AWS CLI。有关更多信息，请参阅[安装或更新最新版本的 AWS CLI](getting-started-install.md)和[AWS CLI 身份验证和访问凭证](cli-chap-authentication.md)。

## 创建和使用 DynamoDB 表
<a name="cli-services-dynamodb-using"></a>

命令行格式为 DynamoDB 命令名称后接该命令的参数。AWS CLI 对于参数值支持 CLI [速记语法](cli-usage-shorthand.md)和完全 JSON。

下面的示例创建了一个名为 `MusicCollection` 的表。

```
$ aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
```

您可以使用类似下面的命令向表中添加新行，如以下示例所示。这些示例使用速记语法和 JSON 的组合。

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{
        "Artist": {"S": "No One You Know"},
        "SongTitle": {"S": "Call Me Today"} ,
        "AlbumTitle": {"S": "Somewhat Famous"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{ 
        "Artist": {"S": "Acme Band"}, 
        "SongTitle": {"S": "Happy Day"} , 
        "AlbumTitle": {"S": "Songs About Life"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

可能难以在单行命令中编写有效的 JSON。为了使之更简单，AWS CLI 可以读取 JSON 文件。例如，请考虑以下 JSON 代码段，它存储在一个名为 `expression-attributes.json` 的文件中。

```
{
  ":v1": {"S": "No One You Know"},
  ":v2": {"S": "Call Me Today"}
}
```

您可以使用此文件通过 `query` 发出 AWS CLI 请求。在下面的示例中，`expression-attributes.json` 文件的内容用作 `--expression-attribute-values` 参数的值。

```
$ aws dynamodb query --table-name MusicCollection \
    --key-condition-expression "Artist = :v1 AND SongTitle = :v2" \
    --expression-attribute-values file://expression-attributes.json
{
    "Count": 1,
    "Items": [
        {
            "AlbumTitle": {
                "S": "Somewhat Famous"
            },
            "SongTitle": {
                "S": "Call Me Today"
            },
            "Artist": {
                "S": "No One You Know"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}
```

## 使用 DynamoDB Local
<a name="cli-services-dynamodb-local"></a>

除了 DynamoDB 之外，您还可以将 AWS CLI 与 DynamoDB Local 结合使用。DynamoDB Local 是模拟 DynamoDB 服务的小客户端数据库和服务器。通过 DynamoDB Local 可编写使用 DynamoDB API 的应用程序，而无需操作 DynamoDB Web 服务中的任何表或数据。而所有 API 操作均重新路由到本地数据库。这样可节省预配置吞吐量、数据存储和数据传输费用。

有关 DynamoDB Local 以及如何将其与 AWS CLI 结合使用的更多信息，请参阅 [Amazon DynamoDB 开发人员指南](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)中的以下部分：
+ [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
+ [将 AWS CLI 与 DynamoDB Local 结合使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal)

## 资源
<a name="cli-services-dynamodb-resources"></a>

《AWS CLI 参考：》****
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html)

《服务参考：》****
+ Amazon DynamoDB 开发人员指南中的 [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
+ Amazon DynamoDB 开发人员指南中的[将 AWS CLI 与 DynamoDB Local 结合使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal)