使用 Amazon CLI - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon CLI

您可以使用 Amazon Command Line Interface (Amazon CLI) 从命令行管理多个 Amazon 服务并通过脚本自动执行这些服务。使用 Amazon Keyspaces,您可以使用数据定义语言 (DDL) 操作,如创建表。Amazon CLI此外,您还可以使用基础设施即代码 (IaC) 服务和工具,如Amazon CloudFormation和 Terraform。

您必须先获取访问密钥 ID 和秘密访问密钥,然后才能将Amazon CLI与 Amazon Keyspaces 结合使用。有关更多信息,请参阅如何为亚马逊Keyspaces 创建和配置Amazon证书

有关中 Amazon Keyspaces 所有可用命令的完整列表Amazon CLI,请参阅Amazon CLI命令参考

下载和配置 Amazon CLI

可在以下Amazon CLI网址获得http://www.amazonaws.cn/cli。它在 Windows、macOS 或 Linux 上运行。下载后Amazon CLI,可执行以下步骤安装和配置:

  1. 前往《Amazon Command Line Interface用户指南》

  2. 按照安装Amazon CLI和配置的说明进行操作Amazon CLI

使用 Amazon KeyspacesAmazon CLI

命令行格式包含 Amazon Keyspaces 操作名称,后跟该操作的参数。Amazon CLI 支持参数值的速记语法以及 JSON。以下 Amazon Keyspaces 示例使用Amazon CLI速记语法。有关更多信息,请参阅在Amazon CLI 中使用速记语法

以下命令创建名称为目录的密钥空间。

aws keyspaces create-keyspace --keyspace-name 'catalog'

该命令将返回输出中的资源 Amazon Resource (ARN)。

{ "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/catalog/" }

要确认密钥空间目录存在,您可以使用以下命令。

aws keyspaces get-keyspace --keyspace-name 'catalog'

命令的输出将返回以下值。

{ "keyspaceName": "catalog", "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/catalog/" }

以下命令创建一个名为 book_aw ards 的表。表的分区键由列yearaward和组成,聚类键由列组成,category并且rank两个聚类列都使用升序排序顺序。(为便于阅读,本部分中的长命令分行显示。)

aws keyspaces create-table --keyspace-name 'catalog' --table-name 'book_awards' --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int}, {name=category,type=text}, {name=author,type=text},{name=book_title,type=text},{name=publisher,type=text}], partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]'

此命令将生成以下输出。

{ "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/catalog/table/book_awards" }

要确认表的元数据和属性,可以使用以下命令。

aws keyspaces get-table --keyspace-name 'catalog' --table-name 'book_awards'

此命令将返回以下输出。

{ "keyspaceName": "catalog", "tableName": "book_awards", "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/catalog/table/book_awards", "creationTimestamp": 1645564368.628, "status": "ACTIVE", "schemaDefinition": { "allColumns": [ { "name": "year", "type": "int" }, { "name": "award", "type": "text" }, { "name": "category", "type": "text" }, { "name": "rank", "type": "int" }, { "name": "author", "type": "text" }, { "name": "book_title", "type": "text" }, { "name": "publisher", "type": "text" } ], "partitionKeys": [ { "name": "year" }, { "name": "award" } ], "clusteringKeys": [ { "name": "category", "orderBy": "ASC" }, { "name": "rank", "orderBy": "ASC" } ], "staticColumns": [] }, "capacitySpecification": { "throughputMode": "PAY_PER_REQUEST", "lastUpdateToPayPerRequestTimestamp": 1645564368.628 }, "encryptionSpecification": { "type": "AWS_OWNED_KMS_KEY" }, "pointInTimeRecovery": { "status": "DISABLED" }, "ttl": { "status": "ENABLED" }, "defaultTimeToLive": 0, "comment": { "message": "" } }

使用复杂架构创建表时,从 JSON 文件加载表的架构定义可能会很有帮助。下面是一个示例配置文件。从 schema_definition.zip 下载架构定义示例 JSON 文件并提取schema_definition.json,记下文件的路径。在此示例中,架构定义 JSON 文件位于当前目录中。有关不同的文件路径选项,请参阅如何从文件加载参数

aws keyspaces create-table --keyspace-name 'catalog' --table-name 'book_awards' --schema-definition 'file://schema_definition.json'

以下示例说明如何使用其他选项创建名为 myTable 的简单表。请注意,为了提高可读性,命令被分成单独的行。此命令演示如何创建表和:

  • 设置表的容量模式

  • 为表启用 Point-in-time 恢复

  • 将表的默认生存时间 (TTL) 值设置为一年

  • 为表格添加两个标签

aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --capacity-specification 'throughputMode=PROVISIONED,readCapacityUnits=5,writeCapacityUnits=5' --point-in-time-recovery 'status=ENABLED' --default-time-to-live '31536000' --tags 'key=env,value=test' 'key=dpt,value=sec'

此示例说明如何创建一个新表,该表使用客户管理的密钥进行加密并启用 TTL 以允许您为列和行设置过期日期。要运行此示例,您必须将客户托管Amazon KMS密钥的资源 ARN 替换为自己的密钥,并确保 Amazon Keyspaces 可以访问该密钥。

aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --encryption-specification 'type=CUSTOMER_MANAGED_KMS_KEY,kmsKeyIdentifier=arn:aws:kms:us-east-1:111222333444:key/11111111-2222-3333-4444-555555555555' --ttl 'status=ENABLED'