Usar a AWS CLI - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar a AWS CLI

Você pode usar a AWS Command Line Interface (AWS CLI) para controlar vários serviços da AWS via linha de comando e automatizá-los usando scripts. Com o Amazon Keyspaces, você pode usar o AWS CLI para operações de definição de linguagem de dados (DDL), como criar um espaço de chave ou uma tabela. Além disso, você pode usar serviços e ferramentas de infraestrutura como código (IaC), como AWS CloudFormation e o Terraform.

Antes de usar a AWS CLI com o Amazon Keyspaces, você deve obter um ID de chave de acesso e uma chave de acesso secreta. Para obter mais informações, consulte Como criar e configurar AWS credenciais para o Amazon Keyspaces.

Para obter uma listagem completa de todos os comandos disponíveis para o Amazon Keyspaces na AWS CLI, consulte a Referência de comandos da AWS CLI.

Download e configuração da AWS CLI

A AWS CLI está disponível em https://aws.amazon.com/cli. Ela é executada no Windows, macOS ou Linux. Depois de fazer download da AWS CLI, siga estas etapas para instalá-la e configurá-la:

Uso do AWS CLI com o Amazon Keyspaces

O formato de linha de comando consiste em um nome de operação do Amazon Keyspaces, seguido pelos parâmetros dessa operação. O AWS CLI suporta uma sintaxe abreviada para os valores de parâmetro, assim como JSON. Os seguintes exemplos do Amazon Keyspaces usam sintaxe AWS CLI abreviada. Para obter mais informações, consulte Uso da sintaxe abreviada com a CLI da AWS.

O comando a seguir cria um espaço de teclas com o catálogo de nomes.

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

O comando retorna o recurso nome do recurso da Amazon (ARN) na saída.

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

Para confirmar que o catálogo do espaço de chave existe, você pode usar o seguinte comando.

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

A saída do comando retorna os seguintes valores.

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

O comando a seguir cria uma tabela com o nome book_awards. A chave de partição da tabela consiste nas colunas year e award e a chave de agrupamento consiste nas colunas category de rank. As duas colunas de agrupamento usam a ordem de classificação crescente. (Para facilitar a leitura, comandos longos nesta seção são divididos em linhas separadas.)

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}]'

Este comando resulta na seguinte saída.

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

Para confirmar os metadados e as propriedades da tabela, você pode usar o seguinte comando:

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

Este comando retorna a seguinte saída.

{ "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": "" } }

Ao criar tabelas com esquemas complexos, pode ser útil carregar a definição do esquema da tabela a partir de um arquivo JSON. A seguir, temos um exemplo. Faça o download do arquivo JSON de exemplo de definição de esquema em schema_definition.zip e extraia schema_definition.json, anotando o caminho para o arquivo. Neste exemplo, o arquivo JSON de definição do esquema está localizado no diretório atual. Para diferentes opções de caminho de arquivo, consulte Como carregar parâmetros de um arquivo.

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

Os exemplos a seguir mostram como criar uma tabela simples com o nome myTable com opções adicionais. Observe que os comandos estão divididos em linhas separadas para melhorar a legibilidade. Esse comando mostra como criar uma tabela e:

  • definir o modo de capacidade da tabela

  • ativar a recuperação pontual para a tabela

  • definir a vida útil (TTL) padrão para a tabela como um ano

  • adicionar duas tags para a tabela

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'

Este exemplo mostra como criar uma nova tabela que usa uma chave gerenciada pelo cliente para criptografia e tem o TTL ativado para permitir que você defina datas de expiração para colunas e linhas. Para executar essa amostra, você deve substituir o ARN do recurso da chave AWS KMS gerenciada pelo cliente pela sua própria chave e garantir que o Amazon Keyspaces tenha acesso a ela.

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'