本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon CLI
您可以使用 Amazon Command Line Interface (Amazon CLI) 从命令行管理多个 Amazon 服务并通过脚本自动执行这些服务。使用亚马逊 Keyspaces,您可以使用Amazon CLI用于数据定义语言 (DDDDDDL) 操作,如创建表。此外,您可以将基础设施用作代码 (iAC) 服务和工具,例如Amazon CloudFormation和 Terraform。
在使用Amazon CLI使用 Amazon Keyspaces,您必须获取访问密钥 ID 和秘密访问密钥。有关更多信息,请参阅 如何创建和配置AmazonAmazon Keyspaces 凭证。
有关对 Amazon Keyspaces 可用的所有命令的完整列表,请参阅Amazon CLI,请参阅Amazon CLI命令参考
下载和配置 Amazon CLI
这些区域有:Amazon CLI在以下位置可用http://www.amazonaws.cn/cli
使用Amazon CLI使用 Amazon Keyspaces
命令行格式包含 Amazon Keyspaces 操作名称,后跟该操作的参数。Amazon CLI 支持参数值的速记语法以及 JSON。以下亚马逊 Keyspaces 示例使用Amazon CLI速记语法。有关更多信息,请参阅 。将速记语法与 结合使用AmazonCLI.
以下命令创建名称的键空间:目录.
aws keyspaces create-keyspace --keyspace-name 'catalog'
该命令将返回输出中的资源 Amazon 资源名称 (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_奖项/奖项. 表的分区键包含以下列。year和award群集密钥由列组成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 文件加载表的架构定义可能会有所帮助。下面是一个示例配置文件。从下载模式定义示例 JSON 文件schema_definition.zip然后提取schema_definition.json,记下文件的路径。在此示例中,架构定义 JSON 文件位于当前目录中。有关不同文件路径选项,请参阅如何从文件加载参数.
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'book_awards' --schema-definition 'file://schema_definition.json'
以下几个示例介绍如何创建名称的简单表。myTable还有其他选项。请注意,这些命令分为单独的行以提高可读性。此命令介绍如何创建表并执行以下操作:
设置表的容量模式
为表启用时间点恢复
将表的默认生存时间 (TTL) 值设置为 1 年
为表格添加两个标签
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 以允许您为列和行设置过期日期。要运行此示例,您必须为客户管理的资源 ARN 替换资源 ARNAmazon KMS使用您自己的密钥密钥密钥,并确保亚马逊 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'