本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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
-
按照安装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 的表。表的分区键由列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 文件加载表的架构定义可能会很有帮助。下面是一个示例配置文件。从 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'