

# 创建键值存储
<a name="kvs-with-functions-create"></a>



您可以同时创建键值存储及其键值对。您还可以立即创建一个空的键值存储，稍后再添加键值对。

**注意**  
如果您指定来自 Amazon S3 存储桶的数据来源，则必须对该存储桶具有 `s3:GetObject` 和 `s3:GetBucketLocation` 权限。如果您没有这些权限，CloudFront 将无法成功创建键值存储。

决定是否要在创建键值存储的同时添加键值对。可以使用 CloudFront 控制台、CloudFront API 或 AWS SDK 导入键值对。但是，您只能在*最初* 创建键值存储时导入键值对的文件。

要创建键值对的文件，请参阅[键值对的文件格式](kvs-with-functions-create-s3-kvp.md)。

------
#### [ Console ]

**创建键值存储**

1. 登录到 AWS 管理控制台 并通过以下网址打开 CloudFront 控制台中的**函数**页面：[https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions)。

1. 选择 **KeyValueStores** 选项卡，然后选择**创建 KeyValueStore**。

1. 输入键值存储的名称和可选描述。

1. 填写 **S3 URI**：
   + 如果您有一个键值对文件，请输入存储该文件的 Amazon S3 存储桶的路径。
   + 如果您打算手动输入键值对，请将此字段留空。

1. 选择**创建**。键值存储现已存在。

   此时将显示新键值存储的详细信息页面。页面上的信息包括键值存储的 ID 和 ARN。
   + ID 是一个随机字符串，在您的 AWS 账户中是唯一的。
   + ARN 的语法如下：

     *AWS 账户*`:key-value-store/`*键值存储 ID*

1. 查看**键值对**部分。如果您导入了文件，则此部分会显示一些键值对。您可执行以下操作：
   + 如果您导入了文件，还可以手动添加更多值。
   + 如果您没有从 Amazon S3 存储桶导入文件，但却想要立即添加键值对，则可以完成下一步。
   + 您可以跳过此步骤，稍后再添加键值对。

1. 立即添加键值对：

   1. 选择**添加键值对**。

   1. 选择**添加对**并输入名称和值。重复此步骤以添加更多键值对。

   1. 完成后，选择**保存更改**，将所有键值对保存在键值存储中。在随后显示的对话框中，选择**完成**。

1. 要将键值存储立即与函数关联，请完成**关联的函数**部分。有关更多信息，请参阅[创建函数](create-function.md)或[更新函数](update-function.md)。

   您也可以稍后通过此键值存储详细信息页面或通过函数的详细信息页面关联函数。

------
#### [ AWS CLI ]

**创建键值存储**
+ 运行以下命令来创建键值存储并从 Amazon S3 存储桶导入键值对。

  ```
  aws cloudfront create-key-value-store \
      --name=keyvaluestore1 \
      --comment="This is my key value store file" \
      --import-source=SourceType=S3,SourceARN=arn:aws:s3:::amzn-s3-demo-bucket1/kvs-input.json
  ```

  **响应**

  ```
  {
      "ETag": "ETVABCEXAMPLE",
      "Location": "https://cloudfront.amazonaws.com/2020-05-31/key-value-store/arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
      "KeyValueStore": {
          "Name": "keyvaluestore1",
          "Id": "8aa76c93-3198-462c-aaf6-example",
          "Comment": "This is my key value store file",
          "ARN": "arn:aws:cloudfront::123456789012:key-value-store/8aa76c93-3198-462c-aaf6-example",
          "Status": "PROVISIONING",
          "LastModifiedTime": "2024-08-06T22:19:10.813000+00:00"
      }
  }
  ```

------
#### [ API ]

**创建键值存储**

1. 使用 [CloudFront CreateKeyValueStore](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateKeyValueStore.html) 操作。该操作需要几个参数：
   + 键值存储的 `name`。
   + 包含注释的 `comment` 参数。
   + 一个 `import-source` 参数，允许您从存储在 Amazon S3 存储桶中的文件中导入键值对。只有在您首次创建键值存储时，才能从文件导入。有关文件结构的信息，请参阅[键值对的文件格式](kvs-with-functions-create-s3-kvp.md)。

操作响应包含以下信息：
+ 请求中传递的值，包括您分配的名称。
+ 诸如创建时间之类的数据。
+ `ETag`（例如 `ETVABCEXAMPLE`），即包含键值存储名称的 ARN（例如 `arn:aws:cloudfront::123456789012:key-value-store/keyvaluestore1`）。

  您将使用 `ETag`、ARN 和名称的某种组合以编程方式使用键值存储。

------

## 键值存储状态
<a name="key-value-store-status"></a>

创建键值存储时，数据存储可以具有以下状态值。


****  

| 值 | 说明 | 
| --- | --- | 
|  **预置**  |  键值存储已创建，CloudFront 正在处理您指定的数据来源。  | 
|  **就绪**  |  键值存储已创建，CloudFront 成功处理了您指定的数据来源。  | 
|  **导入失败**  |  CloudFront 无法处理您指定的数据来源。如果您的文件格式无效或超过大小限制，则会显示此状态。有关更多信息，请参阅 [键值对的文件格式](kvs-with-functions-create-s3-kvp.md)。  | 