Amazon Keyspaces (for Apache Cassandra)

287
Amazon Keyspaces (for Apache Cassandra) Guia do desenvolvedor

Transcript of Amazon Keyspaces (for Apache Cassandra)

Amazon Keyspaces (forApache Cassandra)

Guia do desenvolvedor

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Amazon Keyspaces (for Apache Cassandra): Guia do desenvolvedorCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

As marcas comerciais e imagens comerciais da Amazon não podem ser usadas no contexto de nenhum produtoou serviço que não seja da Amazon, nem de qualquer maneira que possa gerar confusão entre os clientes ou quedeprecie ou desprestigie a Amazon. Todas as outras marcas comerciais que não pertencem à Amazon pertencem aseus respectivos proprietários, que podem ou não ser afiliados, patrocinados pela Amazon ou ter conexão com ela.

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Table of ContentsO que é o Amazon Keyspaces? ........................................................................................................... 1

Como funciona ........................................................................................................................... 1Arquitetura de alto nível ...................................................................................................... 2Modelo de dados Cassandra ................................................................................................ 3Acessando o Amazon Keyspaces ......................................................................................... 4

Casos de uso ............................................................................................................................ 5O que é CQL? ........................................................................................................................... 5

Compare o Amazon Keyspaces com Cassandra ..................................................................................... 6Diferenças funcionais com o Apache Cassandra ............................................................................. 6

APIs, operações e tipos de dados do Apache Cassandra ......................................................... 7Criação e exclusão assíncronas de espaços de chave e tabelas ................................................ 7Autenticação e autorização .................................................................................................. 7Lote .................................................................................................................................. 7Configuração do cluster ....................................................................................................... 7Ajuste de throughput de consulta CQL .................................................................................. 7Strings vazia ...................................................................................................................... 8Transações leves ............................................................................................................... 8Balanceamento de carga ..................................................................................................... 8Paginação ......................................................................................................................... 8Particionadores .................................................................................................................. 8Instruções preparadas ......................................................................................................... 8Excluir intervalo .................................................................................................................. 8Tabelas do sistema ............................................................................................................. 9

APIs, operações, funções e tipos de dados do Cassandra compatíveis ............................................... 9Suporte à API Cassandra .................................................................................................... 9Suporte à API do plano de controle do Cassandra ................................................................. 10Suporte à API do plano de dados do Cassandra ................................................................... 11Suporte à função Cassandra .............................................................................................. 11Suporte a tipos de dados Cassandra ................................................................................... 12

Níveis de consistência compatíveis do Cassandra ......................................................................... 13Níveis de consistência de gravação ..................................................................................... 13Níveis de consistência de leitura ......................................................................................... 13Níveis de consistência sem suporte ..................................................................................... 13

Acessar o Amazon Keyspaces ............................................................................................................ 15Como se cadastrar no AWS ....................................................................................................... 15Configurar o AWS Identity and Access Management ...................................................................... 15Usar o console ......................................................................................................................... 16Conexão de forma programática ................................................................................................. 16

Como criar credenciais ...................................................................................................... 17Service endpoints (Endpoints de serviço) ............................................................................. 24Usar o cqlsh .................................................................................................................. 26Usar a AWS CLI ............................................................................................................... 29Uso da API ...................................................................................................................... 32Usando um driver cliente Cassandra ................................................................................... 33

Começar a usar ................................................................................................................................ 52Pré-requisitos ........................................................................................................................... 52Etapa 1: Criar um espaço de chave e uma tabela ......................................................................... 53

Criando um espaço de chave ............................................................................................. 53Criar uma tabela ............................................................................................................... 54

Etapa 2: Operações de CRUD .................................................................................................... 57Criar ............................................................................................................................... 57Read ............................................................................................................................... 59Atualização ...................................................................................................................... 61Excluir ............................................................................................................................. 61

iii

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 3: Limpeza (opcional) ....................................................................................................... 62Exclusão de uma tabela .................................................................................................... 63Excluindo um espaço de chave .......................................................................................... 63

Migração para o Amazon Keyspaces ................................................................................................... 65Carregamento de dados usando o cqlsh ...................................................................................... 66

Pré-requisitos ................................................................................................................... 66Etapa 1: Criar origem e destino .......................................................................................... 66Etapa 2: Preparar os dados ............................................................................................... 67Etapa 3: Definir a capacidade de transferência para a tabela ................................................... 69Etapa 4: Configurecqlsh COPY FROMconfigurações ............................................................. 70Etapa 5: Execute acqlsh COPY FROMordem ...................................................................... 71Solução de problemas ....................................................................................................... 72

Carregamento de dados usando o DSBulk ................................................................................... 74Pré-requisitos ................................................................................................................... 74Etapa 1: Criar origem e destino .......................................................................................... 76Etapa 2: Preparar os dados ............................................................................................... 77Etapa 3: Definir a capacidade de transferência para a tabela ................................................... 79Etapa 4: ConfigureDSBulkconfigurações .............................................................................. 80Etapa 5: Execute o DSBulkloadordem ................................................................................ 81

Solução de problemas ....................................................................................................................... 83Conexões ................................................................................................................................ 83

Erros ao conectar-se a um endpoint do Amazon Keyspaces .................................................... 83Gerenciamento de capacidade .................................................................................................... 89

Erros de capacidade sem servidor ...................................................................................... 89linguagem de definição de dados ................................................................................................ 93

Erros de linguagem de definição de .................................................................................... 93Ferramentas e exemplos de código ..................................................................................................... 97

Bibliotecas e exemplos .............................................................................................................. 97Kit de ferramentas do desenvolvedor do Amazon Keyspaces (for Apache Cassandra) .................. 97Exemplos do Amazon Keyspaces (for Apache Cassandra) ...................................................... 97AWSSignature versão 4 (SigV4) plug-ins de autenticação ....................................................... 97

Repos de ferramentas de desenvolvedor e amostra destacados ....................................................... 98AWS CloudFormationModelo para criar o painel do Amazon CloudWatch para as métricas doAmazon Keyspaces (para Apache Cassandra) ...................................................................... 98Uso do Amazon Keyspaces (para Apache Cassandra) comAWS Lambda .................................. 98Uso do Amazon Keyspaces (para Apache Cassandra) com o Spring ........................................ 98Uso do Amazon Keyspaces (para Apache Cassandra) com o Scala .......................................... 98Linguagem de consulta do Amazon Keyspaces (for Apache Cassandra) Cassandra (CQL)paraAWS CloudFormationconversor ..................................................................................... 99Ajudantes do Amazon Keyspaces (for Apache Cassandra) para o driver Apache Cassandra paraJava ................................................................................................................................ 99Demonstração de compactação rápida do Amazon Keyspaces (for Apache Cassandra) ............... 99Demonstração do Amazon Keyspaces (para Apache Cassandra) e do Amazon S3 ...................... 99

Gerenciamento de recursos sem servidor ........................................................................................... 100Armazenamento ...................................................................................................................... 100Modo de capacidade de leitura/gravação .................................................................................... 100

Modo de capacidade sob demanda ................................................................................... 101Modo de capacidade de throughput provisionado ................................................................. 103Gerenciando e visualizando modos de capacidade ............................................................... 104Considerações ao mudar os modos de capacidade .............................................................. 105

Gerenciamento da capacidade de throughput com o Application Auto Scaling ................................... 105Como o escalonamento automático do Amazon Keyspaces funciona ....................................... 105Observações de uso ........................................................................................................ 107Usar o console ............................................................................................................... 107Gerenciar de forma programática ...................................................................................... 110

Capacidade de intermitência ..................................................................................................... 116Trabalhando com o Amazon Keyspaces ............................................................................................. 117

iv

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Trabalhando com espaços de chave .......................................................................................... 117Criar keyspaces .............................................................................................................. 117

Trabalhar com tabelas ............................................................................................................. 118Criar tabelas ................................................................................................................... 118Colunas estáticas ............................................................................................................ 118

Trabalhar com linhas ............................................................................................................... 121Calculando o tamanho da linha ......................................................................................... 121

Trabalhar com consultas .......................................................................................................... 123Resultados do pedido ...................................................................................................... 123Resultados de paginação ................................................................................................. 124

Trabalhar com particionadores .................................................................................................. 124Modelagem de dados ...................................................................................................................... 126

Design de chave de partição .................................................................................................... 126Estilhaçamento ............................................................................................................... 127

NoSQL Workbench .......................................................................................................................... 129Baixar .................................................................................................................................... 129Começar a usar ...................................................................................................................... 130Modelador de dados ................................................................................................................ 131

Criando um modelo de dados ........................................................................................... 131Editar um modelo de dados .............................................................................................. 133

Visualizador de dados .............................................................................................................. 134Visualizar um modelo de dados ........................................................................................ 135Exibição agregada ........................................................................................................... 136

Confirmar um modelo de dados ................................................................................................ 137Antes de começar ........................................................................................................... 138Conectar com credenciais específicas do serviço ................................................................. 139Conectar com credenciais do IAM ..................................................................................... 140Usar uma conexão salva .................................................................................................. 142Apache Cassandra .......................................................................................................... 143

Modelos de dados de exemplo ................................................................................................. 144Modelo de dados de funcionários ...................................................................................... 145Modelo de dados de transações com cartão de crédito ......................................................... 145Modelo de dados de operações de avião ............................................................................ 145

Histórico de versões ................................................................................................................ 146Integração com o Apache Spark ....................................................................................................... 147

Pré-requisitos ......................................................................................................................... 147Etapa 1: Configurar o Amazon Keyspaces .................................................................................. 148Etapa 2: Configurar o Apache Cassandra Spark Connector ........................................................... 149Etapa 3: Criar o arquivo de configuração do aplicativo .................................................................. 150

Connect com a autenticação Sigv4 .................................................................................... 150Connect com credenciais específicas do serviço .................................................................. 151Connect com uma taxa fixa .............................................................................................. 152

Etapa 4: Preparar os dados de origem e a tabela de destino ......................................................... 152Etapa 5: Gravar e ler dados do Amazon Keyspaces ..................................................................... 153Solução de problemas ............................................................................................................. 156

Erros e avisos comuns .................................................................................................... 156Recuperação point-in-time ................................................................................................................ 157

Como funciona ....................................................................................................................... 157Habilitar o PITR .............................................................................................................. 158Restaurar permissões ...................................................................................................... 160Backups contínuos .......................................................................................................... 161Restaurar configurações da .............................................................................................. 162PITR e tabelas criptografadas ........................................................................................... 163Tempo de restauração da tabela ....................................................................................... 163Integração com serviços da AWS ...................................................................................... 164

Restaurando uma tabela para um ponto no tempo ....................................................................... 164Antes de começar ........................................................................................................... 164

v

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela para um ponto no tempo (console) .................................................. 165Restaurando uma tabela para um ponto no tempo com aAWS CLI ......................................... 165Restaurando uma tabela para um ponto no tempo com o CQL ............................................... 167Restaurando uma tabela excluída com oAWS CLI ................................................................ 169Restaurando uma tabela excluída com CQL ........................................................................ 169

Dados expirados com a vida útil ....................................................................................................... 171Como funciona ....................................................................................................................... 171

Valor TTL padrão ............................................................................................................ 172Valores TTL personalizados .............................................................................................. 172Habilitação do TTL .......................................................................................................... 173Integração com serviços da AWS ...................................................................................... 173

Como usar o tempo de vida ..................................................................................................... 173Para criar uma nova tabela com as configurações de tempo de vida (TTL) padrão ativadas(console) ........................................................................................................................ 174Para atualizar as configurações de tempo de vida (TTL) padrão em tabelas existentes (console) .. 174Para desabilitar as configurações de tempo de vida (TTL) padrão em tabelas existentes(console) ........................................................................................................................ 175Para criar uma nova tabela com configurações de tempo de vida (TTL) padrão habilitadasusando o CQL ................................................................................................................ 175Para usarALTER TABLEPara editar as configurações de tempo de vida (TTL) padrão usando oCQL .............................................................................................................................. 175Como habilitar o tempo de vida (TTL) em novas tabelas usando propriedades personalizadas ..... 176Como habilitar o tempo de vida (TTL) em tabelas existentes usando propriedadespersonalizadas ................................................................................................................ 176Para usarINSERTPara editar configurações de tempo de vida (TTL) personalizadas usando oCQL .............................................................................................................................. 176Para usarUPDATEPara editar configurações de tempo de vida (TTL) personalizadas usando oCQL .............................................................................................................................. 176

Recursos do AWS CloudFormation .................................................................................................... 178Amazon Keyspaces eAWS CloudFormationmodelos ..................................................................... 178Saiba mais sobre o AWS CloudFormation .................................................................................. 178

Marcar recursos do ......................................................................................................................... 179Restrições de marcação ........................................................................................................... 179Operações de marcação .......................................................................................................... 180

Adição de tags a Keyspaces e tabelas novos ou existentes usando o console do ...................... 180Adição de tags a Keyspaces e tabelas novas ou existentes usando aAWSCLI .......................... 181Adição de tags a espaços de chaves e tabelas novos ou existentes usando o CQL .................... 182

Relatórios de alocação de custos para o Amazon Keyspaces ........................................................ 183Segurança ...................................................................................................................................... 185

Proteção de dados .................................................................................................................. 185Criptografia em repouso ................................................................................................... 186Criptografia em trânsito .................................................................................................... 200Privacidade do tráfego entre redes .................................................................................... 200

AWS Identity and Access Management ...................................................................................... 201Público .......................................................................................................................... 202Autenticar com identidades ............................................................................................... 202Gerenciamento do acesso usando políticas ......................................................................... 204Como o Amazon Keyspaces funciona com o IAM ................................................................ 206Exemplos de políticas baseadas em identidade ................................................................... 209Políticas gerenciadas pela AWS ........................................................................................ 216Solução de problemas ..................................................................................................... 220Uso de funções vinculadas a serviço ................................................................................. 223

Registro em log e monitoramento .............................................................................................. 224Ferramentas de monitoramento ......................................................................................... 225Monitoramento com CloudWatch ....................................................................................... 226Registro de chamadas de API do Amazon Keyspaces comAWS CloudTrail .............................. 239

Validação de conformidade ....................................................................................................... 244

vi

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Resiliência .............................................................................................................................. 245Segurança da infraestrutura ...................................................................................................... 245

Usar VPC endpoints da interface do .................................................................................. 246Análise de configuração e vulnerabilidade para o Amazon Keyspaces ............................................. 250Práticas recomendadas de segurança ........................................................................................ 250

Práticas recomendadas de segurança preventiva ................................................................. 250Práticas recomendadas de segurança de detecção .............................................................. 252

Referência da linguagem CQL .......................................................................................................... 254Elementos de linguagem .......................................................................................................... 254

Identificadores ................................................................................................................ 254Constantes ..................................................................................................................... 254Termos .......................................................................................................................... 255Tipos de dados ............................................................................................................... 255Codificação JSON dos tipos de dados Amazon Keyspaces .................................................... 257

Instruções DDL ....................................................................................................................... 259Keyspaces ..................................................................................................................... 259Tabelas ......................................................................................................................... 261

Instruções DML ....................................................................................................................... 266SELECT ........................................................................................................................ 267INSERT ......................................................................................................................... 268UPDATE ........................................................................................................................ 269DELETE ........................................................................................................................ 269

Funções incorporadas .............................................................................................................. 270Funções escalares .......................................................................................................... 270

Cotas ............................................................................................................................................ 272Cotas de serviço do Amazon Keyspaces .................................................................................... 272Aumentar ou diminuir a taxa de transferência (para tabelas provisionadas) ....................................... 274

Aumentar a taxa de transferência provisionada .................................................................... 274Diminuição do throughput provisionado .............................................................................. 274

Criptografia do Amazon Keyspaces em repouso .......................................................................... 275Histórico do documento .................................................................................................................... 276................................................................................................................................................. cclxxx

vii

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como funciona

O que é o Amazon Keyspaces (paraApache Cassandra)?

O Amazon Keyspaces (for Apache Cassandra) é um serviço de banco de dados compatível com ApacheCassandra, escalável, altamente disponível e gerenciado. Com o Amazon Keyspaces, você não precisaprovisionar, corrigir ou gerenciar servidores e não precisa instalar, manter ou operar software.

O Amazon Keyspaces é sem servidor, portanto, você paga apenas pelos recursos usados e o serviçodimensiona automaticamente as tabelas para cima e para baixo em resposta ao tráfego de aplicativos.Você pode criar aplicativos que atendem a milhares de solicitações por segundo com taxa de transferênciae armazenamento praticamente ilimitados.

Note

O Apache Cassandra é um armazenamento de dados de coluna larga de código aberto projetadopara lidar com grandes quantidades de dados. Para obter mais informações, consulteApacheCassandra.

O Amazon Keyspaces facilita a migração, a execução e a escala de cargas de trabalho do CassandranoNuvem AWS. Com apenas alguns cliques noAWSManagement Console ou algumas linhas de código,você pode criar espaços de chave e tabelas no Amazon Keyspaces, sem implantar nenhuma infraestruturaou instalar software.

Com o Amazon Keyspaces, você pode executar suas cargas de trabalho existentes do CassandraemAWSusando o mesmo código de aplicativo Cassandra e ferramentas de desenvolvedor que você usahoje.

Para obter uma lista de disponíveisRegiões da AWSe endpoints, consulteEndpoints de serviço paraAmazon Keyspaces.

Recomendamos que você comece lendo as seguintes seções:

Tópicos• Amazon Keyspaces: Como funciona (p. 1)• Casos de uso do Amazon Keyspaces (p. 5)• O que é Cassandra Query Language (CQL)? (p. 5)

Amazon Keyspaces: Como funcionaO Amazon Keyspaces remove a sobrecarga administrativa do gerenciamento do Cassandra. Paraentender o porquê, é útil começar com a arquitetura Cassandra e compará-la com o Amazon Keyspaces.

Tópicos• Arquitetura de alto nível: Apache Cassandra vs. Amazon Keyspaces (p. 2)• Modelo de dados Cassandra (p. 3)• Acessando o Amazon Keyspaces a partir de um aplicativo (p. 4)

1

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Arquitetura de alto nível

Arquitetura de alto nível: Apache Cassandra vs.Amazon KeyspacesO Apache Cassandra tradicional é implantado em um cluster composto por um ou mais nós. Você éresponsável por gerenciar cada nó e adicionar e remover nós à medida que o cluster é dimensionado.

Um programa cliente acessa Cassandra conectando-se a um dos nós e emitindo instruções CQL (CQL) daCassandra Query Language. CQLé semelhante ao SQL, a linguagem popular usada em bancos de dadosrelacionais. Mesmo que o Cassandra não seja um banco de dados relacional, o CQL fornece uma interfacefamiliar para consultar e manipular dados em Cassandra.

O diagrama a seguir mostra um cluster Apache Cassandra simples, composto por quatro nós.

Uma implantação de produção do Cassandra pode consistir em centenas de nós, sendo executadosem centenas de computadores físicos em um ou mais data centers físicos. Isso pode causar um fardooperacional para os desenvolvedores de aplicativos que precisam provisionar, corrigir e gerenciarservidores, além de instalar, manter e operar software.

Com o Amazon Keyspaces (para Apache Cassandra), você não precisa provisionar, corrigir ou gerenciarservidores, para que você possa se concentrar na criação de aplicativos melhores. O Amazon Keyspacesoferece dois modos de capacidade de throughput para leituras e gravações: sob demanda e provisionado.Você pode escolher o modo de capacidade de throughput da tabela para otimizar o preço de leituras egravações com base na previsibilidade e na variabilidade de sua carga de trabalho.

Com o modo sob demanda, você paga apenas pelas leituras e gravações que o aplicativo realmenteexecuta. Você não precisa especificar a capacidade de transferência da tabela com antecedência. OAmazon Keyspaces acomoda o tráfego de aplicativos quase instantaneamente à medida que ele aumentaou diminui, tornando-o uma boa opção para aplicativos com tráfego imprevisível.

O modo de capacidade provisionada ajuda a otimizar o preço da taxa de transferência se você tiver tráfegode aplicativos previsível e puder prever os requisitos de capacidade da tabela com antecedência. Com omodo de capacidade provisionada, você especifica o número de leituras e gravações por segundo queespera que o aplicativo execute. Você pode aumentar e diminuir a capacidade provisionada para suatabela automaticamente ativandoEscalabilidade automática.

2

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Modelo de dados Cassandra

Você pode alterar o modo de capacidade da sua tabela uma vez por dia à medida que aprende maissobre os padrões de tráfego da sua carga de trabalho, ou se você espera ter uma grande intermitência detráfego, como, por exemplo, de um grande evento que você prevê que gerará muito tráfego de tabela. Paraobter mais informações sobre provisionamento de capacidade de leitura e gravação, consultethe sectioncalled “Modo de capacidade de leitura/gravação” (p. 100).

O Amazon Keyspaces (for Apache Cassandra) armazena três cópias dos dados em váriasZonas dedisponibilidadePara durabilidade e alta disponibilidade. Além disso, você aproveita um datacenter euma arquitetura de rede criados para atender aos requisitos das empresas com as maiores exigênciasde segurança. A criptografia em repouso é ativada automaticamente quando você cria uma novatabela do Amazon Keyspaces e todas as conexões do cliente exigem Transport Layer Security (TLS).adicionaisAWSOs recursos de segurança incluemmonitoramento,AWS Identity and Access Management,eEndpoints da nuvem privada virtual (VPC). Para obter uma visão geral de todos os recursos de segurançadisponíveis, consulteSegurança (p. 185).

O diagrama a seguir mostra a arquitetura do Amazon Keyspaces.

Um programa cliente acessa o Amazon Keyspaces conectando-se a um endpoint predeterminado (nomedo host e número da porta) e emitindo instruções CQL. Para obter uma lista de endpoints disponíveis,consultethe section called “Service endpoints (Endpoints de serviço)” (p. 24).

Modelo de dados CassandraA forma como você modela seus dados para seu business case é fundamental para alcançar odesempenho ideal do Amazon Keyspaces. Um modelo de dados ruim pode prejudicar significativamente odesempenho.

Mesmo que o CQL pareça semelhante ao SQL, os back-ends do Cassandra e dos bancos de dadosrelacionais são muito diferentes e devem ser abordados de forma diferente. A seguir estão alguns dosproblemas mais significativos a considerar:

Storage (Armazenamento)

Você pode visualizar seus dados do Cassandra em tabelas, com cada linha representando um registroe cada coluna um campo dentro desse registro.

Design de tabelas: Consultar primeiro

Não háJOINs em CQL. Portanto, você deve projetar suas tabelas com a forma de seus dados e comovocê precisa acessá-los para seus casos de uso comercial. Isso pode resultar em desnormalização

3

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorAcessando o Amazon Keyspaces

com dados duplicados. Você deve projetar cada uma de suas tabelas especificamente para umpadrão de acesso específico.

Partições

Seus dados são armazenados em partições no disco. O número de partições em que seus dados sãoarmazenados e como eles são distribuídos entre as partições é determinado pelochave de partição. Aforma como você define sua chave de partição pode ter um impacto significativo no desempenho desuas consultas.

Chave primária

Em Cassandra, os dados são armazenados como um par de chave-valor. Para esse fim, toda tabelaCassandra deve ter uma chave primária, que é a chave para cada linha na tabela. A chave primária éa composição de uma chave de partição necessária e colunas de agrupamento opcionais. Os dadosque compõem a chave primária devem ser exclusivos em todos os registros em uma tabela.• Chave de partição— A parte da chave de partição da chave primária é necessária e determina em

qual partição do cluster os dados são armazenados. A chave de partição pode ser uma única colunaou pode ser um valor composto por duas ou mais colunas. Você usaria uma chave de partiçãocomposta se uma única chave de partição de coluna resultasse em uma única partição ou poucaspartições tendo a maioria dos dados e, portanto, suportando a maioria das operações de E/S dedisco.

• Coluna de agrupamento— A parte opcional da coluna de clustering da chave primária determinacomo os dados são agrupados e classificados em cada partição. Se você incluir uma coluna deagrupamento na chave primária, a coluna de agrupamento poderá ter uma ou mais colunas. Sehouver várias colunas na coluna de agrupamento, a ordem de classificação será determinada pelaordem em que as colunas estão listadas na coluna de agrupamento, da esquerda para a direita.

Acessando o Amazon Keyspaces a partir de umaplicativoO Amazon Keyspaces (para Apache Cassandra) implementa a API Apache Cassandra Query Language(CQL), para que você possa usar os drivers CQL e Cassandra que você já usa. Atualizar seu aplicativoé tão fácil quanto atualizar seu driver Cassandra oucqlshconfiguração para apontar para o endpoint doserviço Amazon Keyspaces.

Note

Para ajudá-lo a começar, você pode encontrar exemplos de código de ponta a ponta da conexãocom o Amazon Keyspaces usando vários drivers de cliente Cassandra no repositório de exemplode código do Amazon Keyspaces emGitHub.

Considere o seguinte programa Python, que se conecta a um cluster Cassandra e consulta uma tabela.

from cassandra.cluster import Cluster#TLS/SSL configuration goes here

ksp = 'MyKeyspace'tbl = 'WeatherData'

cluster = Cluster(['NNN.NNN.NNN.NNN'], port=NNNN)session = cluster.connect(ksp)

session.execute('USE ' + ksp)

rows = session.execute('SELECT * FROM ' + tbl)for row in rows: print(row)

4

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Casos de uso

Para executar o mesmo programa no Amazon Keyspaces, você precisa:

• Adicionar o endpoint e a porta do cluster: Por exemplo, o host pode ser substituído por um endpoint deserviço, comocassandra.us-east-2.amazonaws.comE o número da porta com:9142.

• Adicionar a configuração do TLS/SSL: Para obter mais informações sobre como adicionar aconfiguração TLS/SSL para se conectar ao Amazon Keyspaces usando um driver Python clienteCassandra, consulteUsando um driver cliente Cassandra Python para acessar o Amazon Keyspacesprogramaticamente (p. 41).

Casos de uso do Amazon KeyspacesA seguir estão apenas algumas das maneiras como você pode usar o Amazon Keyspaces:

• Crie aplicativos que exigem baixa latência— processe dados em altas velocidades para aplicaçõesque exigem latência de um único dígito milissegundo, como manutenção de equipamentos industriais,monitoramento comercial, gerenciamento de frota e otimização de rotas.

• Crie aplicativos usando tecnologias de código aberto— Crie aplicativos emAWSUsando APIs e driversdo Cassandra de código aberto disponíveis para uma ampla variedade de linguagens de programação,como Java, Python, Ruby, Microsoft .NET, Node.js, PHP, C++, Perl e Go. Para obter exemplos decódigo, consulte Ferramentas e exemplos de código (p. 97).

• Mova suas cargas de trabalho Cassandra para a nuvem— Gerenciar mesas Cassandra você mesmoé demorado e caro. Com o Amazon Keyspaces, você pode configurar, proteger e dimensionar tabelasCassandra noNuvem AWSsem gerenciar a infraestrutura. Para obter mais informações, consulteGerenciamento de recursos sem servidor (p. 100).

O que é Cassandra Query Language (CQL)?Linguagem de consulta Cassandra(CQL) é a principal linguagem para se comunicar com o ApacheCassandra. O Amazon Keyspaces (for Apache Cassandra) é compatível com a API CQL 3.x (compatívelcom versões anteriores com a versão 2.x).

Para executar consultas CQL, você pode executar um dos seguintes procedimentos:

• Usar o editor CQL naAWS Management Console.• Executá-los nocqlshcliente.• Executá-los programaticamente usando um driver cliente Cassandra licenciado do Apache 2.0.

Para obter mais informações sobre como usar esses métodos para acessar o Amazon Keyspaces,consulteAcessando o Amazon Keyspaces (para Apache Cassandra) (p. 15).

Para obter mais informações sobre o CQL, consulteReferência de linguagem CQL para o AmazonKeyspaces (para Apache Cassandra) (p. 254).

5

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Diferenças funcionais com o Apache Cassandra

Como o Amazon Keyspaces (forApache Cassandra

O Amazon Keyspaces (para Apache Cassandra) aparece como um cluster Apache Cassandra 3.11.2de nove nós para clientes e oferece suporte a drivers e clientes compatíveis com o Apache Cassandra3.11.2. O Amazon Keyspaces oferece suporte à API 3.x Cassandra Query Language (CQL) e é compatívelcom versões anteriores com a versão 2.x. Com o Amazon Keyspaces, você pode executar suas cargasde trabalho do Cassandra emAWSusando o mesmo código de aplicativo Cassandra, drivers licenciadosApache 2.0 e ferramentas que você usa hoje.

O Amazon Keyspaces oferece suporte a todas as operações de plano de dados Cassandra comumenteusadas, como criar espaços de chave e tabelas, ler dados e gravar dados. O Amazon Keyspaces é semservidor, portanto, você não precisa provisionar, corrigir ou gerenciar servidores. Você também não precisainstalar, manter ou operar software. Como resultado, as operações da API do plano de controle Cassandrapara gerenciar configurações de cluster e nó não são necessárias para usar o Amazon Keyspaces.

Configurações como fator de replicação e nível de consistência são configuradas automaticamente parafornecer alta disponibilidade, durabilidade e desempenho de um único dígito milissegundo.

Tópicos• Diferenças funcionais: Amazon Keyspaces vs. Apache Cassandra (p. 6)• APIs, operações, funções e tipos de dados do Cassandra compatíveis no Amazon

Keyspaces (p. 9)• Níveis de consistência do Apache Cassandra compatíveis no Amazon Keyspaces (p. 13)

Diferenças funcionais: Amazon Keyspaces vs.Apache Cassandra

Veja a seguir as diferenças funcionais entre o Amazon Keyspaces e o Apache Cassandra.

Tópicos• APIs, operações e tipos de dados do Apache Cassandra (p. 7)• Criação e exclusão assíncronas de espaços de chave e tabelas (p. 7)• Autenticação e autorização (p. 7)• Lote (p. 7)• Configuração do cluster (p. 7)• Ajuste de throughput de consulta CQL (p. 7)• Strings vazia (p. 8)• Transações leves (p. 8)• Balanceamento de carga (p. 8)• Paginação (p. 8)• Particionadores (p. 8)• Instruções preparadas (p. 8)• Excluir intervalo (p. 8)• Tabelas do sistema (p. 9)

6

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

APIs, operações e tipos de dados do Apache Cassandra

APIs, operações e tipos de dados do ApacheCassandraO Amazon Keyspaces oferece suporte a todas as operações de plano de dados Cassandra comumenteusadas, como criar espaços de chave e tabelas, ler dados e gravar dados. Para ver o que é compatívelno momento, consulte APIs, operações, funções e tipos de dados do Cassandra compatíveis no AmazonKeyspaces (p. 9).

Criação e exclusão assíncronas de espaços de chavee tabelasO Amazon Keyspaces executa operações de linguagem de definição de dados (DDL), como criare excluir espaços de chave e tabelas, de forma assíncrona. Para saber como monitorar o status decriação dos recursos, consultethe section called “Criar keyspaces” (p. 117)ethe section called “Criartabelas” (p. 118). Para obter uma lista de instruções DDL na referência da linguagem CQL, consultethesection called “Instruções DDL” (p. 259).

Autenticação e autorizaçãoUsos do Amazon Keyspaces (para Apache Cassandra)AWS Identity and Access Management(IAM)para autenticação e autorização do usuário, e suporta as políticas de autorização equivalentes comoApache Cassandra. Como tal, o Amazon Keyspaces não oferece suporte a comandos de configuração desegurança do Apache Cassandra.

LoteO Amazon Keyspaces oferece suporte a comandos em lote não registrados com até 30 comandos nolote. Somente incondicionalINSERT,UPDATE, ouDELETEcomandos são permitidos em um lote. Lotesregistrados não são suportados.

Configuração do clusterO Amazon Keyspaces é sem servidor, portanto, não há clusters, hosts ou máquinas virtuais Java (JVMs)para configurar. As configurações do Cassandra para compactação, compactação, armazenamento emcache, coleta de lixo e filtragem de bloom não são aplicáveis ao Amazon Keyspaces e são ignoradas seespecificado.

Ajuste de throughput de consulta CQLO Amazon Keyspaces oferece suporte a até 3.000 consultas CQL por conexão TCP por segundo, mas nãohá limite para o número de conexões que um driver pode estabelecer.

A maioria dos drivers Cassandra de código aberto estabelece um pool de conexões com Cassandra econsultas de balanceamento de carga sobre esse pool de conexões. O Amazon Keyspaces expõe 9endereços IP de pares a drivers, e o comportamento padrão da maioria dos drivers é estabelecer umaúnica conexão com cada endereço IP de peer. Portanto, a taxa de transferência máxima de consulta CQLde um driver usando as configurações padrão será de 27.000 consultas CQL por segundo.

Para aumentar esse número, recomendamos aumentar o número de conexões por endereço IP que seudriver está mantendo em seu pool de conexões. Por exemplo, definir o máximo de conexões por endereçoIP como 2 dobrará a taxa de transferência máxima do driver para 54.000 consultas CQL por segundo.

7

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Strings vazia

Strings vaziaO Amazon Keyspaces oferece suporte a strings vazias e valores de blob. No entanto, strings e blobsvazios não são suportados como valores de coluna de agrupamento.

Transações levesO Amazon Keyspaces (for Apache Cassandra) oferece suporte completo para comparar e definir afuncionalidade noINSERT,UPDATE, eDELETEComandos, que são conhecidos comoTransaçõesleves(LWTs) em Apache Cassandra. Como uma oferta sem servidor, o Amazon Keyspaces (para ApacheCassandra) oferece desempenho consistente em qualquer escala, inclusive para transações leves. Com oAmazon Keyspaces, não há penalidade de desempenho pelo uso de transações leves.

Balanceamento de cargaOsystem.peersentradas de tabela correspondem aos balanceadores de carga do Amazon Keyspaces.Para obter melhores resultados, recomendamos usar uma política de balanceamento de carga round robine ajustar o número de conexões por IP para atender às necessidades da sua aplicação.

PaginaçãoO Amazon Keyspaces pagina os resultados com base no número de linhas lidas para processar umasolicitação, não no número de linhas retornadas no conjunto de resultados. Como resultado, algumaspáginas podem conter menos linhas do que você especifica em TAMANHO DA PÁGINA para consultasfiltradas. Além disso, o Amazon Keyspaces pagina os resultados automaticamente após a leitura de 1 MBde dados para fornecer aos clientes um desempenho de leitura consistente de milissegundos de um dígito.Para obter mais informações, consulte the section called “Resultados de paginação” (p. 124).

ParticionadoresO Amazon Keyspaces oferece a opção de usar os Amazon KeyspacesDefaultPartitioneroucompatível com CassandraRandomPartitioner. Com o Amazon Keyspaces, você pode alterar comsegurança o particionador da sua conta sem precisar recarregar os dados do Amazon Keyspaces. Osclientes verão a nova configuração do particionador automaticamente na próxima vez que se conectarem.

Instruções preparadasO Amazon Keyspaces oferece suporte ao uso de instruções preparadas para operações de linguagem demanipulação de dados (DML), como leitura e gravação de dados. No momento, o Amazon Keyspaces nãoé compatível com o uso de instruções preparadas para operações de linguagem de definição de dados(DDL), como criação de tabelas e espaços de chave. As operações DDL devem ser executadas fora dasinstruções preparadas.

Excluir intervaloO Amazon Keyspaces oferece suporte à exclusão de linhas no intervalo. Um intervalo é um conjuntocontíguo de linhas dentro de uma partição. Você especifica um intervalo em uma operação DELETEusando uma cláusula WHERE. Você pode especificar o intervalo para ser uma partição inteira.

Além disso, você pode especificar um intervalo para ser um subconjunto de linhas contíguas dentro deuma partição usando operadores relacionais (por exemplo, '>', '<') ou incluindo a chave de partição eomitindo uma ou mais colunas de agrupamento. Com o Amazon Keyspaces, você pode excluir até 1.000linhas em um intervalo em uma única operação. Além disso, as exclusões de alcance são atômicas, masnão isoladas.

8

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas do sistema

Tabelas do sistemaO Amazon Keyspaces preenche as tabelas do sistema exigidas pelos drivers Cassandra de código abertoApache 2.0. As tabelas do sistema visíveis para um cliente contêm informações exclusivas para o usuárioautenticado. As tabelas do sistema são totalmente controladas pelo Amazon Keyspaces e são somenteleitura.

O acesso somente leitura às tabelas do sistema é necessário e você pode controlá-lo com políticas deacesso do IAM. Para obter mais informações, consulte the section called “Gerenciamento do acessousando políticas” (p. 204). Você deve definir políticas de controle de acesso com base em tags paratabelas do sistema de forma diferente, dependendo se você usar oAWSChamadas de API SDK ouCassandra Query Language (CQL) por meio de drivers Cassandra e ferramentas de desenvolvedor. Parasaber mais sobre controle de acesso baseado em tags para tabelas do sistema, consultethe section called“ Acesso a recursos do Amazon Keyspaces com base em tags” (p. 214).

Se você acessar o Amazon Keyspaces usandoEndpoints da Amazon (p. 246), você vê entradasnosystem.peerstabela para cada endpoint da Amazon VPC que o Amazon Keyspaces tem permissõespara ver. Como resultado, seu driver Cassandra pode emitir umMensagem de AVISO (p. 250)sobre opróprio nó de controle nasystem.peerstabela. Você pode ignorar esse aviso com segurança.

APIs, operações, funções e tipos de dados doCassandra compatíveis no Amazon Keyspaces

O Amazon Keyspaces (para Apache Cassandra) é compatível com a API Cassandra Query Language(CQL) 3.11 (compatível com versões anteriores com a versão 2.x).

O Amazon Keyspaces oferece suporte a todas as operações de plano de dados Cassandra comumenteusadas, como criar espaços de chave e tabelas, ler dados e gravar dados.

As seções a seguir listam a funcionalidade com suporte.

Tópicos• Suporte à API Cassandra (p. 9)• Suporte à API do plano de controle do Cassandra (p. 10)• Suporte à API do plano de dados do Cassandra (p. 11)• Suporte à função Cassandra (p. 11)• Suporte a tipos de dados Cassandra (p. 12)

Suporte à API Cassandra

Operação de API Compatível

CREATE KEYSPACE Sim

ALTER KEYSPACE Sim

DROP KEYSPACE Sim

CREATE TABLE Sim

ALTER TABLE Sim

9

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Suporte à API do plano de controle do Cassandra

Operação de API Compatível

DROP TABLE Sim

CREATE INDEX Não

DROP INDEX Não

UNLOGGED BATCH Sim

LOGGED BATCH Não

SELECT Sim

INSERT Sim

DELETE Sim

UPDATE Sim

USE Sim

CREATE TYPE Não

ALTER TYPE Não

DROP TYPE Não

CREATE TRIGGER Não

DROP TRIGGER Não

CREATE FUNCTION Não

DROP FUNCTION Não

CREATE AGGREGATE Não

DROP AGGREGATE Não

CREATE MATERIALIZED VIEW Não

ALTER MATERIALIZED VIEW Não

DROP MATERIALIZED VIEW Não

TRUNCATE Não

Suporte à API do plano de controle do CassandraComo o Amazon Keyspaces é gerenciado, as operações da API do plano de controle Cassandra paragerenciar configurações de cluster e nó não são necessárias. Como resultado, os seguintes recursos doCassandra não são aplicáveis.

Recurso Motivo

Alternar gravações duráveis Todas as gravações são duráveis

Configurações de reparo Não aplicável

10

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Suporte à API do plano de dados do Cassandra

Recurso Motivo

Segundos de graça GC Não aplicável

Configurações de filtro Bloom Não aplicável

Configurações de compactação Não aplicável

Compression settings (Configurações decompactação)

Não aplicável

Configurações de armazenamento em cache Não aplicável

Configurações de segurança Substituído pelo IAM

Suporte à API do plano de dados do Cassandra

Recurso Compatível

Suporte JSON para instruções SELECT e INSERT Sim

Colunas estáticas Sim

Tempo de vida útil (TTL) Sim

Suporte à função CassandraPara obter mais informações sobre as funções compatíveis, consultethe section called “Funçõesincorporadas” (p. 270).

Função Compatível

Funções do Aggregate Não

Blobconversão Sim

Cast Sim

Funções do Datetime Sim

Funções de conversão de tempo Sim

Funções do TimeUuid Sim

Token Sim

User defined functions (UDF) Não

Uuid Sim

11

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorSuporte a tipos de dados Cassandra

Suporte a tipos de dados Cassandra

Tipo de dados Compatível

ascii Sim

bigint Sim

blob Sim

boolean Sim

counter Sim

date Sim

decimal Sim

double Sim

float Sim

frozen Não

inet Sim

int Sim

list Sim

map Sim

set Sim

smallint Sim

text Sim

time Sim

timestamp Sim

timeuuid Sim

tinyint Sim

tuple Sim

user-defined types (UDT) Não

uuid Sim

varchar Sim

varint Sim

12

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Níveis de consistência compatíveis do Cassandra

Níveis de consistência do Apache Cassandracompatíveis no Amazon Keyspaces

Os tópicos desta seção descrevem quais níveis de consistência do Apache Cassandra são suportadospara operações de leitura e gravação no Amazon Keyspaces (para Apache Cassandra).

Tópicos• Níveis de consistência de gravação (p. 13)• Níveis de consistência de leitura (p. 13)• Níveis de consistência sem suporte (p. 13)

Níveis de consistência de gravaçãoO Amazon Keyspaces replica todas as operações de gravação três vezes em várias zonas dedisponibilidade para maior durabilidade e alta disponibilidade. As gravações são armazenadas de formadurável antes de serem reconhecidas usando oLOCAL_QUORUMnível de consistência. Para cada gravaçãode 1 KB, você é cobrado 1 unidade de capacidade de gravação (WCU) para tabelas usando o modo decapacidade provisionada ou 1 unidade de solicitação de gravação (WRU) para tabelas usando o modo sobdemanda.

Níveis de consistência de leituraO Amazon Keyspaces oferece suporte a três níveis de consistência de leitura:ONE,LOCAL_ONE,eLOCAL_QUORUM. Durante umLOCAL_QUORUMleia, o Amazon Keyspaces retorna uma resposta refletindoas atualizações mais recentes de todas as operações de gravação bem-sucedidas anteriores. Usandoo nível de consistênciaONEouLOCAL_ONEpode melhorar o desempenho e a disponibilidade de suassolicitações de leitura, mas a resposta pode não refletir os resultados de uma gravação recém-concluída.

Para cada 4 KB de leituras usandoONEouLOCAL_ONEconsistência, são cobradas 0,5 unidades decapacidade de leitura (RCUs) para tabelas usando o modo de capacidade provisionada ou 0,5 unidadesde solicitação de leitura (RRUs) para tabelas usando o modo sob demanda. Para cada 4 KB de leiturasusandoLOCAL_QUORUMconsistência, você é cobrado 1 unidade de capacidade de leitura (RCU) paratabelas usando o modo de capacidade provisionada ou 1 unidades de solicitação de leitura (RRU) paratabelas usando o modo sob demanda.

Faturamento com base na consistência de leitura e no modo de throughput da capacidade deleitura por tabela para cada 4 KB de leituras

Nível de consistência Provisionada Sob demanda

ONE 0,5 RCUs 0,5 RRUs

LOCAL_ONE 0,5 RCUs 0,5 RRUs

LOCAL_QUORUM 1 RCU 1 RRU

Níveis de consistência sem suporteOs seguintes níveis de consistência não são suportados pelo Amazon Keyspaces e resultarão emexceções.

13

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorNíveis de consistência sem suporte

Níveis de consistência sem suporte

Apache Cassandra Amazon Keyspaces

EACH_QUORUM Não suportado

QUORUM Não suportado

ALL Não suportado

TWO Não suportado

THREE Não suportado

ANY Não suportado

SERIAL Não suportado

LOCAL_SERIAL Não suportado

14

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como se cadastrar no AWS

Acessando o Amazon Keyspaces(para Apache Cassandra)

É possível acessar o Amazon Keyspaces usando o console do ou de forma programática executandoumcqlshCliente ou usando um driver Cassandra licenciado para Apache 2.0. O Amazon Keyspacesoferece suporte a drivers e clientes compatíveis com o Apache Cassandra 3.11.2. Antes de acessar oAmazon Keyspaces, conclua as duas etapas a seguir:

1. Como se cadastrar na AWS (p. 15)2. Configurar o AWS Identity and Access Management (p. 15)

Como se cadastrar no AWSPara usar o serviço Amazon Keyspaces, você deve ter umConta da AWS. Se você ainda não tiver umaconta, será solicitado a criar uma ao se cadastrar. Você não será cobrado por nenhum dos serviços daAWS nos quais se cadastrar, a menos que os utilize.

Para cadastrar-se na AWS

1. Abra https://portal.aws.amazon.com/billing/signup.2. Siga as instruções online.

Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código deverificação no teclado do telefone.

Configurar o AWS Identity and Access ManagementO acesso aos recursos do Amazon Keyspaces é gerenciado usandoAWS Identity and AccessManagement(IAM). Usando o IAM, você pode anexar políticas a usuários, funções e identidades federadasdo IAM que concedem permissões de leitura e gravação a recursos específicos. Por exemplo, é possívelconceder a um usuário do IAM acesso somente leitura a apenas um subconjunto de Keyspaces e tabelas.

O exemplo a seguir política do IAM concede acesso total de leitura e gravação aos recursos do AmazonKeyspaces, o que é recomendado apenas para testes. Para obter políticas de exemplo seguindo asdiretrizes de segurança, consultethe section called “Acessar tabelas do Amazon Keyspaces” (p. 211).

1. Criar um usuário do AWS Identity and Access Management.2. Crie e anexe a seguinte política ao usuário que você acabou de criar.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:*" ], "Resource":[ "*"

15

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o console

] } ]}

Para acessar o Amazon Keyspaces depois de criar oConta da AWSe Políticas do IAM, consulte as seçõesa seguir:

• Utilização do console (p. 16)• Conexão de forma programática (p. 16)

Acessando o Amazon Keyspaces usando o consoleÉ possível acessar o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

Você pode usar o console para fazer o seguinte no Amazon Keyspaces:

• Crie, exclua, descreva e liste o Keyspaces e tabelas.• Insira, atualize e exclua dados.• Execute consultas usando o editor CQL.

Para saber como criar um espaço de chave e uma tabela do Amazon Keyspaces e configurá-lo comdados de aplicativos de amostra, consultePrimeiros passos a usar o Amazon Keyspaces (para ApacheCassandra) (p. 52).

Conectando-se programaticamente ao AmazonKeyspaces

Este tópico descreve as etapas necessárias para se conectar ao Amazon Keyspaces programaticamente.Ele orienta você na criação de credenciais específicas do serviço e lista o disponívelAWSEndpoints deserviço. A última seção mostra como se conectar ao Amazon Keyspaces usando cqlsh. Para obter tutoriaispasso a passo para se conectar ao Amazon Keyspaces usando diferentes drivers Apache Cassandra,consultethe section called “Usando um driver cliente Cassandra” (p. 33).

Note

Para ajudá-lo a começar, você pode encontrar end-to-end exemplos de código de conexão aoAmazon Keyspaces usando vários drivers de cliente Cassandra no repositório de exemplo decódigo do Amazon Keyspaces emGitHub.

O Amazon Keyspaces oferece suporte a drivers e clientes compatíveis com o Apache Cassandra3.11.2. Ele pressupõe que você já concluiu oAWSinstruções de configuração emAcessar o AmazonKeyspaces (p. 15).

Se você já tem umConta da AWS, consulte os tópicos a seguir para saber como acessar o AmazonKeyspaces usando cqlsh de forma programática:

Tópicos• Criando credenciais para acessar o Amazon Keyspaces programaticamente (p. 17)• Endpoints de serviço para Amazon Keyspaces (p. 24)• O uso docqlshpara se conectar ao Amazon Keyspaces (p. 26)

16

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

• Usar a AWS CLI (p. 29)• Uso da API (p. 32)• Usando um driver de cliente Cassandra para acessar o Amazon Keyspaces

programaticamente (p. 33)

Criando credenciais para acessar o AmazonKeyspaces programaticamentePara fornecer credenciais de acesso programático a usuários e aplicativos para acesso programático arecursos do Amazon Keyspaces, você pode executar uma das seguintes ações:

• Crie credenciais específicas de serviço semelhantes ao nome de usuário e senha tradicionais queo Cassandra usa para autenticação e gerenciamento de acesso.AWSAs credenciais específicas doserviço são associadas a um específicoAWS Identity and Access Management(IAM) usuário e só podeser usado para o serviço para o qual foram criados. Para obter mais informações, consulteUso do IAMcom o Amazon Keyspaces (for Apache Cassandra)no Guia do usuário do IAM.

• Para maior segurança, recomendamos criar chaves de acesso do IAM para usuários e funções do IAMque são usadas em todosAWSServiços da . O plug-in de autenticação Sigv4 do Amazon Keyspacespara drivers de cliente Cassandra permite autenticar chamadas para o Amazon Keyspaces usandochaves de acesso do IAM em vez de nome de usuário e senha. Para saber mais sobre como o plug-indo Amazon Keyspaces SigV4 ativaUsuários do IAM, funções e identidades federadaspara autenticar emsolicitações da API do Amazon Keyspaces, consulteAWSProcesso do Signature versão 4 (SigV4).

Você pode fazer download dos plug-ins SigV4 nos seguintes locais.• Java:https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin.• Arquivo Node.js:https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin.• Python: https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin.• Acesse:https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin.

Para exemplos de código que mostram como estabelecer conexões usando o plug-in de autenticaçãoSigv4, consultethe section called “Usando um driver cliente Cassandra” (p. 33).

Tópicos• Gerar credenciais específicas do serviço (p. 17)• Como criar e configurarAWSCredenciais do Amazon Keyspaces (p. 19)

Gerar credenciais específicas do serviçoAs credenciais específicas do serviço são semelhantes ao nome de usuário e senha tradicionais que oCassandra usa para autenticação e gerenciamento de acesso. As credenciais específicas do serviçopermitem que os usuários do IAM acessem um específicoAWSserviço. As credenciais não podem serusadas para acessar outrosAWSServiços da . Eles estão associados a um usuário do IAM específico enão podem ser usados por outros usuários do IAM.

Important

As credenciais específicas do serviço estão associadas a um usuário do IAM específico e sópodem ser usadas para o serviço para o qual foram criados. Para dar permissões a funções doIAM ou identidades federadas para acessar todos os seusAWSrecursos, você deve criar chavesde acesso do IAM paraAWSautenticação e use o plug-in de autenticação Sigv4.

Use um dos procedimentos a seguir para gerar uma credencial específica do serviço.

17

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

Como gerar credenciais específicas do serviço usando o console

Como gerar credenciais específicas do serviço usando o console

1. Faça login no AWS Management Console e abra o console do AWS Identity and Access Managementem https://console.aws.amazon.com/iam/home.

2. No painel de navegação, selecioneUsuários doe, em seguida, escolha o usuário que você criouanteriormente com permissões do Amazon Keyspaces (política anexada).

3. Selecione Credenciais de segurança. UnderCredenciais do Amazon Keyspaces, escolhaGerarcredenciaisComo gerar as credenciais específicas do serviço.

As credenciais específicas do seu serviço agora estão disponíveis. Esta é a única vez que você podefazer download ou visualizar a senha. Não será possível recuperá-la posteriormente. No entanto, épossível redefinir a senha a qualquer momento. Salve o usuário e a senha em um local seguro, poisvocê precisará deles mais tarde.

Como gerar credenciais específicas do serviço usando oAWS CLI

Como gerar credenciais específicas do serviço usando oAWS CLI

Antes de gerar credenciais específicas do serviço, você precisa fazer download, instalar e configuraroAWS Command Line Interface(AWS CLI):

1. Fazer download doAWS CLIemhttp://aws.amazon.com/cli.

Note

A AWS CLI é executada no Windows, no macOS ou no Linux.2. Siga as instruções em Instalação da CLI da AWS e Configuração da CLI da AWS no Guia do usuário

da AWS Command Line Interface.3. Usar oAWS CLI, execute o seguinte comando para gerar credenciais específicas do serviço para o

usuárioalice, para que ela possa acessar o Amazon Keyspaces.

aws iam create-service-specific-credential \ --user-name alice \ --service-name cassandra.amazonaws.com

A saída é semelhante à seguinte.

{ "ServiceSpecificCredential": { "CreateDate": "2019-10-09T16:12:04Z", "ServiceName": "cassandra.amazonaws.com", "ServiceUserName": "alice-at-111122223333", "ServicePassword": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "ServiceSpecificCredentialId": "ACCAYFI33SINPGJEBYESF", "UserName": "alice", "Status": "Active" }}

Na saída, anote os valores paraServiceUserNameeServicePassword. Salve esses valores em umlocal seguro, pois você precisará deles mais tarde.

Important

Esta é a única vez que oServicePasswordestará disponível para você.

18

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

Como criar e configurarAWSCredenciais do Amazon KeyspacesPara acessar o Amazon Keyspaces programaticamente com oAWS CLI, oAWSSDK, ou com drivers decliente Cassandra e o plug-in SigV4, você precisa de um usuário ou função do IAM com chaves de acesso.Quando você usaAWSprogramaticamente, você fornece seuAWSchaves de acesso para queAWSpodeverificar sua identidade em chamadas programáticas. Suas chaves de acesso consistem em um IDde chave de acesso (por exemplo, AKIAIOSFODNN7EXAMPLE) e uma chave de acesso secreta (porexemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). Este tópico orientará você pelas etapasnecessárias nesse processo.

Tópicos• Credenciais exigidas peloAWS CLI, oAWSSDK ou o plugin Sigv4 do Amazon Keyspaces para drivers

de cliente Cassandra (p. 19)• Criando um usuário do IAM para acesso programático ao Amazon Keyspaces em

seuAWSconta (p. 19)• Criação de chaves de acesso para um usuário do IAM (p. 21)• Como gerenciar chaves de acesso para usuários do IAM (p. 22)• Usando credenciais temporárias para se conectar ao Amazon Keyspaces usando uma função do IAM

e o plug-in Sigv4 (p. 23)

Credenciais exigidas peloAWS CLI, oAWSSDK ou o plugin Sigv4 do AmazonKeyspaces para drivers de cliente Cassandra

As credenciais a seguir são necessárias para autenticar o usuário ou a função do IAM:

AWS_ACCESS_KEY_ID

Especifica uma chave de acesso da AWS associada a um usuário ou função do IAM.

A chave de acesso daaws_access_key_idé necessário para se conectar ao Amazon Keyspacesprogramaticamente.

AWS_SECRET_ACCESS_KEY

Especifica a chave secreta associada à chave de acesso. Essencialmente, essa é a “senha” para achave de acesso.

Oaws_secret_access_keyé necessário para se conectar ao Amazon Keyspacesprogramaticamente.

AWS_SESSION_TOKEN— Opcional

Especifica o valor de token de sessão que é necessário se você estiver usando credenciais desegurança temporárias recuperadas diretamente das operações do AWS Security Token Service. Paraobter mais informações, consulte the section called “Usando credenciais temporárias para se conectarao Amazon Keyspaces” (p. 23).

Se você estiver se conectando com um usuário do IAM, oaws_session_tokenNão é necessário.

Criando um usuário do IAM para acesso programático ao Amazon Keyspaces emseuAWSconta

Para obter credenciais para acesso programático ao Amazon Keyspaces com oAWS CLI, oAWSO SDK, ouo plug-in Sigv4, primeiro você precisa criar um usuário ou função do IAM. O processo de criar um usuárioe configurar esse usuário para ter acesso programático ao Amazon Keyspaces é mostrado nas seguintesetapas:

19

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

1. Criar o usuário do noAWS Management Console, oAWS CLI, Tools para Windows:PowerShell, ouusando umAWSOperação da API. Se você criar o usuário naAWS Management Consolee, em seguida,as credenciais são criadas automaticamente.

2. Caso você crie o usuário programaticamente, crie uma chave de acesso (uma ID de chave de acesso euma chave de acesso secreta) para esse usuário em uma etapa adicional.

3. Dê ao usuário permissões para acessar o Amazon Keyspaces.

Para obter informações sobre as permissões necessárias para criar um usuário, consultePermissõesnecessárias para acessar recursos do IAM.

Criação de usuários do IAM (console)

É possível usar o AWS Management Console para criar usuários do IAM.

Para criar um usuário do IAM com acesso programático (console)

1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

2. No painel de navegação, escolha Users (Usuários) e Add users (Adicionar usuários).3. Digite o nome para o novo usuário. Este é o nome de login para a AWS.

Note

Os nomes de usuário podem ser uma combinação de até 64 letras, dígitos e estescaracteres: adição (+), igual (=), vírgula (,), ponto (.), arroba (@), sublinhado (_) e hífen (-).Os nomes devem ser exclusivos dentro de uma conta. Eles não são diferenciados por letrasmaiúsculas e minúsculas. Por exemplo, você não pode criar dois usuários denominadosTESTUSER e testuser.

4. SelectChave de acesso - Acesso programáticoPara criar uma chave de acesso para o novo usuário.Você pode visualizar ou fazer download da chave de acesso ao acessar oFinal.

Selecione Next (Próximo): Permissions5. NoDefinir permissõesNa página, selecioneAnexe políticas existentes diretamentePara atribuir

permissões ao novo usuário.

Esta opção exibe a lista deAWSPolíticas gerenciadas pela e pelo cliente disponíveis em sua conta.Você pode entrarkeyspacesNo campo de pesquisa para exibir apenas as políticas relacionadas aoAmazon Keyspaces.

Para o Amazon Keyspaces, as políticas gerenciadas disponíveissãoAmazonKeyspacesFullAccesseAmazonKeyspacesReadOnlyAccess. Para obtermais informações sobre cada política, consultethe section called “Políticas gerenciadas pelaAWS” (p. 216).

Para fins de teste e para seguir os tutoriais de conexão, selecioneoAmazonKeyspacesReadOnlyAccesspolítica para o novo usuário. Observações: Comomelhores práticas, recomendamos que você siga o princípio do menor privilégio e crie políticaspersonalizadas que limitem o acesso a recursos específicos e apenas permitam as ações necessárias.Para obter mais informações sobre políticas do IAM e para visualizar políticas de exemplo doAmazon Keyspaces, consultethe section called “Políticas baseadas em identidade do AmazonKeyspaces” (p. 206). Após criar políticas personalizadas, anexe suas políticas a grupos e, emseguida, torne os usuários membros dos grupos apropriados.

Selecione Next (Próximo): Tags.6. NoAdicionar tags (opcional)página você pode adicionar tags para o usuário ou escolherPróximo:

Análise.

20

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

7. NoReview (Revisar)Você pode visualizar todas as escolhas feitas até esse ponto. Quando estiverpronto para prosseguir, selecioneCriar usuário.

8. Para exibir as chaves de acesso do usuário (IDs de chave de acesso e chaves de acesso secretas),selecione Show (Mostrar) ao lado da senha e da chave de acesso. Para salvar as chaves de acesso,escolha Fazer download de .csv e, em seguida, salve o arquivo em um local seguro.

Important

Esta é a única oportunidade de visualizar ou fazer download das chaves de acesso secretas,e você precisa dessas informações para que elas possam usar o plugin Sigv4. Salve anova ID da chave de acesso do usuário e a chave de acesso secreta em um local seguro eprotegido. Você não terá acesso às chaves secretas novamente depois dessa etapa.

Criação de usuários do IAM (AWS CLI)

Você pode usar a AWS CLI para criar um usuário do IAM.

Para criar um usuário do IAM com acesso programático (AWS CLI)

1. Criar um usuário.

• aws iam create-user2. Forneça ao usuário acesso programático. Isso requer chaves de acesso.

• AWS IAMcreate-access-key• Tools para Windows:PowerShell: Novo IAMAccessKey• API do IAM: CreateAccessKey (Chave)

Important

Esta é a única oportunidade de visualizar ou fazer download das chaves de acessosecretas, e você precisa dessas informações para que elas possam usar o plugin Sigv4.Salve a nova ID da chave de acesso do usuário e a chave de acesso secreta em um localseguro e protegido. Você não terá acesso às chaves secretas novamente depois dessaetapa.

3. Anexe oAmazonKeyspacesReadOnlyAccessPara o usuário que define as permissões do usuário.Observações: Como melhores práticas, recomendamos que você gerencie as permissões de usuárioao adicionar o usuário a um grupo e anexando uma política ao grupo, em vez de anexar diretamente aum usuário.

• AWS IAMattach-user-policy

Criação de chaves de acesso para um usuário do IAM

Caso você já tenha um usuário do IAM, crie novas chaves de acesso a qualquer momento. Paraobter mais informações sobre gerenciamento de chaves, por exemplo, como girar chaves de acesso,consulte.Gerenciamento de chaves de acesso de usuários do IAM.

Para criar chaves de acesso para um usuário do IAM (console)

1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

2. No painel de navegação, escolha Usuários.3. Escolha o nome do usuário cujas chaves de acesso você deseja criar.4. NoSummary (Resumo)página do usuário, escolha oCredenciais de segurançaGuia.

21

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

5. Na seção Access keys (Chaves de acesso), escolha Create access key (Criar chave de acesso).

Para ver o novo par de chaves de acesso, escolha Show (Mostrar). Suas credenciais terão a seguinteaparência:

• ID de chave de acesso: AKIAIOSFODNN7EXAMPLE• Chave de acesso secreta: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Note

Você não terá mais acesso à chave de acesso secreta depois que essa caixa de diálogo forfechada.

6. Para baixar o par de chaves, escolha Baixar arquivo .csv. Armazene as chaves em um lugar seguro.7. Depois de baixar o arquivo .csv, escolha Close (Fechar).

Quando você cria uma chave de acesso, o par de chaves é ativo por padrão, e você pode usar o parimediatamente.

Como gerenciar chaves de acesso para usuários do IAM

Como melhores práticas, recomendamos que você não incorpore as chaves de acesso diretamente aocódigo. OAWSSDKs e oAWSAs ferramentas de linha de comando permitem que você coloque as chavesde acesso em locais conhecidos, para que não seja necessário mantê-las no código. Coloque chaves deacesso em um dos seguintes locais:

• Variáveis de ambiente— Em um sistema multicliente, escolha as variáveis de ambiente do usuário, nãoas variáveis de ambiente do sistema.

• Arquivo de credenciais da CLI: os arquivos credentials e config são atualizados quando vocêexecuta o comando aws configure. OcredentialsO arquivo está localizado em~/.aws/credentialsno Linux, macOS ou Unix ou emC:\Users\USERNAME\.aws\credentialsnoWindows. Esse arquivo pode conter os detalhes da credencial para o perfil default e quaisquer perfisnomeados.

• Arquivo de configuração da CLI: os arquivos credentials e config são atualizados quando vocêexecuta o comando aws configure. OconfigO arquivo está localizado em~/.aws/configno Linux,macOS ou Unix ou emC:\Users\USERNAME\.aws\configno Windows. Esse arquivo contém asdefinições de configuração para o perfil padrão e quaisquer perfis nomeados.

Armazenar chaves de acesso como variáveis de ambiente é um pré-requisito para othe section called“Plugin de autenticação para Java 4.x” (p. 37). O cliente procura credenciais usando a cadeia defornecedores de credenciais padrão, e as chaves de acesso armazenadas como variáveis de ambientetêm precedentes sobre todos os outros locais, por exemplo, arquivos de configuração. Para obter maisinformações, consulteDefinições de configuração e precedência.

Os exemplos a seguir mostram como configurar variáveis de ambiente para o usuário padrão.

Linux, macOS, or Unix

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>

Configurar a variável de ambiente altera o valor usado até o final da sua sessão de shell ou atéque você defina a variável como um valor diferente. Você pode tornar as variáveis persistentes emsessões futuras definindo-as no script de inicialização do shell.

22

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como criar credenciais

Windows Command Prompt

C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLEC:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYC:\> setx AWS_SESSION_TOKEN AQoDYXdzEJr...<remainder of security token>

O uso de set para definir uma variável de ambiente altera o valor usado até o final da sessão deprompt de comando atual ou até que você defina a variável como um valor diferente. O uso desetx para definir uma variável de ambiente altera o valor usado na sessão de prompt de comandoatual e todas as sessões de prompt de comando que você criar após a execução do comando. Nãoafeta outros shells de comando que já estejam em execução no momento em que você executar ocomando.

PowerShell

PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"PS C:\> $Env:AWS_SESSION_TOKEN="AQoDYXdzEJr...<remainder of security token>"

Se você definir uma variável de ambiente noPowerShellComo mostrado nos exemplos anteriores,ele salva o valor apenas pela duração da sessão atual. Para tornar a configuração da variávelde ambiente persistente em todosPowerShelle sessões de Prompt de Comando, armazene-o usando oSistemaaplicação emPainel de controle do. Como alternativa, é possível definir avariável para todo o futuroPowerShellsessões adicionando-as ao seuPowerShellPerfil do. VejaoPowerShelldocumentaçãoPara obter mais informações sobre como armazenar variáveis de ambienteou como persisti-las nas sessões.

Usando credenciais temporárias para se conectar ao Amazon Keyspaces usandouma função do IAM e o plug-in Sigv4

Para maior segurança, você pode usarcredenciais temporáriaspara autenticar com o plug-in SigV4. Emmuitos casos, você não precisa de chaves de acesso de longo prazo que nunca expirem (como vocêtem com um usuário do IAM). Em vez disso, você pode criar uma função do IAM e gerar credenciaisde segurança temporárias. As credenciais de segurança temporárias consistem em um ID da chave deacesso e uma chave de acesso secreta, mas elas também incluem um token de segurança que indicaquando as credenciais expiram. Para saber mais sobre como usar funções do IAM em vez de chaves deacesso de longo prazo, consulteAlternância para uma função do IAM (AWSAPI).

Para começar a usar credenciais temporárias, primeiro você precisa criar uma função do IAM.

Crie uma função do IAM que conceda acesso somente leitura ao Amazon Keyspaces

1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

2. No painel de navegação, selecioneFunções do, entãoCriar função do.3. NoCriar função dopágina, emSelecionar tipo de entidade confiável, escolhaAWSmanutenção.

UNDEREscolha um caso de uso, escolhaAmazon EC2e, depois, escolhaPróximo: Permissions4. NoAnexe política de permissõesNa página, selecioneAcesso somente leitura ao Amazon

Keyspacesna lista de políticas e, em seguida, escolhaPróximo: Tags.5. NoAdicionar tags (opcional)página você pode adicionar tags para a função ou escolherPróximo:

Análise.6. NoReview (Revisar), insira um nome para a função e selecioneCriar função do. Lembre-se desse

nome, pois você precisará dele quando executar sua instância do Amazon EC2.

23

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Service endpoints (Endpoints de serviço)

Para usar credenciais de segurança temporárias no código, você chama programaticamente umAWSSecurity Token ServiceComo API:AssumeRoleE extraia as credenciais resultantes e o token de sessãoda sua função do IAM que você criou na etapa anterior. Depois, use esses valores como credenciaisem chamadas subsequentes para a AWS. O exemplo a seguir mostra o pseudocódigo de como usarcredenciais de segurança temporárias:

assumeRoleResult = AssumeRole(role-arn);tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken);cassandraRequest = CreateAmazoncassandraClient(tempCredentials);

Para obter um exemplo que implementa credenciais temporárias usando o driver Python para acessar oAmazon Keyspaces, consulte??? (p. 42).

Para obter detalhes sobre como chamar AssumeRole, GetFederationToken e outras operações deAPI, consulte a Referência da API do AWS Security Token Service. Para obter informações sobre comoobter as credenciais de segurança temporárias e o token de sessão provenientes do resultado, consulte adocumentação do SDK com o qual você está trabalhando. Você pode encontrar a documentação de todosos AWS SDKs na principal página da documentação da AWS, na seção SDKs e toolkits.

Endpoints de serviço para Amazon KeyspacesTópicos

• Endpoints globais (p. 24)• Endpoints de regiões da China (p. 25)• Endpoints do FIPS (p. 26)• Port (p. 26)

Endpoints globaisO Amazon Keyspaces está disponível nos seguintesRegiões da AWS. A tabela mostra o ponto final doserviço para cada região.

Nome daregião

Região Endpoint Protocolo

US East(Ohio)

us-east-2 cassandra TLS

USEast (N.Virginia)

us-east-1 cassandra

cassandra

TLS

HTTPS

Oestedos EUA(Norte daCalifórnia)

us-west-1 cassandra TLS

US West(Oregon)

us-west-2 cassandra

cassandra

TLS

HTTPS

24

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Service endpoints (Endpoints de serviço)

Nome daregião

Região Endpoint Protocolo

Ásia-Pacífico(HongKong)

ap-east-1 cassandra.ap-east-1.amazonaws.com TLS

AsiaPacific(Mumbai)

ap-south-1 cassandra TLS

AsiaPacific(Seoul)

ap-northeast-2

cassandra TLS

Ásia-Pacífico(Singapura)

ap-southeast-1

cassandra.ap-southeast-1.amazonaws.com TLS

AsiaPacific(Sydney)

ap-southeast-2

cassandra.ap-southeast-2.amazonaws.com TLS

AsiaPacific(Tokyo)

ap-northeast-1

cassandra TLS

Canada(Central)

ca-central-1

cassandra TLS

Europe(Frankfurt)

eu-central-1

cassandra TLS

Europe(Ireland)

eu-west-1 cassandra TLS

Europe(London)

eu-west-2 cassandra TLS

Europe(Paris)

eu-west-3 cassandra TLS

Europe(Stockholm)

eu-north-1 cassandra TLS

OrienteMédio(Bahrein)

me-south-1

cassandra TLS

SouthAmerica(SãoPaulo)

sa-east-1 cassandra TLS

Endpoints de regiões da ChinaOs seguintes endpoints do Amazon Keyspaces estão disponíveis naAWSRegiões da China.

25

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o cqlsh

Para acessar esses endpoints, você precisa se inscrever em um conjunto separado de credenciais deconta exclusivas para as regiões da China. Para obter mais informações, consulteInscrição, contas ecredenciais na China.

Nome daregião

Região Endpoint de FIPS Protocolo

China(Pequim)

cn-north-1 cassandra TLS

China(Ningxia)

cn-northwest-1

cassandra TLS

Endpoints do FIPSPara o seguinte:Regiões da AWS, os endpoints FIPS estão disponíveis. Para obter mais informaçõessobre os endpoints do FIPS, consulteAWSEndpoints do FIPS.

Nome daregião

Região Endpoint de FIPS Protocolo

Leste dosEUA (N. daVirgínia)

us-east-1 cassandra TLS

Oestedos EUA(Oregon)

us-west-2 cassandra TLS

PortA tabela a seguir mostra o mecanismo de autenticação para usar para a porta. O Amazon Keyspaces usao TLS para autenticar o servidor na Starfield CA.

Port Mecanismo de autenticação

9142 TLS

O uso docqlshpara se conectar ao AmazonKeyspacesA seção a seguir descreve como usarcqlshPara se conectar ao Amazon Keyspaces (for ApacheCassandra).

Para obter informações sobre ocqlsh, consultecqlsh: o shell CQL.

Tópicos• Instalar e usar ocqlshPara se conectar ao Amazon Keyspaces (for Apache Cassandra) (p. 27)

26

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o cqlsh

Instalar e usar ocqlshPara se conectar ao Amazon Keyspaces(for Apache Cassandra)Para instalar e usar ocqlsh, você deve fazer o seguinte:

1. Instalar o Python 2.7 (p. 27).2. Instalar acqlshcliente (p. 27).3. EncryptcqlshConexões usando o TLS (p. 28).

Note

Para fazercqlshconexões com o Amazon Keyspaces para testes funcionais, operações levese migrações, você pode usar um contêiner pré-configurado do Docker que inclui todos os pré-requisitos e configurações otimizadas para o Amazon Keyspaces. O kit de ferramentas estádisponível noGitHublocal na rede Internet.

Instalar o Python 2.7

Para determinar se você tem o Python instalado em seu computador e qual versão, execute a seguinteoperação.

python --version

Se você tiver o Python 2.7 instalado, verá algo parecido com o exemplo a seguir para saída.

Python 2.7.16

Se você precisar instalar o Python 2.7, siga as instruções emDownloads em Python.

Instalar e configurar o cliente CQL

cqlshestá empacotado com o Apache Cassandra. Para obtê-lo, instale o Apache Cassandra seguindo asinstruções emBaixando e instalando o Apache Cassandra. O Amazon Keyspaces oferece suporte a driverse clientes compatíveis com o Apache Cassandra 3.11.2. A versão atualmente recomendada docqlshpodeser baixado deApache.

Depois de instalar o Cassandra, verifique secqlshÉ instalado executando o comando a seguir.

cqlsh --version

Você verá algo parecido com o exemplo a seguir para a saída.

cqlsh 5.0.1

Se você estiver usando o Windows, substitua todas as instâncias docqlshcomcqlsh.bat. Por exemplo,para verificar a versão do cqlsh no Windows, execute o comando a seguir.

cqlsh.bat --version

Fazer download do modelo do arquivo de configuraçãocqlshrcotimizado para Amazon Keyspaces apartir deGithub. Salve o baixadocqlshrc_templatearquivo comocqlshrcpara o diretório Cassandra.

27

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o cqlsh

${HOME}/.cassandra/cqlshrc

CriptografiacqlshConexões usando o TLSO Amazon Keyspaces só aceita conexões seguras usando Transport Layer Security (TLS).

Antes de poder conectar-se usando SSL/TLS, faça o seguinte:

1. Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao AmazonKeyspaces e continuar a fazê-lo se o cliente estiver se conectando ao Amazon Keyspaces comsucesso. O certificado Starfield fornece compatibilidade adicional com versões anteriores paraclientes que usam autoridades de certificação mais antigas.

2. Connect ao Amazon Keyspaces com o comando a seguir.Important

OServiceUserNameeServicePassworddeve corresponder às obtidas quando você gerouas credenciais específicas do serviço seguindo as etapas emGerar credenciais específicas doserviço (p. 17).Você também pode gerenciar o acesso cqlsh do Amazon Keyspaces por meio deAWSUsuáriose funções do IAM usando oAWSexpansão de plugins de autenticação para cqlsh. Para sabermais, consulteKit de ferramentas do desenvolvedor do Amazon Keyspaces (for ApacheCassandra) no Github.

cqlsh host 9142 -u ServiceUserName -p ServicePassword --ssl

Observe que9142é a porta segura.

Veja um exemplo a seguir.

cqlsh cassandra.us-east-2.amazonaws.com 9142 -u "alice-at-111122223333" -p "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --ssl

Depois de conectar, você verá algo parecido com o exemplo a seguir para a saída. A versão atualmentesuportada do Apache Cassandra é 3.11.2.

Connected to Amazon Keyspaces at cassandra.us-east-2.amazonaws.com:9142.[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]Use HELP for help.alice-at-111122223333@cqlsh>

Atualizando um arquivo de configuração existente paracqlshconexões

Se você quiser editar um arquivo de configuração existente para suportar conexões TLS, abra o arquivo deconfiguração no diretório home do Cassandra, por exemplo${HOME}/.cassandra/cqlshrce adicioneas linhas a seguir.

[connection]

28

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar a AWS CLI

port = 9142factory = cqlshlib.ssl.ssl_transport_factory

[ssl]validate = truecertfile = path_to_file/sf-class2-root.crt

Você pode configurar o cqlshCOPYconfigurações para garantircqlshpermanece dentro do AmazonKeyspacesthe section called “Ajuste de throughput de consulta CQL” (p. 7)diretrizes.

Modificar o padrão doCOPY FROMOpção no arquivo de configuração${HOME}/.cassandra/cqlshrceadicione as linhas a seguir.

[copy-from]CHUNKSIZE=50

Esta configuração para CHUNKSIZEfunciona bem para começar a usar uma tabela recém-criada edeve ser alterada para suportar cargas de trabalho maiores. Para obter mais informações sobre comootimizarcqlsh COPYconfigurações para o Amazon Keyspaces, consultethe section called “Etapa 4:Configurecqlsh COPY FROMconfigurações” (p. 70)no tutorial sobre migração de dados.

Usar a AWS CLIVocê pode usar a AWS Command Line Interface (AWS CLI) para controlar vários serviços da AWS vialinha de comando e automatizá-los usando scripts. Com o Amazon Keyspaces, você pode usar oAWSCLIPara operações de linguagem de definição de dados (DDL), como criar uma tabela do. Além disso,você pode usar serviços e ferramentas de infraestrutura como código (IAC), comoAWS CloudFormationETerraform.

Antes de poder usar aAWS CLICom o Amazon Keyspaces, você deve obter um ID de chave de acesso euma chave de acesso secreta. Para obter mais informações, consultethe section called “Credenciais doIAM para oAWSautenticação” (p. 19)

Para obter uma listagem completa de todos os comandos disponíveis para o Amazon Keyspaces naAWSCLI, consulte aAWS CLIReferência de comando.

Tópicos• Download e configuração da AWS CLI (p. 29)• Usar oAWS CLICom o Amazon Keyspaces (p. 29)

Download e configuração da AWS CLIOAWS CLIO está disponível em.http://aws.amazon.com/cli. Ela é executada no Windows, macOS ouLinux. Depois de baixar oAWS CLI, siga estas etapas para instalá-la e configurá-la:

1. Vá para oAWS Command Line InterfaceGuia do usuário do2. Siga as instruções paraInstalar oAWS CLIeConfigurar aAWS CLI

Usar oAWS CLICom o Amazon KeyspacesO formato de linha de comando consiste em um nome de operação do Amazon Keyspaces seguido pelosparâ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 usamAWS CLISintaxe abreviada. Paraobter mais informações, consulteUsar sintaxe simplificada com aAWSCLI.

29

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar a AWS CLI

O comando a seguir cria um espaço de chave com o nomecatálogo.

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

O comando retorna o recurso Nome de recurso da Amazon (ARN) na saída.

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

Para confirmar que o espaço de chavecatálogoExiste, é possível 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 nomebook_awards. A chave de partição da tabela consiste nascolunasyeareawarde a chave de agrupamento consiste nas colunascategoryerank, ambas as colunasde agrupamento usam a ordem de classificação crescente. (Para facilitar a leitura, comandos longos nestaseçã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 saída a seguir.

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

30

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar a AWS CLI

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

31

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Uso da API

}

Ao criar tabelas com esquemas complexos, pode ser útil carregar a definição de esquema da tabela apartir de um arquivo JSON. Veja a seguir um exemplo disso. Faça o download do exemplo de definiçãode esquema de arquivo JSON deArquivo schema_definition.zipE EXTRACTschema_definition.json,tomando nota do caminho para o arquivo. Neste exemplo, o arquivo JSON de definição de esquema estálocalizado no diretório atual. Para obter diferentes opções de caminho de arquivo, consulteComo carregaros 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 nomeMyTablecom opçõesadicionais. Observe que os comandos são divididos em linhas separadas para melhorar a legibilidade.Este comando mostra como criar uma tabela e:

• Defina o modo de capacidade da tabela• Ative a recuperação point-in-time para a tabela• Defina o valor de Time to Live (TTL — Tempo de vida) padrão para a tabela para 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 paracriptografia e tenha TTL habilitado para permitir que você defina datas de expiração para colunas e linhas.Para executar esse exemplo, você deve substituir o ARN de recurso para o gerenciado pelo clienteAWSKMSchave com sua própria chave e garanta 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'

Uso da APIVocê pode usar oAWSSDK e oAWS Command Line Interface(AWS CLI) para trabalhar interativamentecom o Amazon Keyspaces. Você pode usar a API 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 ferramentasde infraestrutura como código (IAC), comoAWS CloudFormatione Terraform.

Antes de poder usar oAWS CLICom o Amazon Keyspaces, você deve obter um ID de chave de acesso euma chave de acesso secreta. Para obter mais informações, consultethe section called “Credenciais doIAM para oAWSautenticação” (p. 19)

Para obter uma listagem completa de todas as operações disponíveis para o Amazon Keyspaces na API,consulteReferência da API do Amazon Keyspaces.

32

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Usando um driver de cliente Cassandra para acessaro Amazon Keyspaces programaticamenteVocê pode usar muitos drivers Cassandra de código aberto de terceiros para se conectar ao AmazonKeyspaces. O Amazon Keyspaces é compatível com drivers Cassandra que suportam o ApacheCassandra versão 3.11.2. Para obter mais informações sobre drivers Cassandra, consulteDrivers ApacheCassandra Client.

Note

Para ajudá-lo a começar, você pode visualizar e baixar end-to-end exemplos de código queestabelecem conexões com o Amazon Keyspaces com drivers populares. ConsulteExemplos doAmazon Keyspacesno GitHub

Os tutoriais neste capítulo incluem uma consulta CQL simples para confirmar que a conexão com oAmazon Keyspaces foi estabelecida com sucesso. Para saber como trabalhar com espaços de chave etabelas depois de se conectar a um endpoint do Amazon Keyspaces, consulteReferência da linguagemCQL (p. 254).

Tópicos• Usando um driver de cliente Cassandra Java para acessar o Amazon Keyspaces

programaticamente (p. 33)• Usando um driver cliente Cassandra Python para acessar o Amazon Keyspaces

programaticamente (p. 41)• Usando um driver de cliente Cassandra Node.js para acessar o Amazon Keyspaces

programaticamente (p. 43)• Usando um driver de cliente Cassandra .NET Core para acessar o Amazon Keyspaces

programaticamente (p. 46)• Usando um driver cliente Cassandra Go para acessar o Amazon Keyspaces

programaticamente (p. 47)• Usando um driver cliente Cassandra Perl para acessar o Amazon Keyspaces

programaticamente (p. 50)

Usando um driver de cliente Cassandra Java para acessar oAmazon Keyspaces programaticamenteEsta seção mostra como se conectar ao Amazon Keyspaces usando um driver de cliente Java. Parafornecer aos usuários e aplicativos credenciais para acesso programático aos recursos do AmazonKeyspaces, você poderá executar uma das seguintes ações:

• Crie credenciais específicas do serviço associadas a um específicoAWS Identity and AccessManagementUsuário (IAM).

• Para maior segurança, recomendamos criar chaves de acesso do IAM para usuários ou funçõesdo IAM que são usadas em todosAWSServiços da . O plug-in de autenticação Sigv4 do AmazonKeyspaces para drivers de cliente Cassandra permite autenticar chamadas para o Amazon Keyspacesusando chaves de acesso do IAM em vez de nome de usuário e senha. Para obter mais informações,consultethe section called “Credenciais do IAM para oAWSautenticação” (p. 19)

Note

Para obter um exemplo de como usar o Amazon Keyspaces com Spring Boot, consultehttps://github.com/aws-samples/amazon-keyspaces-spring-app-example.

33

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Tópicos• Antes de começar (p. 34)• Tutorial passo a passo para se conectar ao Amazon Keyspaces usando o DataStax Driver Java para

Apache Cassandra usando credenciais específicas do serviço (p. 35)• Tutorial passo a passo para se conectar ao Amazon Keyspaces usando o 4.x DataStax Driver Java

para Apache Cassandra e o plugin de autenticação SigV4 (p. 37)• Connect ao Amazon Keyspaces usando o driver Java DataStax 3.x para Apache Cassandra e o plug-in

de autenticação SigV4 (p. 39)

Antes de começar

Para se conectar ao Amazon Keyspaces, você precisa executar as tarefas a seguir antes de iniciar o.

1. O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger asconexões com os clientes.

a. Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao AmazonKeyspaces e continuar a fazê-lo se o cliente estiver se conectando ao AmazonKeyspaces com sucesso. O certificado Starfield fornece compatibilidade adicional comversões anteriores para clientes que usam autoridades de certificação mais antigas.

b. Converta o certificado digital Starfield em um arquivo TrustStore.

openssl x509 -outform der -in sf-class2-root.crt -out temp_file.derkeytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der

Nesta etapa, você precisa criar uma senha para o armazenamento de chaves e confiar nestecertificado. O comando interativo parece com o exemplo a seguir.

Enter keystore password:Re-enter new password:Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=USIssuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=USSerial number: 0Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034Certificate fingerprints: MD5: 32:4A:4B:BB:C8:63:69:9B:BE:74:9A:C6:DD:1D:46:24 SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58Signature algorithm name: SHA1withRSASubject Public Key Algorithm: 2048-bit RSA keyVersion: 3Extensions:#1: ObjectId: 2.5.29.35 Criticality=falseAuthorityKeyIdentifier [KeyIdentifier [0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U.....

34

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

0010: 0E A9 88 E7 ....][OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US]SerialNumber: [ 00]]#2: ObjectId: 2.5.29.19 Criticality=falseBasicConstraints:[ CA:true PathLen:2147483647]#3: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U.....0010: 0E A9 88 E7 ....]]Trust this certificate? [no]: y

2. Anexe o arquivo TrustStore nos argumentos da JVM:

-Djavax.net.ssl.trustStore=path_to_file/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=my_password

Tutorial passo a passo para se conectar ao Amazon Keyspaces usando oDataStax Driver Java para Apache Cassandra usando credenciais específicas doserviço

Os seguintes exemplos de step-by-step tutorial orienta você na conexão com o Amazon Keyspacesusando um driver Java para Cassandra usando credenciais específicas do serviço. Especificamente, vocêusará a versão 4.0 do DataStax Driver Java para Apache Cassandra.

Tópicos• Etapa 1: Pré-requisitos (p. 35)• Etapa 2: Configurar o driver (p. 35)• Etapa 3: Executar o aplicativo de exemplo (p. 36)

Etapa 1: Pré-requisitos

Para seguir este tutorial, você precisa gerar credenciais específicas do serviço e adicionar o DataStaxDriver Java para Apache Cassandra para seu projeto Java.

• Gere credenciais específicas de serviço para o usuário do Amazon Keyspaces IAM concluindo asetapas emthe section called “Credenciais específicas do serviço” (p. 17). Se você preferir usar chavesde acesso do IAM para autenticação, consultethe section called “Plugin de autenticação para Java4.x” (p. 37).

• Adicionar o DataStax Driver Java para Apache Cassandra para seu projeto Java. Certifique-se de quevocê está usando uma versão do driver compatível com o Apache Cassandra 3.11.2. Para obter maisinformações, consulte o .Documentação do driver DataStax Java para Apache Cassandra.

Etapa 2: Configurar o driver

Você pode especificar configurações para o DataStax Driver Java Cassandra criando um arquivo deconfiguração para seu aplicativo. Esse arquivo de configuração substitui as configurações padrão e dizao driver para se conectar ao endpoint do serviço Amazon Keyspaces usando a porta 9142. Para uma

35

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

lista de endpoints de serviço disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Crie um arquivo de configuração e salve o arquivo na pasta de recursos do aplicativo — por exemplo,src/main/resources/application.conf. Abertoapplication.confE adicione as seguintesconfigurações.

1. Provedor de autenticação— Crie o provedor de autenticação comoPlainTextAuthProviderClasse. ServiceUsernameeServicePassworddeve corresponderao nome de usuário e senha que você obteve quando gerou as credenciais específicas do serviçoseguindo as etapas emGerar credenciais específicas do serviço (p. 17).

Note

Você pode usar credenciais de curto prazo usando o plug-in de autenticação para o DataStaxDriver Java para Apache Cassandra em vez de credenciais de codificação em seu arquivo deconfiguração de driver. Para saber mais, siga as instruções para othe section called “Pluginde autenticação para Java 4.x” (p. 37).

2. Data center local— Defina o valor delocal-datacenterpara a região à qual você estáse conectando. Por exemplo, se o aplicativo estiver se conectando aocassandra.us-east-2.amazonaws.come, em seguida, defina o data center local comous-east-2. Para todos osdisponíveisRegiões da AWSconsulte??? (p. 24).

3. SSL/TLS— Inicialize o SSLengineFactory adicionando uma seção no arquivo de configuração comuma única linha que especifica a classe comclass = DefaultSslEngineFactory. Forneça ocaminho para o arquivo TrustStore e a senha que você criou anteriormente.

datastax-java-driver {

basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"] advanced.auth-provider{ class = PlainTextAuthProvider username = "ServiceUserName" password = "ServicePassword" } basic.load-balancing-policy { local-datacenter = "us-east-2" }

advanced.ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" hostname-validation = false }}

Note

Em vez de adicionar o caminho ao TrustStore no arquivo de configuração, você também podeadicionar o caminho TrustStore diretamente no código do aplicativo ou adicionar o caminho àTrustStore aos argumentos da JVM.

Etapa 3: Executar o aplicativo de exemplo

Este exemplo de código mostra um aplicativo de linha de comando simples que cria um pool de conexõescom o Amazon Keyspaces usando o arquivo de configuração que criamos anteriormente. Ele confirma quea conexão é estabelecida executando uma consulta simples.

package <your package>;

36

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

// add the following imports to your projectimport com.datastax.oss.driver.api.core.CqlSession;import com.datastax.oss.driver.api.core.config.DriverConfigLoader;import com.datastax.oss.driver.api.core.cql.ResultSet;import com.datastax.oss.driver.api.core.cql.Row;

public class App { public static void main( String[] args ) { //Use DriverConfigLoader to load your configuration file DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf"); try (CqlSession session = CqlSession.builder() .withConfigLoader(loader) .build()) {

ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); } }}

Note

Usar umtrybloco para estabelecer a conexão para garantir que ela esteja sempre fechada. Sevocê não usa umtrybloco, lembre-se de fechar sua conexão para evitar vazamento de recursos.

Tutorial passo a passo para se conectar ao Amazon Keyspaces usando o 4.xDataStax Driver Java para Apache Cassandra e o plugin de autenticação SigV4A seção a seguir descreve como usar o plug-in de autenticação Sigv4 para o 4.x de código abertoDataStax Driver Java para o Apache Cassandra para acessar o Amazon Keyspaces (para o ApacheCassandra). O plugin está disponível noRepositório GitHub.

O plug-in de autenticação Sigv4 permite que você use credenciais do IAM para usuários ou funções aose conectar ao Amazon Keyspaces. Em vez de exigir um nome de usuário e senha, este plugin assinasolicitações de API usando chaves de acesso. Para obter mais informações, consultethe section called“Credenciais do IAM para oAWSautenticação” (p. 19)

Etapa 1: Pré-requisitos

Para seguir este tutorial, você precisa concluir as tarefas a seguir.

• Se ainda não tiver feito isso, crie credenciais para o usuário ou a função do IAM seguindo as etapasemthe section called “Credenciais do IAM para oAWSautenticação” (p. 19). Este tutorial pressupõeque as chaves de acesso são armazenadas como variáveis de ambiente. Para obter mais informações,consultethe section called “Como gerenciar chaves de acesso” (p. 22)

• Adicionar o DataStax Driver Java para Apache Cassandra para seu projeto Java. Certifique-se de quevocê está usando uma versão do driver compatível com o Apache Cassandra 3.11.2. Para obter maisinformações, consulte o .Documentação do DataStax Java Driver for Apache Cassandra.

• Adicione o plug-in de autenticação ao aplicativo. O plugin de autenticação suporta a versão 4.x doDataStax Driver Java para Apache Cassandra. Se você estiver usando o Apache Maven ou umsistema de compilação que possa usar dependências do Maven, adicione as seguintes dependências àsuapom.xmlfile.

Important

Substitua a versão do plugin pela versão mais recente, conforme mostrado emRepositórioGitHub.

37

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

<dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId> <version>4.0.5</version></dependency>

Etapa 2: Configurar o driver

Você pode especificar configurações para o DataStax Driver Java Cassandra criando um arquivo deconfiguração para seu aplicativo. Esse arquivo de configuração substitui as configurações padrão e dizao driver para se conectar ao endpoint do serviço Amazon Keyspaces usando a porta 9142. Para umalista de endpoints de serviço disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Crie um arquivo de configuração e salve o arquivo na pasta de recursos do aplicativo — por exemplo,src/main/resources/application.conf. Abertoapplication.confE adicione as seguintesconfigurações.

1. Provedor de autenticação— Defina oadvanced.auth-provider.classPara uma nova instânciadosoftware.aws.mcs.auth.SigV4AuthProvider. O Sigv4AuthProvider é o manipulador deautenticação fornecido pelo plugin para executar a autenticação Sigv4.

2. Data center local— Defina o valor delocal-datacenterpara a região à qual você estáse conectando. Por exemplo, se o aplicativo estiver se conectando aocassandra.us-east-2.amazonaws.come, em seguida, defina o data center local comous-east-2. Para todos osdisponíveisRegiões da AWSconsulte??? (p. 24).

3. SSL/TLS— Inicialize o SSLengineFactory adicionando uma seção no arquivo de configuração comuma única linha que especifica a classe comclass = DefaultSslEngineFactory. Forneça ocaminho para o arquivo TrustStore e a senha que você criou anteriormente.

datastax-java-driver { basic.contact-points = ["cassandra.us-east-2.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-2 } advanced { auth-provider = { class = software.aws.mcs.auth.SigV4AuthProvider aws-region = us-east-2 } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" hostname-validation = false } } }

Note

Em vez de adicionar o caminho ao TrustStore no arquivo de configuração, você também podeadicionar o caminho TrustStore diretamente no código do aplicativo ou adicionar o caminho àTrustStore aos argumentos da JVM.

38

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Etapa 3: Execute o aplicativo

Este exemplo de código mostra um aplicativo de linha de comando simples que cria um pool de conexõescom o Amazon Keyspaces usando o arquivo de configuração que criamos anteriormente. Ele confirma quea conexão é estabelecida executando uma consulta simples.

package <your package>;// add the following imports to your projectimport com.datastax.oss.driver.api.core.CqlSession;import com.datastax.oss.driver.api.core.config.DriverConfigLoader;import com.datastax.oss.driver.api.core.cql.ResultSet;import com.datastax.oss.driver.api.core.cql.Row;

public class App { public static void main( String[] args ) { //Use DriverConfigLoader to load your configuration file DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf"); try (CqlSession session = CqlSession.builder() .withConfigLoader(loader) .build()) {

ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); } }}

Note

Usar umtrybloco para estabelecer a conexão para garantir que ela esteja sempre fechada. Sevocê não usa umtrybloco, lembre-se de fechar sua conexão para evitar vazamento de recursos.

Connect ao Amazon Keyspaces usando o driver Java DataStax 3.x para ApacheCassandra e o plug-in de autenticação SigV4

A seção a seguir descreve como usar o plug-in de autenticação Sigv4 para o código aberto 3.x DataStaxDriver Java para Apache Cassandra para acessar o Amazon Keyspaces. O plugin está disponívelnoRepositório GitHub.

O plug-in de autenticação Sigv4 permite que você use credenciais do IAM para usuários e funções aose conectar ao Amazon Keyspaces. Em vez de exigir um nome de usuário e senha, este plugin assinasolicitações de API usando chaves de acesso. Para obter mais informações, consultethe section called“Credenciais do IAM para oAWSautenticação” (p. 19)

Etapa 1: Pré-requisitos

Para executar esse exemplo de código, primeiro você precisa concluir as tarefas a seguir.

• Crie credenciais para seu usuário ou função do IAM seguindo as etapas emthe section called“Credenciais do IAM para oAWSautenticação” (p. 19). Este tutorial pressupõe que as chaves deacesso são armazenadas como variáveis de ambiente. Para obter mais informações, consultethe sectioncalled “Como gerenciar chaves de acesso” (p. 22)

• Siga as etapas emthe section called “Antes de começar” (p. 34)para baixar o certificado digitalStarfield, convertê-lo em um arquivo TrustStore e anexar o arquivo TrustStore nos argumentos JVM aoseu aplicativo.

39

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

• Adicionar o DataStax Driver Java para Apache Cassandra para seu projeto Java. Certifique-se de quevocê está usando uma versão do driver compatível com o Apache Cassandra 3.11.2. Para obter maisinformações, consulte o .Documentação do DataStax Java Driver for Apache Cassandra.

• Adicione o plug-in de autenticação ao aplicativo. O plugin de autenticação suporta a versão 3.x doDataStax Driver Java para Apache Cassandra. Se você estiver usando o Apache Maven ou umsistema de compilação que possa usar dependências do Maven, adicione as seguintes dependênciasà suapom.xmlfile. Substitua a versão do plugin pela versão mais recente, conforme mostradoemRepositório GitHub.

<dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId> <version>3.0.3</version></dependency>

Etapa 2: Execute o aplicativo

Este exemplo de código mostra um aplicativo de linha de comando simples que cria um pool de conexõescom o Amazon Keyspaces. Ele confirma que a conexão é estabelecida executando uma consulta simples.

package <your package>;// add the following imports to your project

import software.aws.mcs.auth.SigV4AuthProvider; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session;

public class App { public static void main( String[] args ) { String endPoint = "cassandra.us-east-2.amazonaws.com"; int portNumber = 9142; Session session = Cluster.builder() .addContactPoint(endPoint) .withPort(portNumber) .withAuthProvider(new SigV4AuthProvider("us-east-2")) .withSSL() .build() .connect();

ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); }}

Observações de uso:

Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

40

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Usando um driver cliente Cassandra Python para acessar oAmazon Keyspaces programaticamenteNesta seção, mostramos como se conectar ao Amazon Keyspaces usando um driver de cliente Python.Para fornecer aos usuários e aplicativos credenciais para acesso programático aos recursos do AmazonKeyspaces, você poderá executar uma das seguintes ações:

• Crie credenciais específicas do serviço associadas a um específicoAWS Identity and AccessManagementUsuário (IAM).

• Para maior segurança, recomendamos criar chaves de acesso do IAM para usuários ou funçõesdo IAM que são usadas em todosAWSServiços da . O plug-in de autenticação Sigv4 do AmazonKeyspaces para drivers de cliente Cassandra permite autenticar chamadas para o Amazon Keyspacesusando chaves de acesso do IAM em vez de nome de usuário e senha. Para obter mais informações,consultethe section called “Credenciais do IAM para oAWSautenticação” (p. 19)

Tópicos• Antes de começar (p. 41)• Connect ao Amazon Keyspaces usando o driver Python para o Apache Cassandra e credenciais

específicas do serviço (p. 41)• Connect ao Amazon Keyspaces usando o driver DataStax Python para Apache Cassandra e o plug-in

de autenticação SigV4 (p. 42)

Antes de começarVocê precisa concluir a tarefa seguinte antes de começar.

O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexõescom os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, você precisa baixar umcertificado digital da Amazon e configurar o driver Python para usar o TLS.

Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmenteou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao Amazon Keyspacese continuar a fazê-lo se o cliente estiver se conectando ao Amazon Keyspaces com sucesso. Ocertificado Starfield fornece compatibilidade adicional com versões anteriores para clientes queusam autoridades de certificação mais antigas.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Connect ao Amazon Keyspaces usando o driver Python para o ApacheCassandra e credenciais específicas do serviçoO exemplo de código a seguir mostra como se conectar ao Amazon Keyspaces com um driver de clientePython e credenciais específicas do serviço.

from cassandra.cluster import Clusterfrom ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIREDfrom cassandra.auth import PlainTextAuthProvider

41

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

ssl_context = SSLContext(PROTOCOL_TLSv1_2 )ssl_context.load_verify_locations('path_to_file/sf-class2-root.crt')ssl_context.verify_mode = CERT_REQUIREDauth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword')cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)session = cluster.connect()r = session.execute('select * from system_schema.keyspaces')print(r.current_rows)

Observações de uso:

1. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo naprimeira etapa.

2. Verifique se oServiceUsernameeServicePasswordcorresponder ao nome de usuário e senhaque você obteve quando gerou as credenciais específicas do serviço seguindo as etapas paraGerarcredenciais específicas do serviço (p. 17).

3. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Connect ao Amazon Keyspaces usando o driver DataStax Python para ApacheCassandra e o plug-in de autenticação SigV4A seção a seguir mostra como usar o plug-in de autenticação Sigv4 para o código aberto DataStax DriverPython para o Apache Cassandra para acessar o Amazon Keyspaces (para o Apache Cassandra).

Se ainda não tiver feito isso, comece com a criação de credenciais para a função do IAM seguindo asetapas emthe section called “Credenciais do IAM para oAWSautenticação” (p. 19). Este tutorial usacredenciais temporárias, que exigem uma função do IAM. Para obter mais informações sobre credenciaistemporárias, consultethe section called “Usando credenciais temporárias para se conectar ao AmazonKeyspaces” (p. 23).

Em seguida, adicione o plugin de autenticação Python Sigv4 ao seu ambiente a partir doRepositórioGitHub.

pip install cassandra-sigv4

O exemplo de código a seguir mostra como se conectar ao Amazon Keyspaces usando o código abertoDataStax Driver Python para Cassandra e o plug-in de autenticação SigV4. O plugin depende daAWSSDKfor Python (Boto3). Ele usaboto3.sessionPara obter credenciais temporárias.

from cassandra.cluster import Clusterfrom ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIREDfrom cassandra.auth import PlainTextAuthProviderimport boto3from cassandra_sigv4.auth import SigV4AuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2)ssl_context.load_verify_locations('path_to_file/sf-class2-root.crt')ssl_context.verify_mode = CERT_REQUIRED

# use this if you want to use Boto to set the session parameters.boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE", aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", aws_session_token="AQoDYXdzEJr...<remainder of token>", region_name="us-east-2")auth_provider = SigV4AuthProvider(boto_session)

42

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

# Use this instead of the above line if you want to use the Default Credentials and not bother with a session.# auth_provider = SigV4AuthProvider()

cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)session = cluster.connect()r = session.execute('select * from system_schema.keyspaces')print(r.current_rows)

Observações de uso:

1. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo naprimeira etapa.

2. Verifique se oaws_access_key_id,aws_secret_access_key, e oaws_session_tokenCombineoAccess Key,Secret Access Key, eSession Tokenvocê obteve usandoboto3.session. Paraobter mais informações, consulte Credenciais no AWS SDK for Python (Boto3).

3. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Usando um driver de cliente Cassandra Node.js para acessar oAmazon Keyspaces programaticamenteEsta seção mostra como se conectar ao Amazon Keyspaces usando um driver de cliente Node.js. Parafornecer aos usuários e aplicativos credenciais para acesso programático aos recursos do AmazonKeyspaces, você poderá executar uma das seguintes ações:

• Crie credenciais específicas do serviço associadas a um específicoAWS Identity and AccessManagementUsuário (IAM).

• Para maior segurança, recomendamos criar chaves de acesso do IAM para usuários ou funçõesdo IAM que são usadas em todosAWSServiços da . O plug-in de autenticação Sigv4 do AmazonKeyspaces para drivers de cliente Cassandra permite autenticar chamadas para o Amazon Keyspacesusando chaves de acesso do IAM em vez de nome de usuário e senha. Para obter mais informações,consultethe section called “Credenciais do IAM para oAWSautenticação” (p. 19)

Tópicos• Antes de começar (p. 43)• Connect ao Amazon Keyspaces usando o Node.js DataStax Driver para Apache Cassandra e

credenciais específicas do serviço (p. 44)• Connect ao Amazon Keyspaces usando o DataStax Driver Node.js para Apache Cassandra e o plugin

de autenticação SigV4 (p. 44)

Antes de começar

Você precisa concluir a tarefa seguinte antes de começar.

O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexõescom os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, você precisa baixar umcertificado digital da Amazon e configurar o driver Python para usar o TLS.

Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmenteou em seu diretório inicial.

43

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao Amazon Keyspacese continuar a fazê-lo se o cliente estiver se conectando ao Amazon Keyspaces com sucesso. Ocertificado Starfield fornece compatibilidade adicional com versões anteriores para clientes queusam autoridades de certificação mais antigas.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Connect ao Amazon Keyspaces usando o Node.js DataStax Driver para ApacheCassandra e credenciais específicas do serviço

Configure seu driver para usar o certificado digital Starfield para TLS e autenticar usando credenciaisespecíficas do serviço. Por exemplo:

const cassandra = require('cassandra-driver');const fs = require('fs');const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');const sslOptions1 = { ca: [ fs.readFileSync('path_to_file/sf-class2-root.crt', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com', rejectUnauthorized: true };const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com'], localDataCenter: 'us-west-2', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 } });const query = 'SELECT * FROM system_schema.keyspaces'; client.execute(query) .then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));

Observações de uso:

1. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo naprimeira etapa.

2. Verifique se oServiceUsernameeServicePasswordcorresponder ao nome de usuário e senhaque você obteve quando gerou as credenciais específicas do serviço seguindo as etapas paraGerarcredenciais específicas do serviço (p. 17).

3. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Connect ao Amazon Keyspaces usando o DataStax Driver Node.js para ApacheCassandra e o plugin de autenticação SigV4

A seção a seguir mostra como usar o plug-in de autenticação Sigv4 para o código aberto DataStax DriverNode.js para o Apache Cassandra para acessar o Amazon Keyspaces (para o Apache Cassandra).

44

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Se ainda não tiver feito isso, crie credenciais para o usuário ou a função do IAM seguindo as etapas emthesection called “Credenciais do IAM para oAWSautenticação” (p. 19).

Adicione o plugin de autenticação Sigv4 Node.js ao seu aplicativo a partir doRepositório GitHub. O pluginsuporta a versão 4.x do driver DataStax Node.js para Cassandra e depende daAWSSDK para Node.js. EleusaAWSCredentialsProviderpara obter credenciais.

$ npm install aws-sigv4-auth-cassandra-plugin --save

Este exemplo de código mostra como definir uma instância específica da regiãodoSigV4AuthProviderComo o provedor de autenticação.

const cassandra = require('cassandra-driver');const fs = require('fs');const sigV4 = require('aws-sigv4-auth-cassandra-plugin');

const auth = new sigV4.SigV4AuthProvider({ region: 'us-west-2', accessKeyId:'AKIAIOSFODNN7EXAMPLE', secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'});

const sslOptions1 = { ca: [ fs.readFileSync('path_to_filecassandra/sf-class2-root.crt', 'utf-8')], host: 'cassandra.us-west-2.amazonaws.com', rejectUnauthorized: true};

const client = new cassandra.Client({ contactPoints: ['cassandra.us-west-2.amazonaws.com'], localDataCenter: 'us-west-2', authProvider: auth, sslOptions: sslOptions1, protocolOptions: { port: 9142 }});

const query = 'SELECT * FROM system_schema.keyspaces';

client.execute(query).then( result => console.log('Row from Keyspaces %s', result.rows[0])) .catch( e=> console.log(`${e}`));

Observações de uso:

1. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo naprimeira etapa.

2. Verifique se oaccessKeyIdesecretAccessKeyCombinar a chave de acesso e a chave de acessosecreta que você obteve usandoAWSCredentialsProvider. Para obter mais informações,consulteDefinir credenciais em Node.jsnoAWSSDK para JavaScript em Node.js.

3. Para armazenar chaves de acesso fora do código, consulte as melhores práticas emthe section called“Como gerenciar chaves de acesso” (p. 22).

4. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

45

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Usando um driver de cliente Cassandra .NET Core para acessaro Amazon Keyspaces programaticamenteEsta seção mostra como se conectar ao Amazon Keyspaces usando um driver de cliente .NET Core. Asetapas de configuração variam dependendo do ambiente e do sistema operacional, talvez seja necessáriomodificá-las de acordo. O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudara proteger as conexões com os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, vocêprecisa baixar um certificado digital Starfield e configurar seu driver para usar o TLS.

1. Faça o download do certificado Starfield e salve-o em um diretório local, tomando nota do caminho. Vejaa seguir um exemplo usando o PowerShell.

$client = new-object System.Net.WebClient$client.DownloadFile("https://certs.secureserver.net/repository/sf-class2-root.crt","path_to_file\sf-class2-root.crt")

2. Instale o CassandraCSharpDriver através do nuget, usando o console nuget.

PM> Install-Package CassandraCSharpDriver

3. O exemplo a seguir usa um projeto de console .NET Core C# para se conectar ao &MCS; e executaruma consulta.

using Cassandra;using System;using System.Collections.Generic;using System.Linq;using System.Net.Security;using System.Runtime.ConstrainedExecution;using System.Security.Cryptography.X509Certificates;using System.Text;using System.Threading.Tasks;

namespace CSharpKeyspacesExample{ class Program { public Program(){}

static void Main(string[] args) { X509Certificate2Collection certCollection = new X509Certificate2Collection(); X509Certificate2 amazoncert = new X509Certificate2(@"path_to_file\sf-class2-root.crt"); var userName = "ServiceUserName"; var pwd = "ServicePassword"; certCollection.Add(amazoncert); var awsEndpoint = "cassandra.us-east-2.amazonaws.com" ;

var cluster = Cluster.Builder() .AddContactPoints(awsEndpoint) .WithPort(9142) .WithAuthProvider(new PlainTextAuthProvider(userName, pwd)) .WithSSL(new SSLOptions().SetCertificateCollection(certCollection)) .Build();

var session = cluster.Connect(); var rs = session.Execute("SELECT * FROM system_schema.tables;"); foreach (var row in rs) {

46

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

var name = row.GetValue<String>("keyspace_name"); Console.WriteLine(name); } } }}

Observações de uso:a. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo na

primeira etapa.b. Verifique se oServiceUsernameeServicePasswordcorresponder ao nome de usuário e senha

que você obteve quando gerou as credenciais específicas do serviço seguindo as etapas paraGerarcredenciais específicas do serviço (p. 17).

c. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Usando um driver cliente Cassandra Go para acessar o AmazonKeyspaces programaticamenteEsta seção mostra como se conectar ao Amazon Keyspaces usando um driver cliente Go. Para forneceraos usuários e aplicativos credenciais para acesso programático aos recursos do Amazon Keyspaces,você poderá executar uma das seguintes ações:

• Crie credenciais específicas do serviço associadas a um específicoAWS Identity and AccessManagementUsuário (IAM).

• Para maior segurança, recomendamos criar chaves de acesso do IAM para usuários e funçõesdo IAM que são usadas em todosAWSServiços da . O plug-in de autenticação Sigv4 do AmazonKeyspaces para drivers de cliente Cassandra permite autenticar chamadas para o Amazon Keyspacesusando chaves de acesso do IAM em vez de nome de usuário e senha. Para obter mais informações,consultethe section called “Credenciais do IAM para oAWSautenticação” (p. 19)

Tópicos• Antes de começar (p. 47)• Connect ao Amazon Keyspaces usando o driver Gocql para Apache Cassandra e credenciais

específicas do serviço (p. 48)• Connect ao Amazon Keyspaces usando o driver Go para Apache Cassandra e o plug-in de

autenticação Sigv4 (p. 49)

Antes de começar

Você precisa concluir a tarefa seguinte antes de começar.

O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexõescom os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, você precisa baixar umcertificado digital da Amazon e configurar o driver Python para usar o TLS.

Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmenteou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

47

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

Note

Você também pode usar o certificado digital da Amazon para se conectar ao Amazon Keyspacese continuar a fazê-lo se o cliente estiver se conectando ao Amazon Keyspaces com sucesso. Ocertificado Starfield fornece compatibilidade adicional com versões anteriores para clientes queusam autoridades de certificação mais antigas.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Connect ao Amazon Keyspaces usando o driver Gocql para Apache Cassandra ecredenciais específicas do serviço

1. Crie um diretório para seu aplicativo.

mkdir ./gocqlexample

2. Navegue até o novo diretório.

cd gocqlexample

3. Crie um arquivo para o aplicativo.

touch cqlapp.go

4. Faça o download do driver Go.

go get github.com/gocql/gocql

5. Adicione o código de exemplo a seguir ao arquivo cqlapp.go.

package main

import ( "fmt" "github.com/gocql/gocql" "log")

func main() {

// add the Amazon Keyspaces service endpoint cluster := gocql.NewCluster("cassandra.us-east-2.amazonaws.com:9142") // add your service specific credentials cluster.Authenticator = gocql.PasswordAuthenticator{ Username: "ServiceUserName", Password: "ServicePassword"} // provide the path to the sf-class2-root.crt cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/sf-class2-root.crt", }

// Override default Consistency to LocalQuorum cluster.Consistency = gocql.LocalQuorum

// Disable initial host lookup cluster.DisableInitialHostLookup = true session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) }

48

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

defer session.Close()

// run a sample query from the system keyspace var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } session.Close()}

Observações de uso:a. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo na

primeira etapa.b. Verifique se oServiceUsernameeServicePasswordcorresponder ao nome de usuário e senha

que você obteve quando gerou as credenciais específicas do serviço seguindo as etapas paraGerarcredenciais específicas do serviço (p. 17).

c. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

6. Construa o programa.

go build cqlapp.go

7. Execute o programa.

./cqlapp

Connect ao Amazon Keyspaces usando o driver Go para Apache Cassandra e oplug-in de autenticação Sigv4

O exemplo de código a seguir mostra como usar o plug-in de autenticação Sigv4 para o driver Go decódigo aberto para acessar o Amazon Keyspaces (para Apache Cassandra).

Se ainda não tiver feito isso, crie credenciais para o usuário ou a função do IAM seguindo as etapas emthesection called “Credenciais do IAM para oAWSautenticação” (p. 19).

Adicione o plug-in de autenticação Go Sigv4 ao seu aplicativo a partir doRepositório GitHub. O pluginsuporta a versão 4.x do driver Go de código aberto para Cassandra e depende doAWSSDK for Go.

$ go mod init$ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin

Neste exemplo de código, o endpoint do Amazon Keyspaces é representado peloClusterClasse. Ele usaoAwsAuthenticatorpara a propriedade autenticador do cluster para obter credenciais.

package main

import ( "fmt" "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4" "github.com/gocql/gocql" "log")

49

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

func main() { // configuring the cluster options cluster := gocql.NewCluster("cassandra.us-west-2.amazonaws.com:9142") var auth sigv4.AwsAuthenticator = sigv4.NewAwsAuthenticator() auth.Region = "us-west-2" auth.AccessKeyId = "AKIAIOSFODNN7EXAMPLE" auth.SecretAccessKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

cluster.Authenticator = auth

cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/sf-class2-root.crt", } cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = true

session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) return } defer session.Close()

// doing the query var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) }}

Observações de uso:

1. Substituir"path_to_file/sf-class2-root.crt"com o caminho para o certificado salvo naprimeira etapa.

2. Verifique se oAccessKeyIdeSecretAccessKeyCombinar a chave de acesso e a chave de acessosecreta que você obteve usandoAwsAuthenticator. Para obter mais informações, consulteConfiguraraAWSSDK for GonoAWS SDK for Go.

3. Para armazenar chaves de acesso fora do código, consulte as melhores práticas emthe section called“Como gerenciar chaves de acesso” (p. 22).

4. Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

Usando um driver cliente Cassandra Perl para acessar o AmazonKeyspaces programaticamenteEsta seção mostra como se conectar ao Amazon Keyspaces usando um driver de cliente Perl. Para estaamostra de código, usamos o Perl 5. O Amazon Keyspaces requer o uso do Transport Layer Security(TLS) para ajudar a proteger as conexões com os clientes.

Important

Para criar uma conexão segura, nossos exemplos de código usam o certificado digital Starfieldpara autenticar o servidor antes de estabelecer a conexão TLS. O driver Perl não valida ocertificado Amazon SSL do servidor, o que significa que você não pode confirmar se está se

50

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsando um driver cliente Cassandra

conectando ao Amazon Keyspaces. A segunda etapa, configurar o driver para usar o TLS ao seconectar ao Amazon Keyspaces ainda é necessária e garante que os dados transferidos entre ocliente e o servidor sejam criptografados.

1. Faça o download do driver Cassandra DBI dehttps://metacpan.org/pod/DBD::Cassandrae instale o driverem seu ambiente Perl. As etapas exatas dependem do ambiente. Veja a seguir um exemplo comum.

cpanm DBD::Cassandra

2. Crie um arquivo para o aplicativo.

touch cqlapp.pl

3. Adicione o código de exemplo a seguir ao arquivo cqlapp.pl.

use DBI;my $user = "ServiceUserName";my $password = "ServicePassword";my $db = DBI->connect("dbi:Cassandra:host=cassandra.us-east-2.amazonaws.com;port=9142;tls=1;", $user, $password);

my $rows = $db->selectall_arrayref("select * from system_schema.keyspaces"); print "Found the following Keyspaces...\n"; for my $row (@$rows) { print join(" ",@$row['keyspace_name']),"\n"; }

$db->disconnect;

Important

Verifique se oServiceUsernameeServicePasswordcorresponder ao nome de usuárioe senha que você obteve quando gerou as credenciais específicas do serviço seguindo asetapas paraGerar credenciais específicas do serviço (p. 17).

Note

Para uma lista de endpoints disponíveis, consultethe section called “Service endpoints(Endpoints de serviço)” (p. 24).

4. Execute o aplicativo.

perl cqlapp.pl

51

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Pré-requisitos

Primeiros passos a usar o AmazonKeyspaces (para Apache Cassandra)

Esta seção é para você se você é novo no Apache Cassandra e no Amazon Keyspaces (para ApacheCassandra). Nesta seção, você instala todos os programas e drivers necessários para usar com sucesso oAmazon Keyspaces.

Esta seção abrange os seguintes tópicos:

Tópicos• Pré-requisitos e considerações do tutorial (p. 52)• Tutorial Etapa 1: Criar um espaço de chave e uma tabela no Amazon Keyspaces (p. 53)• Tutorial Etapa 2: Criar, ler, atualizar e excluir dados (CRUD) (p. 57)• Tutorial Etapa 3: Excluir uma tabela e um espaço de chave no Amazon Keyspaces (p. 62)

Pré-requisitos e considerações do tutorialAntes de começar este tutorial, siga oAWSinstruções de configuração emAcessando o Amazon Keyspaces(para Apache Cassandra) (p. 15). Essas etapas incluem se inscrever paraAWSe criando umAWS Identityand Access ManagementUsuário (IAM) com acesso ao Amazon Keyspaces.

Além disso, se você estiver concluindo o tutorial usandocqlshou um driver cliente Cassandra licenciadoApache 2.0, preencha as instruções de configuração emO uso docqlshpara se conectar ao AmazonKeyspaces (p. 26).

Depois de concluir as etapas obrigatórias, prossiga paraTutorial Etapa 1: Criar um espaço de chave e umatabela no Amazon Keyspaces (p. 53).

52

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 1: Criar um espaço de chave e uma tabela

Tutorial Etapa 1: Criar um espaço de chave e umatabela no Amazon Keyspaces

Nesta seção, você cria um espaço de chaves e adiciona uma tabela a ele usando o console.

Note

Antes de começar, verifique se você tem todas asPré-requisitos do tutorial.

Tópicos• Criando um espaço de chave (p. 53)• Criar uma tabela (p. 54)

Criando um espaço de chaveUMAKeyspacegrupos de tabelas relacionadas que são relevantes para um ou mais aplicativos. Um espaçode chave contém uma ou mais tabelas e define a estratégia de replicação para todas as tabelas que elecontém. Para obter mais informações sobre keyspaces, consulte os seguintes tópicos:

• Trabalhando com espaços de chave:the section called “Criar keyspaces” (p. 117)• Instruções DDL (Data Definition Language):Keyspaces (p. 259)• Cotas para o Amazon Keyspaces (para Apache Cassandra) (p. 272)

Ao criar um espaço de chave, você deve especificar o nome do espaço de chave.

Note

A estratégia de replicação do espaço chave deveserSingleRegionStrategy.SingleRegionStrategyReplica dados em três zonas dedisponibilidade em suaRegião da AWS.

Usar o console

Para criar um espaço de chave usando o console

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneKeyspaces.3. SelecioneCriar Keyspace.4. NoNome do Keyspacecaixa, insiramyGSGKeyspacecomo o nome do seu espaço de chave.

Restrições de nome:

• Não pode ser vazio.• Caracteres permitidos: caracteres alfanuméricos e sublinhados (_).• O tamanho máximo é de 48 caracteres.

5. Para criar o espaço de chave, escolhaCriar Keyspace.6. Verifique se o espaço de chavemyGSGKeyspacefoi criado fazendo o seguinte:

a. No painel de navegação, selecioneKeyspaces.

53

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criar uma tabela

b. Localize o espaço da chavemyGSGKeyspacena lista de espaços de chave.

Uso do CQL

O procedimento a seguir cria um keyspace usando CQL.

Para criar um espaço de chave usando o CQL

1. Abra um shell de comando e digite o seguinte:

cqlsh

2. Crie seu espaço de chave usando o seguinte comando CQL.

CREATE KEYSPACE IF NOT EXISTS "myGSGKeyspace" WITH REPLICATION = {'class': 'SingleRegionStrategy'};

SingleRegionStrategyusa um fator de replicação de três e replica dados em trêsAWSZonas dedisponibilidade em sua região.

Note

O Amazon Keyspaces assume todas as entradas em minúsculas, a menos que você acoloque entre aspas. Nesse caso, observe"myGSGKeyspace".

3. Verifique se seu espaço de chave foi criado.

SELECT * from system_schema.keyspaces ;

Seu espaço de chave deve ser listado.

Criar uma tabelaUma tabela é onde seus dados são organizados e armazenados. A chave primária da tabela determinacomo os dados serão particionados em sua tabela. A chave primária é composta por uma chave departição necessária e uma ou mais colunas de clustering opcionais. Os valores combinados que compõema chave primária devem ser exclusivos em todos os dados da tabela. Para obter mais informações sobretabelas, consulte os seguintes tópicos:

• Trabalhar com tabelas:the section called “Criar tabelas” (p. 118)• Declarações DDL:Tabelas (p. 261)• Gerenciamento de recursos de tabela:Gerenciamento de recursos sem servidor (p. 100)• Monitorando a utilização de recursos da tabela:the section called “Monitoramento com

CloudWatch” (p. 226)• Cotas para o Amazon Keyspaces (para Apache Cassandra) (p. 272)

Ao criar uma tabela, você especifica o seguinte:

• O nome da tabela.• O nome e o tipo de dados de cada coluna na tabela.• A chave primária para a tabela.

• Chave de partição— Obrigatório• Colunas de agrupamento— Opcional

54

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criar uma tabela

Use o procedimento a seguir para criar uma tabela com as colunas, tipos de dados, chave de partição ecoluna de agrupamento especificados.

Usar o console

O procedimento a seguir cria a tabelaemployees_tblCom essas colunas e tipos de dados.

ID textname textregion textdivision textproject textrole textpay_scale intvacation_hrs floatmanager_id text

Para criar uma tabela usando o console

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneKeyspaces.3. SelecionemyGSGKeyspacecomo o espaço de chave em que você deseja criar esta tabela.4. Escolha Create table.5. NoNome da tabelacaixa, insiraemployees_tblComo nome para a tabela.

Restrições de nome:

• Não pode ser vazio.• Caracteres permitidos: caracteres alfanuméricos e sublinhados (_).• O tamanho máximo é de 48 caracteres.

6. NoColumnsSeção, repita as etapas a seguir para cada coluna que você deseja adicionar a estatabela.

Adicione as colunas e os tipos de dados a seguir.

id textname textregion textdivision textproject textrole textpay_scale intvacation_hrs floatmanager_id text

a. Name (Nome)— Insira um nome para a coluna.

Restrições de nome:

• Não pode ser vazio.• Caracteres permitidos: caracteres alfanuméricos e sublinhados (_).• O tamanho máximo é de 48 caracteres.

b. Tipo— Na lista de tipos de dados, escolha o tipo de dados desta coluna.c. Se você quiser adicionar outra coluna, escolhaAdicionar coluna.

55

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criar uma tabela

7. Selecioneidcomo uma chave de partição emChave de partição. Uma chave de partição é necessáriapara cada tabela. Uma chave de partição pode ser feita de uma ou mais colunas.

8. Adicionardivisioncomo uma coluna de agrupamento. As colunas de agrupamento são opcionais edeterminam a ordem de classificação em cada partição.

a. Para adicionar uma coluna de agrupamento, escolhaAdicionar coluna de agrupamento.b. NoColunaLista, escolhadivisão. NoPedidoLista, escolhaASCpara classificar em ordem crescente

sobre os valores nesta coluna. (Selecione o)DESCpara ordem decrescente.)9. NoConfigurações da tabelaSeção, escolhaConfigurações padrão.10. Escolha Create table.11. Verifique se sua tabela foi criada.

a. No painel de navegação, selecione Tables (Tabelas).b. Confirme se sua tabela está na lista de tabelas.c. Escolha o nome da tabela.d. Confirme se todas as colunas e tipos de dados estão corretos.

Note

As colunas podem não estar listadas na mesma ordem em que você as adicionou àtabela.

e. Na coluna de agrupamento, confirme quedivisãoé identificado comverdade. Todas as outrascolunas da tabela devem serfalso.

Uso do CQL

O procedimento a seguir cria uma tabela com as colunas e tipos de dados a seguir usando CQL.Oidcoluna deve ser a chave de partição.

id textname textregion textdivision textproject textrole textpay_scale intvacation_hrs floatmanager_id text

Para criar uma tabela usando o CQL

1. Abra um shell de comando e digite o seguinte:

cqlsh

2. Nocqlshprompt (cqlsh>), especifique um espaço de chave para criar sua tabela.

USE "myGSGKeyspace" ;

3. No prompt do espaço de chave (cqlsh:keyspace_name>), crie sua tabela inserindo o seguintecódigo na janela de comando.

CREATE TABLE IF NOT EXISTS "myGSGKeyspace".employees_tbl ( id text, name text, region text,

56

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Operações de CRUD

division text, project text, role text, pay_scale int, vacation_hrs float, manager_id text, PRIMARY KEY (id,division)) WITH CLUSTERING ORDER BY (division ASC) ;

Note

ASCé a ordem de agrupamento padrão. Também é possível especificarDESCPara ordemdescendente.

Observe que oidcoluna deve ser a chave de partição. Então,divisioné a coluna de agrupamentoordenada por ordem crescente (ASC).

4. Verifique se sua tabela foi criada.

SELECT * from system_schema.tables WHERE keyspace_name='myGSGKeyspace' ;

Sua tabela deve ser listada.5. Verifique a estrutura da tabela.

SELECT * FROM system_schema.columns WHERE keyspace_name = 'myGSGKeyspace' AND table_name = 'employees_tbl' ;

Confirme se todas as colunas e tipos de dados são como você esperava. A ordem das colunas podeser diferente daCREATEinstrução.

Para executar operações CRUD (criação, atualização e exclusão) nos dados da tabela, continue parathesection called “Etapa 2: Operações de CRUD” (p. 57).

Tutorial Etapa 2: Criar, ler, atualizar e excluir dados(CRUD)

Nesta seção, você usa o editor CQL no console do para executar operações CRUD (criação, atualização eexclusão) nos dados da tabela. Também é possível executar os comandos usandocqlsh.

Tópicos• Tutorial: Inserindo e carregando dados em uma tabela do Amazon Keyspaces (p. 57)• Tutorial: Lida de uma tabela do Amazon Keyspaces (p. 59)• Tutorial: Atualizar dados em uma tabela do Amazon Keyspaces (p. 61)• Tutorial: Excluir dados em uma tabela do Amazon Keyspaces (p. 61)

Tutorial: Inserindo e carregando dados em uma tabelado Amazon KeyspacesPara criar dados em seuemployees_tbltabela, use oINSERTinstrução para adicionar uma única linha.

57

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criar

1. Antes de gravar dados em sua tabela do Amazon Keyspaces usando cqlsh, você deve definira consistência de gravação para a sessão cqlsh atual comoLOCAL_QUORUM. Para obter maisinformações sobre os níveis de consistência compatíveis, consultethe section called “Níveis deconsistência de gravação” (p. 13). Observe que essa etapa não é necessária se você estiver usando oeditor CQL noAWS Management Console.

CONSISTENCY LOCAL_QUORUM;

2. Para inserir um único registro, execute o comando a seguir no editor CQL.

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id)VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;

3. Verifique se os dados foram adicionados corretamente à tabela executando o comando a seguir.

SELECT * FROM "myGSGKeyspace".employees_tbl ;

Para inserir vários registros de um arquivo usando cqlsh

1. Faça o download do arquivo de dados de amostra (employees.csv) contido no arquivo de arquivo aseguirsampledata.zip. Este arquivo CSV (valores separados por vírgula) contém os seguintes dados.Lembre-se do caminho no qual você salva o arquivo.

2. Abra um shell de comando e digite o seguinte:

cqlsh

3. Nocqlshprompt (cqlsh>), especifique um espaço de chave.

USE "myGSGKeyspace" ;

4. Definir consistência de gravação comoLOCAL_QUORUM. Para obter mais informações sobre os níveisde consistência compatíveis, consultethe section called “Níveis de consistência de gravação” (p. 13).

CONSISTENCY LOCAL_QUORUM;

5. No prompt do espaço de chave (cqlsh:keyspace_name>) execute a consulta a seguir.

COPY employees_tbl (id,name,project,region,division,role,pay_scale,vacation_hrs,manager_id) FROM 'path-to-the-csv-file/employees.csv' WITH delimiter=',' AND header=TRUE ;

6. Verifique se os dados foram adicionados corretamente à sua tabela executando a seguinte consulta.

SELECT * FROM employees_tbl ;

58

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Read

Tutorial: Lida de uma tabela do Amazon KeyspacesNoTutorial: Inserindo e carregando dados em uma tabela do Amazon Keyspaces (p. 57)seção, vocêusou oSELECTpara verificar se você adicionou dados à sua tabela com êxito. Nesta seção, você refina ouso doSELECTpara exibir colunas específicas e somente linhas que atendem a critérios específicos.

A forma geral doSELECTA instrução é a seguir.

SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;

Tópicos• Selecionando todos os dados em sua tabela (p. 59)• Selecionando um subconjunto de colunas (p. 59)• Selecionando um subconjunto de linhas (p. 59)

Selecionando todos os dados em sua tabelaA forma mais simples doSELECTinstrução retorna todos os dados em sua tabela.

Important

Em um ambiente de produção, geralmente não é uma prática recomendada executar essecomando, que retorna todos os dados em sua tabela.

Para selecionar todos os dados da tabela

• Execute a seguinte consulta.

SELECT * FROM "myGSGKeyspace".employees_tbl ;

Usando o caractere wild-card (*) para ocolumn_listseleciona todas as colunas.

Selecionando um subconjunto de colunasPara consultar um subconjunto de colunas

• Para recuperar apenas oid,name, emanager_idcolunas, execute a consulta a seguir.

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

A saída conterá somente as colunas especificadas na ordem listada naSELECTinstrução.

Selecionando um subconjunto de linhasAo consultar um conjunto de dados grande, talvez você queira apenas registros que atendama determinados critérios. Para fazer isso, você pode anexar umWHEREcláusula até o final donossoSELECTinstrução.

Para consultar um subconjunto de linhas

• Para recuperar somente o registro do funcionário com o id'234-56-7890', execute a consulta aseguir.

59

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Read

SELECT * FROM "myGSGKeyspace".employees_tbl WHERE id='234-56-7890' ;

O precedenteSELECTinstrução retorna somente as linhas em que oidé234-56-7890.

Noções básicas doWHEREcláusula

OWHEREcláusula é usada para filtrar os dados e retornar somente os dados que atendem aos critériosespecificados. Os critérios especificados podem ser uma condição simples ou uma condição composta.

Como usar condições em umWHEREcláusula

• Uma condição simples — Uma única coluna.

WHERE column_name=value

Você pode usar uma condição simples em umWHEREcláusula se alguma destas condições forematendidas:• A coluna é a única coluna na chave de partição da tabela.• Você adicionaALLOW FILTERINGapós a condição noWHERECláusula.

Lembre-se de que usarALLOW FILTERINGpode resultar em desempenho inconsistente,especialmente com tabelas grandes e multiparticionadas.

• Uma condição composta — Várias condições simples conectadas porAND.

WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...

Você pode usar condições compostas em umWHEREcláusula se alguma destas condições forematendidas:• As colunas noWHEREa cláusula corresponde exatamente às colunas na chave de partição da tabela,

nem mais nem menos.• Você adicionaALLOW FILTERINGapós a condição composta noWHERECláusula, como no exemplo a

seguir.

SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;

Lembre-se de que usarALLOW FILTERINGpode resultar em desempenho inconsistente,especialmente com tabelas grandes e multiparticionadas.

Experimente

Crie suas próprias consultas CQL para encontrar o seguinte em seuemployees_tbltabela:

• Encontre oname,project, eidde todos os funcionários.• Encontre qual projetoBobo estagiário está trabalhando (inclua pelo menos seu nome, projeto e papel na

saída).• Avançado Crie um aplicativo para encontrar todos os funcionários que têm o mesmo gerente queBobO

estagiário. DICA: Isso pode levar mais de uma consulta.• Avançado Crie um aplicativo para encontrar colunas selecionadas de todos os funcionários que

trabalham no projetoNightFlight. DICA: Resolver isso pode exigir várias instruções.

60

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Atualização

Tutorial: Atualizar dados em uma tabela do AmazonKeyspacesPara atualizar os dados noemployees_tbltabela, use oUPDATEinstrução.

A forma geral doUPDATEA instrução é a seguir.

UPDATE table_name SET column_name=new_value WHERE primary_key=value ;

Tip

• Você pode atualizar várias colunas usando uma lista separada por vírgula decolumn_namesEvalores, como no exemplo a seguir.

UPDATE my_table SET col1='new_value_1', col2='new_value2' WHERE id='12345' ;

• Se a chave primária for composta de várias colunas, todas as colunas de chave primária e seusvalores devem ser incluídos noWHERECláusula.

• Você não pode atualizar nenhuma coluna na chave primária porque isso alteraria a chaveprimária do registro.

Para atualizar uma única célula

Usar a doemployees_tbltabela, dê ao funcionário com id567-89-0123um aumento.

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale=5 WHERE id='567-89-0123' AND division='Marketing' ;

Verifique se a escala de pagamento do funcionário está agora5.

SELECT * FROM "myGSGKeyspace".employees_tbl WHERE id='567-89-0123' ;

ExperimenteAvançado Sua empresa contratou Bob, o estagiário. Mude seu registro para que seu papel seja'IC'e suaescala salarial é2.

Tutorial: Excluir dados em uma tabela do AmazonKeyspacesPara excluir dados em seuemployees_tbltabela, use oDELETEinstrução.

Você pode excluir dados de uma linha ou de uma partição. Tenha cuidado ao excluir dados, porque asexclusões são irreversíveis.

Excluir uma ou todas as linhas de uma tabela não exclui a tabela. Assim, você pode repreenchê-lo comdados. A exclusão de uma tabela exclui a tabela e todos os dados nela. Para usar a tabela novamente,você deve recriá-la e adicionar dados a ela. A exclusão de um espaço de chave exclui o espaço dechave e todas as tabelas dentro dele. Para usar o espaço de chave e as tabelas, você deve recriá-los epreenchê-los com dados.

61

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 3: Limpeza (opcional)

Exclusão de célulasA exclusão de uma coluna de uma linha remove os dados da célula especificada. Quando você exibe essacoluna usando umSELECTinstrução, os dados são exibidos comonulo, embora um valor nulo não sejaarmazenado nesse local.

A sintaxe geral para excluir uma ou mais colunas específicas é a seguinte.

DELETE column_name1[, column_name2...] FROM table_name WHERE condition ;

Na suaemployees_tbltabela, você pode ver que o CEO tem"None"para um gerente. Primeiro, excluaessa célula para que você não esteja carregando nenhum dado nela.

Para excluir uma célula específica

1. Execute o seguinteDELETEConsulte o.

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive';

2. Verifique se a exclusão foi feita conforme o esperado.

SELECT * FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive';

Exclusão de linhasPode haver um momento em que você precise excluir uma linha inteira, como quando um funcionário seaposenta. A sintaxe geral para excluir uma linha é a seguinte.

DELETE FROM table_name WHERE condition ;

Para excluir uma linha

1. Execute o seguinteDELETEConsulte o.

DELETE FROM "myGSGKeyspace".employees_tbl WHERE id='456-78-9012' AND division='Engineering';

2. Verifique se a exclusão foi feita conforme o esperado.

SELECT * FROM "myGSGKeyspace".employees_tbl WHERE id='456-78-9012' AND division='Engineering';

Tutorial Etapa 3: Excluir uma tabela e um espaçode chave no Amazon Keyspaces

Para evitar serem cobrados por tabelas e dados não necessários, exclua todas as tabelas e keyspacesque você não está usando. Quando você exclui uma tabela, a tabela e seus dados são excluídos e vocêpára de acumular cobranças por eles. No entanto, o espaço de teclas permanece. Quando você exclui

62

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exclusão de uma tabela

um espaço de chave, o espaço de chave e todas as suas tabelas são excluídos e você pára de acumularcobranças por elas.

Exclusão de uma tabelaVocê pode excluir uma tabela usando o console ou o CQL. Quando você excluir uma tabela, a tabela etodos os seus dados são excluídos.

Usar o console

O procedimento a seguir exclui uma tabela e todos os seus dados usando oAWS Management Console.

Para excluir uma tabela usando o console

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas).3. Escolha a caixa à esquerda do nome de cada tabela que você deseja excluir.4. Escolha Delete (Excluir).5. NoExcluir tabelaTela, insiraDeleteNa caixa. Em seguida, escolhaExcluir tabela.6. Para verificar se a tabela foi excluída, escolhaTabelasNo painel de navegação, confirme se

oemployees_tblA tabela não está mais listada.

Uso do CQL

O procedimento a seguir excluir uma tabela e todos os seus dados usando CQL.

Para excluir uma tabela usando o CQL

1. Abra um shell de comando e digite o seguinte:

cqlsh

2. Excluir sua tabela inserindo o comando a seguir no prompt do keyspace (cqlsh:keyspace_name>).

DROP TABLE IF EXISTS "myGSGKeyspace".employees_tbl ;

3. Verifique se sua tabela foi excluída.

SELECT * FROM system_schema.tables WHERE keyspace_name = 'myGSGKeyspace' ;

Sua tabela não deve ser listada.

Excluindo um espaço de chaveÉ possível excluir um espaço de chave usando oAWS Management Consoleou CQL. Quando você excluium espaço de chave, o espaço de chave e todas as tabelas e dados são excluídos.

Como usar a AWS Management Console

O procedimento a seguir excluir um espaço de chaves e todas as tabelas e dados do usando a guiaAWSManagement Console.

63

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Excluindo um espaço de chave

Para excluir um espaço de chave usando o console

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneKeyspaces.3. Escolha a caixa à esquerda do nome de cada keyspace que você deseja excluir.4. Escolha Delete (Excluir).5. NoExcluir KeyspaceTela, insiraDeleteNa caixa. Em seguida, escolhaExcluir Keyspace.6. Para verificar se o espaço de chavemyGSGKeyspacefoi excluído, escolhaKeyspacesno painel

de navegação e confirme que ele não está mais listado. Como você excluiu o espaço de chave,oemployees_tblTabela emTabelasTambém não deve ser listados.

Uso do CQL

O procedimento a seguir exclui um espaço de chave e todas as tabelas e dados usando CQL.

Para excluir um espaço de chave usando o CQL

1. Abra um shell de comando e digite o seguinte:

cqlsh

2. Excluir o espaço de chaves inserindo o comando a seguir no prompt do keyspace(cqlsh:keyspace_name>).

DROP KEYSPACE IF EXISTS "myGSGKeyspace" ;

3. Verifique se o espaço de chaves foi excluído.

SELECT * from system_schema.keyspaces ;

Seu espaço de chave não deve ser listado.

64

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Migração para o Amazon KeyspacesO Amazon Keyspaces (for Apache Cassandra) é um serviço de banco de dados compatível com ApacheCassandra, escalável, de alta disponibilidade e gerenciado. Você pode migrar dados para o AmazonKeyspaces a partir de bancos de dados Cassandra em execução no local ou no Amazon Elastic ComputeCloud (Amazon EC2) usando as etapas desta seção.

Recomendamos que você siga estas práticas recomendadas para garantir que sua migração seja bem-sucedida:

• Divida a migração em componentes menores.

Considere as seguintes unidades de migração e sua potencial pegada em termos de tamanho de dadosbrutos. Migrar quantidades menores de dados em uma ou mais fases pode ajudar a simplificar suamigração.

Por cluster— Migre todos os seus dados do Cassandra de uma só vez. Essa abordagem pode ser boapara clusters menores.

Por keyspace ou tabela— Divida sua migração em grupos de espaços de chave ou tabelas. Essaabordagem pode ajudá-lo a migrar dados em fases com base em seus requisitos para cada carga detrabalho.

Por dados— considere migrar dados para um grupo específico de usuários ou produtos, para reduzirainda mais o tamanho dos dados.

• Priorize quais dados migrar primeiro com base na simplicidade.

Considere se você tem dados que poderiam ser migrados primeiro com mais facilidade — por exemplo,dados que não mudam em horários específicos, dados de trabalhos em lote noturnos, dados não usadosdurante horas off-line ou dados de aplicativos internos.

• Use ferramentas específicas.• Comece rapidamente com o carregamento de dados no Amazon Keyspaces usando o cqlshCOPYFROMcommand. cqlsh está incluído no Apache Cassandra e é mais adequado para carregar pequenosconjuntos de dados ou dados de teste. para o step-by-step Para obter instruções, consultethe sectioncalled “Carregamento de dados usando o cqlsh” (p. 66).

• Para cargas de trabalho de produção com grandes conjuntos de dados, você pode usar o DataStaxCarregador em massa para Apache Cassandra para carregar dados no Amazon Keyspaces usandoodsbulkcomando. O DSBulk fornece recursos de importação mais robustos e está disponívelnoRepositório GitHub. para o step-by-step Para obter instruções, consultethe section called“Carregamento de dados usando o DSBulk” (p. 74).

• Para saber como usar o conector Apache Cassandra Spark para gravar dados no Amazon Keyspaces,consulteIntegração com o Apache Spark (p. 147).

• Para migrações complexas, considere usar uma ferramenta de extração, transformação e carga (ETL).Você pode usar o Amazon EMR para executar cargas de trabalho de transformação de dados deforma rápida e eficaz. Para obter mais informações, consulte o Guia de gerenciamento do AmazonEMR.

Tópicos• Tutorial: Carregamento de dados no Amazon Keyspaces usando o cqlsh (p. 66)• Tutorial: Carregamento de dados no Amazon Keyspaces usando o DSBulk (p. 74)

65

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Carregamento de dados usando o cqlsh

Tutorial: Carregamento de dados no AmazonKeyspaces usando o cqlsh

Esse step-by-step O tutorial orienta você na migração de dados do Apache Cassandra para o AmazonKeyspaces usando ocqlsh COPYcomando. Neste tutorial, você faz o seguinte:

Tópicos• Pré-requisitos (p. 66)• Etapa 1: Crie o arquivo CSV de origem e a tabela de destino (p. 66)• Etapa 2: Preparar os dados (p. 67)• Etapa 3: Definir a capacidade de transferência para a tabela (p. 69)• Etapa 4: Configurecqlsh COPY FROMconfigurações (p. 70)• Etapa 5: Execute acqlsh COPY FROMordem (p. 71)• Solução de problemas (p. 72)

Pré-requisitosÉ necessário concluir as seguintes tarefas antes de iniciar este tutorial.

1. Se você ainda não tiver feito isso, cadastre-se em umConta da AWSseguindo as etapas emthe sectioncalled “Como se cadastrar no AWS” (p. 15).

2. Crie credenciais específicas do serviço seguindo as etapas emthe section called “Como gerarcredenciais específicas do serviço usando o console” (p. 18).

3. Configure a conexão do shell Cassandra Query Language (cqlsh) e confirme se você pode seconectar ao Amazon Keyspaces seguindo as etapas emthe section called “Usar o cqlsh” (p. 26).

Etapa 1: Crie o arquivo CSV de origem e a tabela dedestinoPara este tutorial, usamos um arquivo de valores separados por vírgulas (CSV) com o nome de valoresseparados por vírgula (CSV)keyspaces_sample_table.csvcomo o arquivo de origem para a migraçãode dados. O arquivo de amostra fornecido contém algumas linhas de dados para uma tabela com onomebook_awards.

1. Crie o arquivo de origem. Você pode escolher uma das seguintes opções:• Baixe o arquivo CSV de exemplo (keyspaces_sample_table.csv) contido no

seguinte arquivosamplemigration.zip. Descompacte o arquivo e anote o caminhoparakeyspaces_sample_table.csv.

• Para preencher um arquivo CSV com seus próprios dados armazenados em um banco de dadosApache Cassandra, você pode preencher o arquivo CSV de origem usando acqlsh COPYTOinstrução, conforme mostrado no exemplo a seguir.

cqlsh localhost 9042 -u "username" -p "password" --execute "COPY mykeyspace.mytable TO 'keyspaces_sample_table.csv' WITH HEADER=true"

Verifique se o arquivo CSV que você criar atende aos seguintes requisitos:

• A primeira linha contém os nomes das colunas.

66

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Preparar os dados

• Os nomes das colunas no arquivo CSV de origem correspondem aos nomes das colunas natabela de destino.

• Os dados são delimitados por uma vírgula.• Todos os valores de dados são tipos de dados Amazon Keyspaces válidos. Consulte the

section called “Tipos de dados” (p. 255).2. Crie o keyspace e a tabela de destino nos Amazon Keyspaces.

a. Connect ao Amazon Keyspaces usandocqlsh, substituindo o ponto de extremidade do serviço, onome de usuário e a senha no exemplo a seguir pelos seus próprios valores.

cqlsh cassandra.us-east-2.amazonaws.com 9142 -u "111122223333" -p "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --ssl

b. Crie um novo keyspace com o nomecatalogconforme mostrado no exemplo a seguir.

CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};

c. Quando o novo keyspace estiver disponível, use o código a seguir para criar a tabela dedestinobook_awards.

CREATE TABLE "catalog.book_awards" ( year int, award text, rank int, category text, book_title text, author text, publisher text, PRIMARY KEY ((year, award), category, rank) );

Se o Apache Cassandra for sua fonte de dados original, uma maneira simples de criar a tabela dedestino do Amazon Keyspaces com cabeçalhos correspondentes é gerar oCREATE TABLEinstruçãoda tabela de origem, conforme mostrado na instrução a seguir.

cqlsh localhost 9042 -u "username" -p "password" --execute "DESCRIBE TABLE mykeyspace.mytable;"

Em seguida, crie a tabela de destino no Amazon Keyspaces com os nomes de coluna e os tipos dedados correspondentes à descrição da tabela de origem do Cassandra.

Etapa 2: Preparar os dadosPreparar os dados de origem para uma transferência eficiente é um processo de duas etapas. Primeiro,você aleatoriza os dados. Na segunda etapa, você analisa os dados para determinar ocqlshvalores deparâmetros e configurações de tabela necessárias.

Randomize os dados

Ocqlsh COPY FROMlê e grava dados na mesma ordem em que aparecem no arquivo CSV. Se vocêusar ocqlsh COPY TOpara criar o arquivo de origem, os dados são gravados em ordem de classificaçãopor chave no CSV. Internamente, o Amazon Keyspaces particiona dados usando chaves de partição.Embora o Amazon Keyspaces tenha lógica integrada para ajudar a balancear a carga de solicitaçõespara a mesma chave de partição, carregar os dados será mais rápido e eficiente se você randomizar o

67

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Preparar os dados

pedido. Isso ocorre porque você pode aproveitar o balanceamento de carga integrado que ocorre quando oAmazon Keyspaces está gravando em partições diferentes.

Para distribuir as gravações entre as partições uniformemente, você deve randomizar os dados noarquivo de origem. Você pode escrever um aplicativo para fazer isso ou usar uma ferramenta de códigoaberto, comoShuf. O Shuf está disponível gratuitamente nas distribuições Linux, no macOS (instalandocoreutils emhomebrew) e no Windows (usando o Windows Subsystem for Linux (WSL)). Uma etapa extraé necessária para evitar que a linha de cabeçalho com os nomes das colunas seja embaralhada nestaetapa.

Para aleatorizar o arquivo de origem enquanto preserva o cabeçalho, insira o código a seguir.

tail -n +2 keyspaces_sample_table.csv | shuf -o keyspace.table.csv && (head -1 keyspaces_sample_table.csv && cat keyspace.table.csv ) > keyspace.table.csv1 && mv keyspace.table.csv1 keyspace.table.csv

Shuf reescreve os dados em um novo arquivo CSV chamadokeyspace.table.csv. Agora você podeexcluir okeyspaces_sample_table.csvarquivo — você não precisa mais dele.

Analisar os dados

Determine o tamanho médio e máximo da linha analisando os dados.

Você faz isso pelas seguintes razões:

• O tamanho médio da linha ajuda a estimar a quantidade total de dados a serem transferidos.• Você precisa do tamanho médio da linha para provisionar a capacidade de gravação necessária para o

upload de dados.• Você pode garantir que cada linha tenha menos de 1 MB de tamanho, que é o tamanho máximo da linha

nos Amazon Keyspaces.

Note

Essa cota se refere ao tamanho da linha, não ao tamanho da partição. Ao contrário das partiçõesdo Apache Cassandra, as partições do Amazon Keyspaces podem ser virtualmente desvinculadasem tamanho. As chaves de partição e as colunas de cluster exigem armazenamento adicionalpara metadados, que você deve adicionar ao tamanho bruto das linhas. Para obter maisinformações, consulte the section called “Calculando o tamanho da linha” (p. 121).

O código a seguir usaFALCÃOpara analisar um arquivo CSV e imprimir o tamanho médio e máximo dalinha.

awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}' keyspace.table.csv

A execução desse código resulta na saída a seguir.

using 10,000 samples:{lines: 10000, avg: 123 bytes, max: 225 bytes}

Use o tamanho médio da linha na próxima etapa deste tutorial para provisionar a capacidade de gravaçãopara a tabela.

68

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 3: Definir a capacidade de transferência para a tabela

Etapa 3: Definir a capacidade de transferência para atabelaEste tutorial mostra como ajustar o cqlsh para carregar dados dentro de um intervalo de tempo definido.Como você sabe quantas leituras e gravações realiza antecipadamente, use o modo de capacidadeprovisionada. Depois de concluir a transferência de dados, você deve definir o modo de capacidadeda tabela para corresponder aos padrões de tráfego do seu aplicativo. Para saber mais sobre ogerenciamento de capacidade, consulteGerenciamento de recursos sem servidor (p. 100).

Com o modo de capacidade provisionada, você especifica a capacidade de leitura e gravação que desejaprovisionar para sua tabela com antecedência. A capacidade de gravação é cobrada por hora e medidaem unidades de capacidade de gravação (WCUs). Cada WCU tem capacidade de gravação suficiente parasuportar a gravação de 1 KB de dados por segundo. Quando você carrega os dados, a taxa de gravaçãodeve estar abaixo do máximo de WCUs (parâmetro:write_capacity_units) que são definidas natabela de destino.

Por padrão, você pode provisionar até 40.000 WCUs para uma tabela e 80.000 WCUs em todas as tabelasda sua conta. Se precisar de capacidade adicional, solicite um aumento de cota naCotas de serviçodoconsole do . Para obter mais informações sobre cotas, consulte Cotas (p. 272).

Calcular o número médio de WCUs necessárias para uma pastilha

A inserção de 1 KB de dados por segundo requer 1 WCU. Se o seu arquivo CSV tiver 360.000 linhas evocê quiser carregar todos os dados em 1 hora, você deve escrever 100 linhas por segundo (360.000linhas/60 minutos/60 segundos = 100 linhas por segundo). Se cada linha tiver até 1 KB de dados, parainserir 100 linhas por segundo, você deverá provisionar 100 WCUs para sua tabela. Se cada linha tiver 1,5KB de dados, você precisará de duas WCUs para inserir uma linha por segundo. Portanto, para inserir 100linhas por segundo, você deve provisionar 200 WCUs.

Para determinar quantas WCUs você precisa inserir uma linha por segundo, divida o tamanho médio dalinha em bytes por 1024 e arredondar para o número inteiro mais próximo.

Por exemplo, se o tamanho médio da linha for 3000 bytes, você precisará de três WCUs para inserir umalinha por segundo.

ROUNDUP(3000 / 1024) = ROUNDUP(2.93) = 3 WCUs

Calcule o tempo de carregamento e a capacidade de

Agora que você sabe o tamanho médio e o número de linhas em seu arquivo CSV, você pode calcularquantas WCUs você precisa para carregar os dados em um determinado período de tempo e otempo aproximado necessário para carregar todos os dados em seu arquivo CSV usando diferentesconfigurações de WCU.

Por exemplo, se cada linha do seu arquivo tiver 1 KB e você tiver 1.000.000 linhas no arquivo CSV, paracarregar os dados em 1 hora, será necessário provisionar pelo menos 278 WCUs para a tabela duranteessa hora.

1,000,000 rows * 1 KBs = 1,000,000 KBs1,000,000 KBs / 3600 seconds =277.8 KBs / second = 278 WCUs

Configurar as configurações de capacidade provisionada

Você pode definir as configurações de capacidade de gravação de uma tabela ao criar a tabela ou usandoaALTER TABLEComando CQL. Veja a seguir a sintaxe para alterar as configurações de capacidadeprovisionada de uma tabela com aALTER TABLEInstrução CQL.

69

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 4: Configurecqlsh COPY FROMconfigurações

ALTER TABLE mykeyspace.mytable WITH custom_properties={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 100, 'write_capacity_units': 278}} ;

Para obter a referência completa do idioma, consultethe section called “ALTER TABLE” (p. 263).

Etapa 4: Configurecqlsh COPY FROMconfiguraçõesEsta seção descreve como determinar os valores de parâmetros paracqlsh COPY FROM. Ocqlsh COPYFROMlê o arquivo CSV que você preparou anteriormente e insere os dados no Amazon Keyspaces usandoCQL. O comando divide as linhas e distribui oINSERToperações entre um conjunto de trabalhadores. Cadatrabalhador estabelece uma conexão com o Amazon Keyspaces e enviaINSERTsolicitações ao longodeste canal.

Ocqlsh COPYO comando não tem lógica interna para distribuir o trabalho igualmente entre seustrabalhadores. No entanto, você pode configurá-lo manualmente para garantir que o trabalho sejadistribuído uniformemente. Comece revisando esses parâmetros chave do cqlsh:

• DELIMITADOR— Se você usou um delimitador diferente de uma vírgula, você pode definir esseparâmetro, cujo padrão é vírgula.

• INGERIR— O número de destino de linhas quecqlsh COPY FROMtentativas de processamento porsegundo. Se não estiver definido, o padrão é 100.000.

• NUMPROCESSES ES— O número de processos de trabalho filho que o cqlsh cria paraCOPYFROMTarefas. O máximo para essa configuração é 16, o padrão énum_cores - 1, emquenum_coresé o número de núcleos de processamento no host que executa o cqlsh.

• MAXBATCHSIZE— O tamanho do lote determina o número máximo de linhas inseridas na tabela dedestino em um único lote. Se não definido, o cqlsh usa lotes de 20 linhas inseridas.

• TAMANHO DO PEDAÇO— O tamanho da unidade de trabalho que passa para o trabalhador infantil. Porpadrão, ele é definido como 5.000.

• MAXATTEMPTS— O número máximo de novas tentativas de tentar novamente um bloco de trabalhocom falha. Depois que a tentativa máxima é atingida, os registros com falha são gravados em um novoarquivo CSV que você pode executar novamente depois de investigar a falha.

DefinaINGESTRATEcom base no número de WCUs que você provisionou para a tabela de destino.OINGESTRATEdocqlsh COPY FROMcomando não é um limite — é uma média alvo. Isso significaque ele pode (e geralmente acontece) explodir acima do número que você definiu. Para permitir picose garantir que haja capacidade suficiente para lidar com as solicitações de carregamento de dados,definaINGESTRATEa 90% da capacidade de gravação da tabela.

INGESTRATE = WCUs * .90

Em seguida, defina oNUMPROCESSESparâmetro igual a um a menos que o número de núcleos em seusistema. Para descobrir qual é o número de núcleos do seu sistema, você pode executar o seguintecódigo.

python -c "import multiprocessing; print(multiprocessing.cpu_count())"

Para este tutorial, usamos o valor a seguir.

NUMPROCESSES = 4

Cada processo cria um trabalhador e cada trabalhador estabelece uma conexão com o AmazonKeyspaces. O Amazon Keyspaces pode oferecer suporte a até 3.000 solicitações CQL por segundo em

70

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Execute acqlsh COPY FROMordem

cada conexão. Isso significa que você precisa garantir que cada trabalhador esteja processando menos de3.000 solicitações por segundo.

Tal como acontece comINGESTRATE, os trabalhadores geralmente estouram acima do número que vocêdefiniu e não são limitados por segundos do relógio. Portanto, para contabilizar as intermitências, definaseus parâmetros cqlsh para direcionar cada trabalhador para processar 2.500 solicitações por segundo.Para calcular a quantidade de trabalho distribuída a um trabalhador, use a seguinte diretriz.

• Divide (Dividir)INGESTRATEdeNUMPROCESSES.• SeINGESTRATE/NUMPROCESSES > 2.500, diminua aINGESTRATEpara tornar essa fórmula verdadeira.

INGESTRATE / NUMPROCESSES <= 2,500

Antes de definir as configurações para otimizar o upload de nossos dados de amostra, vamos revisarocqlshconfigurações padrão e veja como o uso delas afeta o processo de upload de dados. ComocqlshCOPY FROMusa oCHUNKSIZEpara criar pedaços de trabalho (INSERTdeclarações) para distribuir aostrabalhadores, o trabalho não é automaticamente distribuído uniformemente. Alguns trabalhadores podemficar ociosos, dependendo doINGESTRATEConfiguração.

Para distribuir o trabalho uniformemente entre os trabalhadores e manter cada trabalhador na taxa idealde 2.500 solicitações por segundo, você deve definirCHUNKSIZE,MAXBATCHSIZE, eINGESTRATEalterandoos parâmetros de entrada. Para otimizar a utilização do tráfego de rede durante o carregamento de dados,escolha um valor paraMAXBATCHSIZEque está próximo do valor máximo de 30. Ao alterarCHUNKSIZEa100 eMAXBATCHSIZEPara 25, as 10.000 linhas estão distribuídas uniformemente entre os quatrotrabalhadores (10.000/2500 = 4).

Isso é ilustrado no exemplo de código a seguir.

INGESTRATE = 10,000NUMPROCESSES = 4CHUNKSIZE = 100MAXBATCHSIZE. = 25Work Distribution:Connection 1 / Worker 1 : 2,500 Requests per secondConnection 2 / Worker 2 : 2,500 Requests per secondConnection 3 / Worker 3 : 2,500 Requests per secondConnection 4 / Worker 4 : 2,500 Requests per second

Para resumir, use as seguintes fórmulas ao definircqlsh COPY FROMParâmetros:

• INGERIR= write_capacity_units * .90• NUMPROCESSES ES= num_cores -1 (padrão)• INGERIR/NUMPROCESSES= 2.500 (Essa deve ser uma afirmação verdadeira.)• MAXBATCHSIZE= 30 (O padrão é 20. O Amazon Keyspaces aceita lotes de até 30.)• TAMANHO DO PEDAÇO= (INGESTRATE/NUMPROCESSES)/TAMANHO MÁXIMO DO LOTE

Agora que você calculouNUMPROCESSES,INGESTRATE, eCHUNKSIZE, você estará pronto para carregar osdados.

Etapa 5: Execute acqlsh COPY FROMordemPara executar acqlsh COPY FROMexecute as etapas a seguir.

1. Connect ao Amazon Keyspaces usando cqlsh.

71

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

2. Escolha seu keyspace com o código a seguir.

use mykeyspace;

3. Defina a consistência de gravação comoLOCAL_QUORUM. Para garantir a durabilidade dos dados, oAmazon Keyspaces não permite outras configurações de consistência de gravação. Consulte o códigoa seguir.

CONSISTENCY LOCAL_QUORUM;

4. Preparar suacqlsh COPY FROMsintaxe usando o exemplo de código a seguir.

COPY mytable FROM './keyspace.table.csv' WITH HEADER=true AND INGESTRATE=calculated ingestrate AND NUMPROCESSES=calculated numprocessAND MAXBATCHSIZE=20 AND CHUNKSIZE=calculated chunksize;

5. Execute a instrução preparada na etapa anterior. O cqlsh ecoa todas as configurações que vocêconfigurou.

a. Certifique-se de que as configurações correspondam à sua entrada. Veja o exemplo a seguir.

Reading options from the command line: {'chunksize': '120', 'header': 'true', 'ingestrate': '36000', 'numprocesses': '15', 'maxbatchsize': '20'}Using 15 child processes

b. Analise o número de linhas transferidas e a taxa média atual, conforme mostrado no seguinteexemplo.

Processed: 57834 rows; Rate: 6561 rows/s; Avg. rate: 31751 rows/s

c. Quando cqlsh terminar de carregar os dados, revise o resumo das estatísticas de carregamentode dados (o número de arquivos lidos, tempo de execução e linhas ignoradas), conformemostrado no exemplo a seguir.

15556824 rows imported from 1 files in 8 minutes and 8.321 seconds (0 skipped).

Nesta etapa final do tutorial, você carregou os dados para o Amazon Keyspaces.

Important

Agora que você transferiu seus dados, ajuste as configurações do modo de capacidade da tabelade destino para corresponder aos padrões de tráfego regulares do seu aplicativo. Você incorre emcobranças à taxa por hora para sua capacidade provisionada até que você a altere.

Solução de problemasDepois que o upload dos dados for concluído, verifique se as linhas foram ignoradas. Para fazer isso,navegue até o diretório de origem do arquivo CSV de origem e procure um arquivo com o seguinte nome.

import_yourcsvfilename.err.timestamp.csv

cqlsh grava todas as linhas de dados ignoradas em um arquivo com esse nome. Se o arquivo existir nodiretório de origem e contiver dados, essas linhas não foram carregadas no Amazon Keyspaces. Para

72

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

tentar novamente essas linhas, primeiro verifique se há erros encontrados durante o upload e ajuste osdados de acordo. Para repetir essas linhas, você pode executar o processo novamente.

Erros comuns do

Os motivos mais comuns pelos quais as linhas não são carregadas são erros de capacidade e erros deanálise.

Erros de solicitação inválidos ao fazer upload de dados para Amazon Keyspaces

No exemplo a seguir, a tabela de origem contém uma coluna de contador, que resulta em chamadasem lote registradas do cqlshCOPYcomando. Chamadas em lote registradas não são compatíveis com oAmazon Keyspaces.

Failed to import 10 rows: InvalidRequest - Error from server: code=2200 [Invalid query] message=“Only UNLOGGED Batches are supported at this time.“, will retry later, attempt 22 of 25

Para resolver esse erro, use o DSBulk para migrar os dados. Para obter mais informações, consulte thesection called “Carregamento de dados usando o DSBulk” (p. 74).

Erros do analisador ao fazer upload de dados para o Amazon Keyspaces

O exemplo a seguir mostra uma linha ignorada devido a umParseError.

Failed to import 1 rows: ParseError - Invalid ... –

Para resolver esse erro, você precisa garantir que os dados a serem importados correspondam aoesquema da tabela no Amazon Keyspaces. Revise o arquivo de importação em busca de erros de análise.Você pode tentar usar uma única linha de dados usando umINSERTdeclaração para isolar o erro.

Erros de capacidade ao fazer upload de dados para o Amazon Keyspaces

Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100

O Amazon Keyspaces usa oReadTimeouteWriteTimeoutexceções para indicarquando uma solicitação de gravação falha devido à capacidade insuficiente de throughput.Para ajudar a diagnosticar exceções de capacidade insuficientes, o Amazon KeyspacespublicaWriteThrottleEventseReadThrottledEventsmétricas na Amazon Amazon AmazonCloudWatch. Para obter mais informações, consulte the section called “Monitoramento comCloudWatch” (p. 226).

erros cqlsh ao fazer upload de dados para Amazon Keyspaces

Para ajudar a solucionar erros cqlsh, execute novamente o comando de falha com o comando--debugSinalizador.

Ao usar uma versão incompatível do cqlsh, você verá o seguinte erro.

AttributeError: 'NoneType' object has no attribute 'is_up'Failed to import 3 rows: AttributeError - 'NoneType' object has no attribute 'is_up', given up after 1 attempts

73

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Carregamento de dados usando o DSBulk

Confirme se a versão correta do cqlsh está instalada executando o seguinte comando.

cqlsh --version

Você deve ver algo parecido com o exemplo a seguir para a saída a seguir.

cqlsh 5.0.1

Se estiver usando o Windows, substitua todas as instâncias docqlshcomcqlsh.bat. Por exemplo, paraverificar a versão do cqlsh no Windows, execute o seguinte comando.

cqlsh.bat --version

A conexão com o Amazon Keyspaces falha depois que o cliente cqlsh recebe três erros consecutivos dequalquer tipo do servidor. O cliente cqlsh falha com a seguinte mensagem.

Failed to import 1 rows: NoHostAvailable - , will retry later, attempt 3 of 100

Para resolver esse erro, você precisa garantir que os dados a serem importados correspondam aoesquema da tabela no Amazon Keyspaces. Revise o arquivo de importação em busca de erros de análise.Você pode tentar usar uma única linha de dados usando uma instrução INSERT para isolar o erro.

O cliente tenta restabelecer automaticamente a conexão.

Tutorial: Carregamento de dados no AmazonKeyspaces usando o DSBulk

Esse step-by-step O tutorial orienta você na migração de dados do Apache Cassandra para o AmazonKeyspaces usando o DataStax Carregador em massa (DSBulk) disponível emGitHub. Neste tutorial, vocêconcluirá as seguintes etapas:

Tópicos• Pré-requisitos (p. 74)• Etapa 1: Crie o arquivo CSV de origem e a tabela de destino (p. 76)• Etapa 2: Preparar os dados (p. 77)• Etapa 3: Definir a capacidade de transferência para a tabela (p. 79)• Etapa 4: ConfigureDSBulkconfigurações (p. 80)• Etapa 5: Execute o DSBulkloadordem (p. 81)

Pré-requisitosÉ necessário concluir as tarefas a seguir antes de começar este tutorial.

1. Se você ainda não tiver feito isso, cadastre-se emAWSseguindo as etapas emthe section called“Como se cadastrar no AWS” (p. 15).

2. Crie credenciais, seguindo as etapas emthe section called “Como criar credenciais” (p. 17).

74

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Pré-requisitos

Note

Atualmente, o DSBulk é compatível apenas com credenciais específicas do serviço. Sevocê preferir gerenciar o acesso ao Amazon Keyspaces usandoAWS Identity and AccessManagementusuários e funções, você pode usar o plug-in de autenticação SigV4 e desativaras credenciais específicas do serviço depois de concluir o upload de dados com o DSBulk.

3. Crie um arquivo de armazenamento de confiança JKS.

a. Faça o download do certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtlocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao AmazonKeyspaces e pode continuar fazendo isso se seu cliente estiver se conectando aoAmazon Keyspaces com sucesso. O certificado Starfield fornece compatibilidadeadicional com versões anteriores para clientes que usam autoridades de certificaçãomais antigas.

b. Converta o certificado digital Starfield em um arquivo TrustStore.

openssl x509 -outform der -in sf-class2-root.crt -out temp_file.derkeytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der

Nesta etapa, você precisa criar uma senha para o keystore e confiar nesse certificado. Ocomando interativo parece com o exemplo a seguir.

Enter keystore password:Re-enter new password:Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=USIssuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=USSerial number: 0Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034Certificate fingerprints: MD5: 32:4A:4B:BB:C8:63:69:9B:BE:74:9A:C6:DD:1D:46:24 SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58Signature algorithm name: SHA1withRSASubject Public Key Algorithm: 2048-bit RSA keyVersion: 3Extensions:#1: ObjectId: 2.5.29.35 Criticality=falseAuthorityKeyIdentifier [KeyIdentifier [0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U.....0010: 0E A9 88 E7 ....][OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US]SerialNumber: [ 00]]#2: ObjectId: 2.5.29.19 Criticality=falseBasicConstraints:[ CA:true

75

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 1: Criar origem e destino

PathLen:2147483647]#3: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U.....0010: 0E A9 88 E7 ....]]Trust this certificate? [no]: y

4. Configure a conexão do shell Cassandra Query Language (cqlsh) e confirme se você pode seconectar ao Amazon Keyspaces seguindo as etapas emthe section called “Usar o cqlsh” (p. 26).

5. Faça download e instale o DSBulk.

a. Para baixar o DSBulk, você pode usar o seguinte código.

curl -OL https://downloads.datastax.com/dsbulk/dsbulk-1.8.0.tar.gz

b. Em seguida, descompacte o arquivo tar e adicione o DSBulk ao seuPATH, conforme mostrado noexemplo a seguir.

tar -zxvf dsbulk-1.8.0.tar.gz# add the DSBulk directory to the pathexport PATH=$PATH:./dsbulk-1.8.0/bin

c. Criar umapplication.confarquivo para armazenar as configurações a serem usadaspelo DSBulk. Você pode salvar o exemplo a seguir como./dsbulk_keyspaces.conf.Substituirlocalhostcom o ponto de contato do cluster Cassandra local, se você não estiver nonó local, por exemplo, o nome DNS ou o endereço IP. Substituirusernameepasswordcom suascredenciais de servidor. Anote o nome e o caminho do arquivo, pois você precisará especificarisso posteriormente nodsbulk loadcomando.

datastax-java-driver { basic.contact-points = [ "localhost"] advanced.auth-provider { class = PlainTextAuthProvider username = "username" password = "password" }}

Etapa 1: Crie o arquivo CSV de origem e a tabela dedestinoPara este tutorial, usamos um arquivo de valores separados por vírgula (CSV) com onomekeyspaces_sample_table.csvcomo o arquivo de origem para a migração de dados. O arquivode amostra fornecido contém algumas linhas de dados para uma tabela com o nomebook_awards.

1. Crie o arquivo de origem. Você pode escolher uma das seguintes opções:• Baixe o arquivo CSV de exemplo (keyspaces_sample_table.csv) contido no

seguinte arquivosamplemigration.zip. Descompacte o arquivo e anote o caminhoparakeyspaces_sample_table.csv.

• Para preencher um arquivo CSV com seus próprios dados armazenados em um banco de dadosApache Cassandra, você pode preencher o arquivo CSV de origem usandodsbulk unload,conforme mostrado no exemplo a seguir.

76

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Preparar os dados

dsbulk unload -k mykeyspace -t mytable -f ./my_application.conf > keyspaces_sample_table.csv

Verifique se o arquivo CSV criado atende aos seguintes requisitos:

• A primeira linha contém os nomes das colunas.• Os nomes das colunas no arquivo CSV de origem correspondem aos nomes das colunas na

tabela de destino.• Os dados são delimitados por uma vírgula.• Todos os valores de dados são tipos de dados Amazon Keyspaces válidos. Consulte the

section called “Tipos de dados” (p. 255).2. Crie o keyspace e a tabela de destino nos Amazon Keyspaces.

a. Connect ao Amazon Keyspaces usandocqlsh, substituindo o ponto de extremidade do serviço, onome de usuário e a senha no exemplo a seguir pelos seus próprios valores.

cqlsh cassandra.us-east-2.amazonaws.com 9142 -u "111122223333" -p "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --ssl

b. Crie um novo keyspace com o nomecatalog, conforme mostrado no exemplo a seguir.

CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};

c. Depois que o novo keyspace tiver um status de disponível, use o código a seguir para criar atabela de destinobook_awards. Para saber mais sobre a criação assíncrona de recursos e comoverificar se um recurso está disponível, consultethe section called “Criar keyspaces” (p. 117).

CREATE TABLE catalog.book_awards ( year int, award text, rank int, category text, book_title text, author text, publisher text, PRIMARY KEY ((year, award), category, rank) );

Se o Apache Cassandra for sua fonte de dados original, uma maneira simples de criar a tabela dedestino do Amazon Keyspaces com cabeçalhos correspondentes é gerar oCREATE TABLEda tabelade origem, conforme mostrado na instrução a seguir.

cqlsh localhost 9042 -u "username" -p "password" --execute "DESCRIBE TABLE mykeyspace.mytable;"

Em seguida, crie a tabela de destino no Amazon Keyspaces com os nomes de coluna e os tipos dedados correspondentes à descrição da tabela de origem do Cassandra.

Etapa 2: Preparar os dadosPreparar os dados de origem para uma transferência eficiente é um processo de duas etapas. Primeiro,você aleatoriza os dados. Na segunda etapa, você analisa os dados para determinar odsbulkvalores deparâmetros e configurações de tabela necessárias.

77

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Preparar os dados

Randomize os dados

Odsbulklê e grava dados na mesma ordem em que aparecem no arquivo CSV. Se você usarodsbulkpara criar o arquivo de origem, os dados são gravados em ordem de classificação por chave noCSV. Internamente, o Amazon Keyspaces particiona dados usando chaves de partição. Embora o AmazonKeyspaces tenha lógica integrada para ajudar a balancear a carga de solicitações para a mesma chave departição, carregar os dados será mais rápido e eficiente se você randomizar o pedido. Isso ocorre porquevocê pode aproveitar o balanceamento de carga integrado que ocorre quando o Amazon Keyspaces estágravando em partições diferentes.

Para distribuir as gravações entre as partições uniformemente, você deve randomizar os dados noarquivo de origem. Você pode escrever um aplicativo para fazer isso ou usar uma ferramenta de códigoaberto, comoShuf. O Shuf está disponível gratuitamente nas distribuições Linux, no macOS (instalandocoreutils emhomebrew) e no Windows (usando o Windows Subsystem for Linux (WSL)). Uma etapa extraé necessária para evitar que a linha de cabeçalho com os nomes das colunas seja embaralhada nestaetapa.

Para aleatorizar o arquivo de origem enquanto preserva o cabeçalho, insira o código a seguir.

tail -n +2 keyspaces_sample_table.csv | shuf -o keyspace.table.csv && (head -1 keyspaces_sample_table.csv && cat keyspace.table.csv ) > keyspace.table.csv1 && mv keyspace.table.csv1 keyspace.table.csv

Shuf reescreve os dados em um novo arquivo CSV chamadokeyspace.table.csv. Agora você podeexcluir akeyspaces_sample_table.csvarquivo—você não precisa mais dele.

Analisar os dados

Determine o tamanho médio e máximo da linha analisando os dados.

Você faz isso pelas seguintes razões:

• O tamanho médio da linha ajuda a estimar a quantidade total de dados a serem transferidos.• Você precisa do tamanho médio da linha para provisionar a capacidade de gravação necessária para o

upload de dados.• Você pode garantir que cada linha tenha menos de 1 MB de tamanho, que é o tamanho máximo da linha

nos Amazon Keyspaces.

Note

Essa cota se refere ao tamanho da linha, não ao tamanho da partição. Ao contrário das partiçõesdo Apache Cassandra, as partições do Amazon Keyspaces podem ser virtualmente desvinculadasem tamanho. As chaves de partição e as colunas de cluster exigem armazenamento adicionalpara metadados, que você deve adicionar ao tamanho bruto das linhas. Para obter maisinformações, consulte the section called “Calculando o tamanho da linha” (p. 121).

O código a seguir usaFALCÃOpara analisar um arquivo CSV e imprimir o tamanho médio e máximo dalinha.

awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}' keyspace.table.csv

A execução desse código resulta na saída a seguir.

using 10,000 samples:

78

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 3: Definir a capacidade de transferência para a tabela

{lines: 10000, avg: 123 bytes, max: 225 bytes}

Certifique-se de que o tamanho máximo da linha não exceda 1 MB. Se isso acontecer, você precisa dividira linha ou compactar os dados para deixar o tamanho da linha abaixo de 1 MB. Na próxima etapa destetutorial, você usará o tamanho médio da linha para provisionar a capacidade de gravação para a tabela.

Etapa 3: Definir a capacidade de transferência para atabelaEste tutorial mostra como ajustar o DSBulk para carregar dados dentro de um intervalo de tempodefinido. Como você sabe quantas leituras e gravações realiza com antecedência, use o modo decapacidade provisionada. Depois de concluir a transferência de dados, você deve definir o modo decapacidade da tabela para corresponder aos padrões de tráfego do seu aplicativo. Para saber mais sobreo gerenciamento de capacidade, consulteGerenciamento de recursos sem servidor (p. 100).

Com o modo de capacidade provisionada, você especifica a capacidade de leitura e gravação que desejaprovisionar para sua tabela com antecedência. A capacidade de gravação é cobrada por hora e medidaem unidades de capacidade de gravação (WCUs). Cada WCU tem capacidade de gravação suficiente parasuportar a gravação de 1 KB de dados por segundo. Quando você carrega os dados, a taxa de gravaçãodeve estar abaixo do máximo de WCUs (parâmetro:write_capacity_units) que são colocados natabela de destino.

Por padrão, você pode provisionar até 40.000 WCUs para uma tabela e 80.000 WCUs em todas as tabelasda sua conta. Se precisar de capacidade adicional, solicite um aumento de cota noCotas de serviçodoconsole do . Para obter mais informações sobre cotas, consulte Cotas (p. 272).

Calcular o número médio de WCUs necessárias para uma pastilha

A inserção de 1 KB de dados por segundo requer 1 WCU. Se o seu arquivo CSV tiver 360.000 linhas evocê quiser carregar todos os dados em 1 hora, você deve escrever 100 linhas por segundo (360.000linhas/60 minutos/60 segundos = 100 linhas por segundo). Se cada linha tiver até 1 KB de dados, parainserir 100 linhas por segundo, você deverá provisionar 100 WCUs para sua tabela. Se cada linha tiver 1,5KB de dados, você precisará de duas WCUs para inserir uma linha por segundo. Portanto, para inserir 100linhas por segundo, você deve provisionar 200 WCUs.

Para determinar quantas WCUs você precisa inserir uma linha por segundo, divida o tamanho médio dalinha em bytes por 1024 e arredondar para o número inteiro mais próximo.

Por exemplo, se o tamanho médio da linha for 3000 bytes, você precisará de três WCUs para inserir umalinha por segundo.

ROUNDUP(3000 / 1024) = ROUNDUP(2.93) = 3 WCUs

Calcule o tempo de carregamento e a capacidade de

Agora que você sabe o tamanho médio e o número de linhas em seu arquivo CSV, você pode calcularquantas WCUs você precisa para carregar os dados em um determinado período de tempo e otempo aproximado necessário para carregar todos os dados em seu arquivo CSV usando diferentesconfigurações de WCU.

Por exemplo, se cada linha do seu arquivo tiver 1 KB e você tiver 1.000.000 linhas no arquivo CSV, paracarregar os dados em 1 hora, será necessário provisionar pelo menos 278 WCUs para a tabela duranteessa hora.

1,000,000 rows * 1 KBs = 1,000,000 KBs1,000,000 KBs / 3600 seconds =277.8 KBs / second = 278 WCUs

79

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 4: ConfigureDSBulkconfigurações

Definir as configurações de capacidade provisionada

Você pode definir as configurações de capacidade de gravação de uma tabela ao criar a tabela ouusando aALTER TABLEcomando. Veja a seguir a sintaxe para alterar as configurações de capacidadeprovisionada de uma tabela com aALTER TABLEcomando.

ALTER TABLE catalog.book_awards WITH custom_properties={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 100, 'write_capacity_units': 278}} ;

Para obter a referência completa do idioma, consultethe section called “CREATE TABLE” (p. 261)ethesection called “ALTER TABLE” (p. 263).

Etapa 4: ConfigureDSBulkconfiguraçõesEsta seção descreve as etapas necessárias para configurar o DSBulk para upload de dados no AmazonKeyspaces. Você configura o DSBulk usando um arquivo de configuração. Você especifica o arquivo deconfiguração diretamente na linha de comando.

1. Crie um arquivo de configuração DSBulk para a migração para Amazon Keyspaces. Neste exemplo,usamos o nome do arquivodsbulk_keyspaces.conf. Especifique as seguintes configurações noarquivo de configuração do DSBulk.

a. PlainTextAuthProvider— Crie o provedor de autenticação comoPlainTextAuthProviderclasse.ServiceUserNameeServicePasswordO devecorresponder ao nome de usuário e senha obtidos ao gerar as credenciais específicas do serviçoseguindo as etapas emthe section called “Como criar credenciais” (p. 17).

b. local-datacenter— Defina o valor paralocal-datacenterpara oRegião da AWSao qualvocê está se conectando. Por exemplo, se o aplicativo estiver se conectando acassandra.us-east-2.amazonaws.come, em seguida, defina o data center local comous-east-2. Paratodos disponíveisRegiões da AWS, consultethe section called “Service endpoints (Endpoints deserviço)” (p. 24).

c. SSLEngineFactory— Para configurar o SSL/TLS, inicialize aSSLEngineFactoryadicionandouma seção no arquivo de configuração com uma única linha que especifica a classe comclass= DefaultSslEngineFactory. Forneça o caminho paracassandra_truststore.jkse asenha que você criou anteriormente.

d. consistency—Defina o nível de consistência comoLOCAL QUORUMe desativeatoken_metadataConfiguração. Não há suporte para outros níveis de consistência degravação. Para obter mais informações, consultethe section called “Níveis de consistênciacompatíveis do Cassandra” (p. 13).

Veja a seguir um arquivo de configuração de exemplo completo.

datastax-java-driver {basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]advanced.auth-provider { class = PlainTextAuthProvider username = "ServiceUserName" password = "ServicePassword"}basic.load-balancing-policy { local-datacenter = "us-east-2"}

basic.request { consistency = LOCAL_QUORUM default-idempotence = true}

80

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Execute o DSBulkloadordem

advanced.ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./cassandra_truststore.jks" truststore-password = "my_password" hostname-validation = false }advanced.metadata { schema { token-map.enabled = false }}}

2. Analise os parâmetros para o DSBulkloadcomando.

a. executor.maxPerSecond— O número máximo de linhas que o comando load tenta processarsimultaneamente por segundo. Se não definida, essa configuração é desativada com -1.

Definaexecutor.maxPerSecondcom base no número de WCUs que você provisionou para atabela de destino de destino. Oexecutor.maxPerSeconddoloadcomando não é um limite —é uma média alvo. Isso significa que ele pode (e geralmente acontece) explodir acima do númeroque você definiu. Para permitir picos e garantir que haja capacidade suficiente para lidar com assolicitações de carregamento de dados, definaexecutor.maxPerSeconda 90% da capacidadede gravação da tabela.

executor.maxPerSecond = WCUs * .90

Neste tutorial, definimosexecutor.maxPerSecond— 5.

Note

Se você estiver usando o DSBulk 1.6.0 ou superior, você podeusardsbulk.engine.maxConcurrentQueriesem vez disso.

b. Configure esses parâmetros adicionais para o DSBulkloadcomando.

• batch-mode— Esse parâmetro diz ao sistema para agrupar operações por chave de partição.Como isso pode interferir em outras configurações, recomendamos desativar o modo em lote.

• driver.advanced.retry-policy-max-retries— Esse parâmetro determina quantasvezes tentar novamente uma consulta com falha. Se não definido, o padrão é 10. Você podeajustar esse valor conforme necessário.

• driver.basic.request.timeout— O tempo, em minutos, que o sistema espera peloretorno de uma consulta. Se não estiver definido, o padrão é “5 minutos”. Você pode ajustaresse valor conforme necessário.

Etapa 5: Execute o DSBulkloadordemNa etapa final deste tutorial, você faz o upload dos dados no Amazon Keyspaces.

Para executar o DSBulkload, execute as etapas a seguir.

1. Execute o código a seguir para fazer upload dos dados do seu arquivo csv para a tabela AmazonKeyspaces. Certifique-se de atualizar o caminho para o arquivo de configuração do aplicativo quevocê criou anteriormente.

dsbulk load -f ./dsbulk_keyspaces.conf --connector.csv.url keyspace.table.csv -header true --batch.mode DISABLED --executor.maxPerSecond 5 --driver.basic.request.timeout "5 minutes" --driver.advanced.retry-policy.max-retries 10 -k catalog -t book_awards

81

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Execute o DSBulkloadordem

2. A saída inclui a localização de um arquivo de log que detalha as operações bem-sucedidas emalsucedidas. O arquivo é armazenado no diretório a seguir.

Operation directory: /home/user_name/logs/UNLOAD_20210308-202317-801911

3. As entradas do arquivo de log incluirão métricas, como no exemplo a seguir. Verifique se o número delinhas é consistente com o número de linhas em seu arquivo csv.

total | failed | rows/s | p50ms | p99ms | p999ms 200 | 0 | 200 | 21.63 | 21.89 | 21.89

Important

Agora que você transferiu seus dados, ajuste as configurações do modo de capacidade databela de destino para corresponder aos padrões de tráfego regulares do seu aplicativo. Vocêincorre em cobranças à taxa por hora para sua capacidade provisionada até que você a altere.Para obter mais informações, consulte the section called “Modo de capacidade de leitura/gravação” (p. 100).

82

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Conexões

Solução de problemas do AmazonKeyspaces (para Apache Cassandra)

As seções a seguir fornecem informações sobre como solucionar problemas comuns de configuração quevocê pode ter ao usar o Amazon Keyspaces (para o Apache Cassandra).

Para obter orientações sobre solução de problemas específicas para o acesso do IAM, consultethe sectioncalled “Solução de problemas” (p. 220).

Para obter mais informações sobre melhores práticas de segurança, consultethe section called “Práticasrecomendadas de segurança” (p. 250).

Tópicos• Solução de problemas de conexões no Amazon Keyspaces (p. 83)• Solução de problemas de gerenciamento de capacidade no Amazon Keyspaces (p. 89)• Solução de problemas na linguagem de definição de dados no Amazon Keyspaces (p. 93)

Solução de problemas de conexões no AmazonKeyspaces

Está tendo problemas para se conectar? Aqui estão alguns problemas comuns e como resolvê-los.

Erros ao conectar-se a um endpoint do AmazonKeyspacesConexões com falha e erros de conexão podem resultar em mensagens de erro diferentes. A seção aseguir abrange os cenários mais comuns.

Tópicos• Não consigo me conectar ao Amazon Keyspaces com cqlsh (p. 83)• Não consigo me conectar ao Amazon Keyspaces usando um driver do cliente Cassandra (p. 87)• Não consigo me conectar usandocassandra-stress (p. 88)• Não consigo me conectar usando identidades do IAM (p. 88)• Estou tentando importar dados com cqlsh e a conexão com minha tabela do Amazon Keyspaces é

perdida (p. 89)

Não consigo me conectar ao Amazon Keyspaces com cqlshVocê está tentando se conectar a um endpoint do Amazon Keyspaces usando cqlsh e a conexão falhacom umConnection error.

Se você tentar se conectar a uma tabela do Amazon Keyspaces e o cqlsh não tiver sido configuradocorretamente, a conexão falhará. A seção a seguir fornece exemplos dos problemas de configuração maiscomuns que resultam em erros de conexão quando você está tentando estabelecer uma conexão usandocqlsh.

83

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Erros ao conectar-se a um endpoint do Amazon Keyspaces

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas obtém uma conexãotimedout(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se você não forneceu a porta correta, o que resulta no seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com 9140 -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.199': error(None, "Tried connecting to [('3.234.248.199', 9140)]. Last error: timed out")})

Para resolver esse problema, verifique se você está usando a porta 9142 para a conexão.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você obtém umName orservice not known(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se você usou um endpoint que está escrito incorretamente ou que não exista. Noexemplo a seguir, o nome do endpoint está escrito incorretamente.

# cqlsh cassandra.us-east-1.amazon.com 9142 -u "USERNAME" -p "PASSWORD" --sslTraceback (most recent call last): File "/usr/bin/cqlsh.py", line 2458, in >module> main(*read_options(sys.argv[1:], os.environ)) File "/usr/bin/cqlsh.py", line 2436, in main encoding=options.encoding) File "/usr/bin/cqlsh.py", line 484, in __init__ load_balancing_policy=WhiteListRoundRobinPolicy([self.hostname]), File "/usr/share/cassandra/lib/cassandra-driver-internal-only-3.11.0-bb96859b.zip/cassandra-driver-3.11.0-bb96859b/cassandra/policies.py", line 417, in __init__socket.gaierror: [Errno -2] Name or service not known

Para resolver esse problema quando você estiver usando endpoints públicos para se conectar, selecioneum endpoint disponível emthe section called “Service endpoints (Endpoints de serviço)” (p. 24)e verifiquese o nome do endpoint não tem nenhum erro. Se você estiver usando endpoints da VPC para se conectar,verifique se as informações do endpoint da VPC estão corretas na configuração do cqlsh.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebeumOperationTimedOut(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

O Amazon Keyspaces exige que o SSL esteja habilitado para conexões para garantir uma segurança forte.O parâmetro SSL pode estar ausente se você receber o seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD"Connection error: ('Unable to connect to any servers', {'3.234.248.192': OperationTimedOut('errors=Timed out creating connection (5 seconds), last_host=None',)})#

Para resolver esse problema, adicione o seguinte sinalizador ao comando cqlsh connection.

--ssl

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh e recebe umSSL transportfactory requires a valid certfile to be specified(Nenhum console do Windowsencontrado. Você está executando o cmd.exe?”.

Nesse caso, o caminho para o certificado SSL/TLS está ausente, o que resulta no seguinte erro.

# cat .cassandra/cqlshrc[connection]port = 9142factory = cqlshlib.ssl.ssl_transport_factory#

84

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Erros ao conectar-se a um endpoint do Amazon Keyspaces

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --sslValidation is enabled; SSL transport factory requires a valid certfile to be specified. Please provide path to the certfile in [ssl] section as 'certfile' option in /root/.cassandra/cqlshrc (or use [certfiles] section) or set SSL_CERTFILE environment variable.#

Para resolver esse problema, adicione o caminho ao certfile no computador.

certfile = path_to_file/sf-class2-root.crt

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebe umNo suchfile or directory(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se o caminho para o arquivo de certificado em seu computador estiver errado, o queresulta no seguinte erro.

# cat .cassandra/cqlshrc[connection]port = 9142factory = cqlshlib.ssl.ssl_transport_factory

[ssl]validate = truecertfile = /root/wrong_path/sf-class2-root.crt#

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.192': IOError(2, 'No such file or directory')})#

Para resolver esse problema, verifique se o caminho para o certfile no computador está correto.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebe um[X509] PEMlib(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se o arquivo de certificado SSL/TLSsf-class2-root.crtNão é válido, o queresulta no seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.241': error(185090057, u"Tried connecting to [('3.234.248.241', 9142)]. Last error: [X509] PEM lib (_ssl.c:3063)")})#

Para resolver esse problema, baixe o certificado digital Starfield usando o seguinte comando. Salvarsf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebe umunknownErroSSL.

Esse pode ser o caso se o arquivo de certificado SSL/TLSsf-class2-root.crtEstá vazio, o que resultano seguinte erro.

85

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Erros ao conectar-se a um endpoint do Amazon Keyspaces

# cqlsh cassandra.us-east-1.amazonaws.com -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.220': error(0, u"Tried connecting to [('3.234.248.220', 9142)]. Last error: unknown error (_ssl.c:3063)")})#

Para resolver esse problema, baixe o certificado digital Starfield usando o seguinte comando. Salvarsf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebe umSSL:CERTIFICATE_VERIFY_FAILED(Nenhum console do Windows encontrado. Você está executando ocmd.exe?”.

Esse pode ser o caso se o arquivo de certificado SSL/TLS não puder ser verificado, o que resulta noseguinte erro.

Connection error: ('Unable to connect to any servers', {'3.234.248.223': error(1, u"Tried connecting to [('3.234.248.223', 9142)]. Last error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)")})

Para resolver esse problema, faça o download do arquivo de certificado novamente usando o seguintecomando. Salvarsf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas está recebendo umLasterror: timed out(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se você não configurou uma regra de saída para o Amazon Keyspaces no securitygroup do Amazon EC2, o que resulta no seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.206': error(None, "Tried connecting to [('3.234.248.206', 9142)]. Last error: timed out")})#

Para resolver esse problema, verifique se sua instância do Amazon EC2 tem regras de saída quebloqueiam a conexão com o Amazon Keyspaces. Se for esse o caso, você precisará visualizar o securitygroup da instância do EC2 e adicionar uma regra que permita o tráfego de saída para os recursos doAmazon Keyspaces. Para atualizar a regra de saída para permitir tráfego para o Amazon Keyspaces, insiraa porta9142para aIntervalo de portase0.0.0.0/0como oDestino.

Para obter mais informações sobre como visualizar e editar regras de saída do EC2, consulteAdicionarregras a um security group no Guia do usuário do Amazon EC2 para instâncias do Linux.

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebeumUnauthorized(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se você não tiver permissões do Amazon Keyspaces na política de usuário do IAM,o que resulta no seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "testuser-at-12345678910" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.241': AuthenticationFailed('Failed to authenticate to 3.234.248.241: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::12345678910:user/testuser has no permissions."',)})

86

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Erros ao conectar-se a um endpoint do Amazon Keyspaces

#

Para resolver esse problema, verifique se o usuário do IAMtestuser-at-12345678910Tem permissõespara acessar o Amazon Keyspaces. Para obter políticas demonstrativas do IAM que concedem acesso aoAmazon Keyspaces, consultethe section called “Exemplos de políticas baseadas em identidade” (p. 209).

Para obter orientações sobre solução de problemas específicas para o acesso do IAM, consultethe sectioncalled “Solução de problemas” (p. 220).

Você está tentando se conectar ao Amazon Keyspaces usando cqlsh, mas você recebe umBadcredentials(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se o nome de usuário ou senha estiver errado, o que resulta no seguinte erro.

# cqlsh cassandra.us-east-1.amazonaws.com 9142 -u "USERNAME" -p "PASSWORD" --sslConnection error: ('Unable to connect to any servers', {'3.234.248.248': AuthenticationFailed('Failed to authenticate to 3.234.248.248: Error from server: code=0100 [Bad credentials] message="Provided username USERNAME and/or password are incorrect"',)})#

Para resolver esse problema, verifique se oNOME DE USUÁRIOeSENHANo seu código, corresponda aonome de usuário e senha obtido quando gerouCredenciais específicas do serviço (p. 17).

Important

Se você continuar vendo erros ao tentar se conectar com cqlsh, execute novamente o comandocom o--debuge inclua a saída detalhada ao entrar em contatoAWS Support.

Não consigo me conectar ao Amazon Keyspaces usando umdriver do cliente CassandraAs seções a seguir mostram os erros mais comuns ao se conectar com um driver cliente Cassandra.

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver e o plug-in Sigv4,mas você recebe umAttributeError(Nenhum console do Windows encontrado. Você está executandoo cmd.exe?”.

Se as credenciais não estiverem configuradas corretamente, isso resultará no seguinte erro.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.154:9142’: AttributeError(“‘NoneType’ object has no attribute ‘access_key’“)})

Para resolver esse problema, verifique se você está passando as credenciais associadas ao usuário oufunção do IAM ao usar o plug-in SigV4. O plug-in Sigv4 requer as seguintes credenciais.

• AWS_ACCESS_KEY_ID— Especifica umAWSchave de acesso da associada a um usuário ou função doIAM.

• AWS_SECRET_ACCESS_KEY— Especifica a chave secreta associada à chave de acesso.Essencialmente, essa é a “senha” para a chave de acesso.

Para saber mais sobre chaves de acesso e o plug-in SigV4, consultethe section called “Credenciais do IAMpara oAWSautenticação” (p. 19).

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver, mas você recebeumPartialCredentialsError(Nenhum console do Windows encontrado. Você está executando ocmd.exe?”.

87

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Erros ao conectar-se a um endpoint do Amazon Keyspaces

Se oAWS_SECRET_ACCESS_KEYEstá faltando, o seguinte erro pode ocorrer.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.153:9142’: PartialCredentialsError(‘Partial credentials found in config-file, missing: aws_secret_access_key’)})

Para resolver esse problema, verifique se você está passando oAWS_ACCESS_KEY_IDO eaAWS_SECRET_ACCESS_KEYao usar o plugin SigV4. Para saber mais sobre chaves de acesso e o plug-inSigV4, consultethe section called “Credenciais do IAM para oAWSautenticação” (p. 19).

Você está tentando se conectar a uma tabela do Amazon Keyspaces usando um driver, mas você recebeumInvalid signature(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

Esse pode ser o caso se você usou credenciais erradas, o que resulta no seguinte erro.

cassandra.cluster.NoHostAvailable: (‘Unable to connect to any servers’, {‘44.234.22.134:9142’: AuthenticationFailed(‘Failed to authenticate to 44.234.22.134:9142: Error from server: code=0100 [Bad credentials] message=“Authentication failure: Invalid signature”’)})

Para resolver esse problema, verifique se as credenciais que você está passando estão associadasao usuário ou função do IAM que você configurou para acessar o Amazon Keyspaces. Para sabermais sobre chaves de acesso e o plug-in SigV4, consultethe section called “Credenciais do IAM paraoAWSautenticação” (p. 19).

Não consigo me conectar usandocassandra-stressVocê está tentando se conectar ao Amazon Keyspaces usando ocassandra-stresscomando, mas vocêestá recebendo umSSL context(Nenhum console do Windows encontrado. Você está executando ocmd.exe?”.

Isso acontece se você tentar se conectar ao Amazon Keyspaces, mas não tiver a configuração doTrustStore corretamente. O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) paraajudar a proteger conexões com os clientes.

Nesse caso, você verá o seguinte erro.

Error creating the initializing the SSL Context

Para resolver esse problema, siga as instruções para configurar uma TrustStore, conforme mostrado nestetópicothe section called “Antes de começar” (p. 34).

Depois que a TrustStore estiver configurada, você poderá se conectar ao seguinte comando.

./cassandra-stress user profile=./profile.yaml n=100 "ops(insert=1,select=1)" cl=LOCAL_QUORUM -node "cassandra.eu-north-1.amazonaws.com" -port native=9142 -transport ssl-alg="PKIX" truststore="./cassandra_truststore.jks" truststore-password="trustStore_pw" -mode native cql3 user="user_name" password="password"

Não consigo me conectar usando identidades do IAMVocê está tentando se conectar a uma tabela do Amazon Keyspaces usando uma identidade do IAM, masestá recebendo umaUnauthorized(Nenhum console do Windows encontrado. Você está executando ocmd.exe?”.

88

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Gerenciamento de capacidade

Isso acontece se você tentar se conectar a uma tabela do Amazon Keyspaces usando uma identidade doIAM (por exemplo, um usuário do IAM) sem implementar a política e fornecer ao usuário as permissõesnecessárias primeiro.

Nesse caso, você verá o seguinte erro.

Connection error: ('Unable to connect to any servers', {'3.234.248.202': AuthenticationFailed('Failed to authenticate to 3.234.248.202: Error from server: code=2100 [Unauthorized] message="User arn:aws:iam::1234567890123:user/testuser has no permissions."',)})

Para resolver esse problema, verifique as permissões do usuário do IAM. Para se conectar com um driverpadrão, um usuário deve ter pelo menosSELECTacesso às tabelas do sistema, porque a maioria dosdrivers lê os espaços/tabelas de chave-chave do sistema quando estabelecem a conexão.

Por exemplo, políticas do IAM que concedem acesso ao sistema e às tabelas de usuários do AmazonKeyspaces, consultethe section called “Acessar tabelas do Amazon Keyspaces” (p. 211).

Para revisar a seção de solução de problemas específica para o IAM, consultethe section called “Soluçãode problemas” (p. 220).

Estou tentando importar dados com cqlsh e a conexão comminha tabela do Amazon Keyspaces é perdidaVocê está tentando fazer upload de dados para o Amazon Keyspaces com cqlsh, mas está recebendoerros de conexão.

A conexão com o Amazon Keyspaces falha após o cliente cqlsh receber três erros consecutivos dequalquer tipo do servidor. O cliente cqlsh falha com a mensagem a seguir.

Failed to import 1 rows: NoHostAvailable - , will retry later, attempt 3 of 100

Para resolver esse erro, você precisa se certificar de que os dados a serem importados correspondem aoesquema da tabela no Amazon Keyspaces. Revise o arquivo de importação para erros de análise. Vocêpode tentar usar uma única linha de dados usando uma instrução INSERT para isolar o erro.

O cliente tenta restabelecer automaticamente a conexão.

Solução de problemas de gerenciamento decapacidade no Amazon Keyspaces

Está tendo problemas com a capacidade sem servidor? Aqui estão alguns problemas comuns e comoresolvê-los.

Erros de capacidade sem servidorEsta seção descreve como reconhecer erros relacionados ao gerenciamento de capacidade sem servidore como resolvê-los. Por exemplo, você pode observar eventos de capacidade insuficientes quando oaplicativo excede sua capacidade de transferência provisionada.

Como o Apache Cassandra é um software baseado em cluster projetado para ser executado emuma frota de nós, ele não tem mensagens de exceção relacionadas a recursos sem servidor, comocapacidade de throughput. A maioria dos drivers só entende os códigos de erro disponíveis no ApacheCassandra, portanto, o Amazon Keyspaces usa esse mesmo conjunto de códigos de erro para manter acompatibilidade.

89

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de capacidade sem servidor

Para mapear erros do Cassandra para os eventos de capacidade subjacentes, você pode usar a AmazonCloudWatch para monitorar as métricas relevantes do Amazon Keyspaces. Eventos de capacidadeinsuficiente que resultam em erros do lado do cliente podem ser categorizados nesses três grupos combase no recurso que está causando o evento:

• Tabela do— Se escolherProvisionadamodo de capacidade para uma tabela e seu aplicativo excede suataxa de transferência provisionada, você pode observar erros de capacidade insuficiente. Para obtermais informações, consultethe section called “Modo de capacidade de leitura/gravação” (p. 100)

• Partition— Você pode ter eventos de capacidade insuficiente se o tráfego em uma determinada partiçãoexceder 3.000 RCUs ou 1.000 WCUs. Recomendamos distribuir o tráfego uniformemente entre partiçõescomo prática recomendada. Para obter mais informações, consulteModelagem de dados (p. 126)

• Conexão do— Você pode ter uma taxa de transferência insuficiente se exceder a cota para o númeromáximo de operações por segundo, por conexão. Para aumentar a taxa de transferência, você podeaumentar o número de conexões padrão ao configurar a conexão com o driver. Para obter maisinformações, consulte the section called “Ajuste de throughput de consulta CQL” (p. 7) e the sectioncalled “Balanceamento de carga” (p. 8).

Para determinar qual recurso está causando o evento de capacidade insuficiente que está retornandoo erro do lado do cliente, você pode verificar o painel no console do Amazon Keyspaces. Por padrão, oconsole fornece uma visão agregada da capacidade e do tráfego mais comuns relacionados CloudWatchMétricas do noCapacidade e métricas relacionadasseção noCapacidadeguia para a tabela.

Para criar seu próprio painel usando o Amazon CloudWatch, verifique as seguintes métricas do AmazonKeyspaces.

• PerConnectionRequestRateExceeded— Solicitações ao Amazon Keyspaces que excedem acota para a taxa de solicitação por conexão. Cada conexão de cliente com o Amazon Keyspacespode oferecer suporte a até 3000 solicitações CQL por segundo. Você pode executar mais de 3000solicitações por segundo criando várias conexões.

• ReadThrottleEvents— Solicitações ao Amazon Keyspaces que excedem a capacidade de leitura deuma tabela.

• StoragePartitionThroughputCapacityExceeded— Solicitações para uma partição dearmazenamento do Amazon Keyspaces que excedem a capacidade de throughput da partição. Aspartições de armazenamento do Amazon Keyspaces podem suportar até 1000 WCU/WRU por segundoou 3000 RCU/RRU por segundo, ou uma combinação linear dos dois. Para mitigar essas exceções,recomendamos que você revise seu modelo de dados para distribuir o tráfego de leitura/gravação emmais partições.

• WriteThrottleEvents— Solicitações ao Amazon Keyspaces que excedem a capacidade degravação de uma tabela.

Para saber mais sobre o CloudWatch, consultethe section called “Monitoramento comCloudWatch” (p. 226). Para obter uma lista de todos os disponíveis CloudWatch métricas para o AmazonKeyspaces, consultethe section called “Métricas e dimensões” (p. 227).

Note

Para começar a usar um painel personalizado que mostra todas as métricas comumenteobservadas para o Amazon Keyspaces, você pode usar um pré-construído CloudWatch modelodisponível em GitHub noAWSamostrasrepositório do.

Tópicos• Estou recebendoNoHostAvailableerros de capacidade insuficientes do driver do meu cliente (p. 91)• Estou recebendo erros de tempo limite de gravação durante a importação de dados (p. 92)• Não consigo ver o tamanho real de armazenamento de um keyspace ou tabela (p. 93)

90

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de capacidade sem servidor

Estou recebendoNoHostAvailableerros de capacidadeinsuficientes do driver do meu clienteVocê está vendoRead_TimeoutouWrite_Timeoutexceções para uma tabela.

Tentar repetidamente gravar ou ler de uma tabela do Amazon Keyspaces com capacidade insuficientepode resultar em erros do lado do cliente específicos do driver.

Usar o CloudWatch Para monitorar suas métricas de throughput provisionadas e reais e eventos decapacidade insuficientes para a tabela. Por exemplo, uma solicitação de leitura que não tem capacidade dethroughput suficiente falha com umRead_Timeoutexceção e é postado noReadThrottleEventsMétricado. Uma solicitação de gravação que não tem capacidade de throughput suficiente falha comumWrite_Timeoutexceção e é postado noWriteThrottleEventsMétrica do. Para obter maisinformações sobre essas métricas, consulte the section called “Métricas e dimensões” (p. 227).

Para resolver esses problemas, considere uma das seguintes opções.

• Aumentar oTaxa de transferência provisionadaPara a tabela, que é a quantidade máxima de capacidadede throughput que um aplicativo pode consumir. Para obter mais informações, consultethe section called“Unidades de capacidade de leitura e unidades de capacidade de gravação” (p. 103)

• Deixe o serviço gerenciar a capacidade de throughput em seu nome com o dimensionamentoautomático. Para obter mais informações, consultethe section called “Gerenciamento da capacidade dethroughput com o Application Auto Scaling” (p. 105)

• EscolheuSob demandaModo de capacidade para a tabela. Para obter mais informações, consultethesection called “Modo de capacidade sob demanda” (p. 101)

Se você precisar aumentar a cota de capacidade padrão para sua conta, consulteCotas (p. 272).

Você está vendo erros relacionados à capacidade de partição excedida.

A limitação da partição pode ocorrer quando a capacidade da partição é temporariamente excedida (o quepode ser tratado automaticamente por capacidade adaptativa ou capacidade sob demanda). Esse errotambém pode apontar para um problema com o modelo de dados. As partições de armazenamento doAmazon Keyspaces podem suportar até 1000 WCU/WRU por segundo ou 3000 RCU/RRU por segundo,ou uma combinação linear dos dois. Para saber mais sobre como melhorar seu modelo de dados paradistribuir o tráfego de leitura/gravação em mais partições, consulteModelagem de dados (p. 126).

Write_Timeoutexceções também podem ser causadas por uma taxa elevada de operações de gravaçãosimultâneas que incluem dados estáticos e não estáticos na mesma partição lógica. Se o tráfego foresperado para executar várias operações de gravação simultânea que incluem dados estáticos e nãoestáticos dentro da mesma partição lógica, recomendamos gravar dados estáticos e não estáticosseparadamente. Escrever os dados separadamente também ajuda a otimizar os custos de taxa detransferência.

Você está vendo erros relacionados à taxa de solicitação de conexão excedida.

A limitação da conexão pode ser devido a uma das seguintes causas.

• Talvez você não tenha conexões suficientes configuradas por sessão.• Você pode estar recebendo menos conexões do que os pares disponíveis, porque você não tem as

permissões de endpoint da VPC configuradas corretamente. Para obter mais informações sobre políticasde endpoint da VPC, consultethe section called “Usar VPC endpoints de interface para o AmazonKeyspaces” (p. 246).

• Se você estiver usando um driver 4.x, verifique se você tem a validação de nome de host ativada. Odriver habilita a verificação de nome de host TLS por padrão. Essa configuração faz com que o AmazonKeyspaces apareça como um cluster de nó único para o driver. Recomendamos que você desative averificação do nome do host.

91

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de capacidade sem servidor

Recomendamos que você siga estas práticas recomendadas para garantir que suas conexões e a taxa detransferência sejam otimizadas:

• Configure o ajuste de throughput de consulta CQL.

O Amazon Keyspaces oferece suporte a até 3.000 consultas CQL por conexão TCP por segundo, masnão há limite para o número de conexões que um driver pode estabelecer.

A maioria dos drivers Cassandra de código aberto estabelece um pool de conexões com Cassandra econsultas de balanceamento de carga sobre esse pool de conexões. O Amazon Keyspaces expõe 9endereços IP de pares a drivers. O comportamento padrão da maioria dos drivers é estabelecer umaúnica conexão com cada endereço IP de peer. Portanto, a taxa de transferência máxima de consultaCQL de um driver usando as configurações padrão será de 27.000 consultas CQL por segundo.

Para aumentar esse número, recomendamos que você aumente o número de conexões por endereço IPque o driver está mantendo em seu pool de conexões. Por exemplo, definir o máximo de conexões porendereço IP como 2 dobrará a taxa de transferência máxima do driver para 54.000 consultas CQL porsegundo.

• Otimize suas conexões de nó único.

Por padrão, a maioria dos drivers Cassandra de código aberto estabelecem uma ou mais conexõescom cada endereço IP anunciado nosystem.peerstabela ao estabelecer uma sessão. No entanto,determinadas configurações podem levar a um driver que se conecta a um único endereço IP doAmazon Keyspaces. Isso pode acontecer se o driver estiver tentando validar o nome de host SSL dosnós peer (por exemplo, DataStax Drivers Java) ou quando ele está se conectando por meio de umendpoint de VPC.

Para obter a mesma disponibilidade e desempenho que um driver com conexões com vários endereçosIP, recomendamos que você faça o seguinte:• Aumente o número de conexões por IP para 9 ou superior, dependendo da taxa de transferência do

cliente desejada.• Crie uma política de repetição personalizada que garanta que novas tentativas sejam executadas no

mesmo nó.• Se você usar endpoints de VPC, conceda à entidade do IAM usada para se conectar ao Amazon

Keyspaces permissões de acesso para consultar sua VPC para obter informações de endpoint einterface de rede. Isso melhora o balanceamento de carga e aumenta a taxa de transferência deleitura/gravação. Para obter mais informações, consulte??? (p. 246)

Estou recebendo erros de tempo limite de gravação durante aimportação de dadosVocê está recebendo um erro de tempo limite ao carregar dados usando ocqlsh COPYcomando.

Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100

O Amazon Keyspaces usa oReadTimeouteWriteTimeoutexceções para indicar quando uma solicitaçãode gravação falha devido à capacidade de throughput insuficiente. Para ajudar a diagnosticar exceções decapacidade insuficientes, o Amazon Keyspaces publica as seguintes métricas no Amazon CloudWatch.

• WriteThrottleEvents

• ReadThrottledEvents

92

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorlinguagem de definição de dados

• StoragePartitionThroughputCapacityExceeded

Para resolver erros de capacidade insuficiente durante um carregamento de dados, reduza a taxa degravação por trabalhador ou a taxa de ingestão total e, em seguida, tente fazer o upload das linhasnovamente. Para obter mais informações, consultethe section called “Etapa 4: Configurecqlsh COPYFROMconfigurações” (p. 70) Para uma opção de upload de dados mais robusta, considere usar o DSBulk,que está disponível noRepositório GitHub. Para obter instruções detalhadas, consulte the section called“Carregamento de dados usando o DSBulk” (p. 74).

Não consigo ver o tamanho real de armazenamento de umkeyspace ou tabelaVocê não pode ver o tamanho de armazenamento real do espaço de chave ou da tabela.

Você pode estimar o tamanho do armazenamento começando a calcular o tamanho da linha em umatabela. Instruções detalhadas para calcular o tamanho da linha estão disponíveis emthe section called“Calculando o tamanho da linha” (p. 121).

Solução de problemas na linguagem de definiçãode dados no Amazon Keyspaces

Está tendo problemas para criar recursos? Aqui estão alguns problemas comuns e como resolvê-los.

Erros de linguagem de definição deO Amazon Keyspaces executa operações de linguagem de definição de dados (DDL) de forma assíncrona— por exemplo, criando e excluindo espaços de chave e tabelas. Se um aplicativo estiver tentando usar orecurso antes que ele esteja pronto, a operação falhará.

Você pode monitorar o status de criação de novos espaços de chave e tabelas noAWS ManagementConsole, que indica quando um espaço de chave ou tabela está pendente ou ativo. Você também podemonitorar o status da criação de um novo espaço de chave ou tabela programaticamente consultando atabela de esquema do sistema. Um espaço de chave ou tabela fica visível no esquema do sistema quandoestiver pronto para uso.

Note

Para otimizar a criação de espaços de chave usandoAWS CloudFormation, você pode usar esteutilitário para converter scripts CQL em CloudFormation Modelos do. A ferramenta está disponívelnoRepositório GitHub.

Tópicos• Criei um novo keyspace, mas não consigo visualizá-lo ou acessá-lo (p. 94)• Criei uma nova tabela, mas não consigo visualizá-la ou acessá-la (p. 94)• Estou tentando restaurar uma tabela usando o Amazon Keyspaces point-in-time recuperação (PITR),

mas a restauração falha (p. 95)• Estou tentando usar INSERT/UPDATE para editar configurações personalizadas de Time to Live

(TTL), mas a operação falha (p. 95)• Estou tentando fazer upload de dados para minha tabela do Amazon Keyspaces e recebo um erro

sobre exceder o número de colunas (p. 95)• Estou tentando excluir dados na minha tabela do Amazon Keyspaces e a exclusão falha para o

intervalo (p. 96)

93

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de linguagem de definição de

Criei um novo keyspace, mas não consigo visualizá-lo ou acessá-loVocê está recebendo erros do aplicativo que está tentando acessar um novo espaço de chave.

Se você tentar acessar um keyspace recém-criado do Amazon Keyspaces que ainda está sendo criado deforma assíncrona, você receberá um erro. O seguinte erro é um exemplo.

InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured keyspace mykeyspace"

O padrão de design recomendado para verificar quando um novo espaço de chave está pronto para uso épesquisar as tabelas de esquema do sistema do Amazon Keyspaces (system_schema_mcs.*).

Para obter mais informações, consultethe section called “Criar keyspaces” (p. 117)

Criei uma nova tabela, mas não consigo visualizá-la ou acessá-laVocê está recebendo erros do aplicativo que está tentando acessar uma nova tabela.

Se você tentar acessar uma tabela recém-criada do Amazon Keyspaces que ainda está sendo criada deforma assíncrona, você receberá um erro. Por exemplo, tentar consultar uma tabela que ainda não estádisponível falha com umunconfigured table(Nenhum console do Windows encontrado. Você estáexecutando o cmd.exe?”.

InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table mykeyspace.mytable"

Tentando visualizar a tabela comsync_table()falha com umKeyError.

KeyError: 'mytable'

O padrão de design recomendado para verificar quando uma nova tabela está pronta para uso é pesquisaras tabelas de esquema do sistema do Amazon Keyspaces (system_schema_mcs.*).

Este é o exemplo de saída para uma tabela que está sendo criada.

user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

example_table | CREATING

(1 rows)

Este é o exemplo de saída para uma tabela ativa.

user-at-123@cqlsh:system_schema_mcs> select table_name,status from system_schema_mcs.tables where keyspace_name='example_keyspace' and table_name='example_table';

table_name | status

------------+----------

94

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de linguagem de definição de

example_table | ACTIVE

(1 rows)

Para obter mais informações, consultethe section called “Criar tabelas” (p. 118)

Estou tentando restaurar uma tabela usando o AmazonKeyspaces point-in-time recuperação (PITR), mas a restauraçãofalhaSe você estiver tentando restaurar uma tabela do Amazon Keyspaces com point-in-time recuperação(PITR), e você vê o processo de restauração começar, mas não foi concluído com êxito, talvez você nãotenha configurado todas as permissões necessárias necessárias para o processo de restauração paraessa tabela específica.

Além das permissões do usuário, o Amazon Keyspaces pode exigir permissões para executar açõesdurante o processo de restauração em nome do diretor. Esse é o caso se a tabela for criptografada comuma chave gerenciada pelo cliente ou se você estiver usando políticas do IAM que restringem o tráfego deentrada.

Por exemplo, se você estiver usando chaves de condição em sua política do IAM para restringir o tráfegode origem a endpoints ou intervalos de IP específicos, a operação de restauração falhará. Para permitirque o Amazon Keyspaces execute a operação de restauração de tabela em nome do seu principal, vocêdeve adicionar umaws:ViaAWSServicechave de condição global na política do IAM.

Para obter mais informações sobre permissões para restaurar tabelas, consultethe section called“Restaurar permissões” (p. 160).

Estou tentando usar INSERT/UPDATE para editar configuraçõespersonalizadas de Time to Live (TTL), mas a operação falhaSe você estiver tentando inserir ou atualizar um valor TTL personalizado, a operação poderá falhar com oseguinte erro.

TTL is not yet supported.

Para especificar valores TTL personalizados para linhas ou colunas usandoINSERTouUPDATEOperações,você deve primeiro habilitar TTL para a tabela. Você pode habilitar o TTL para uma tabela usandoottlpropriedade personalizada.

Para obter mais informações sobre como habilitar configurações TTL personalizadas para tabelas,consultethe section called “Como habilitar o tempo de vida (TTL) em tabelas existentes usandopropriedades personalizadas” (p. 176).

Estou tentando fazer upload de dados para minha tabela doAmazon Keyspaces e recebo um erro sobre exceder o númerode colunasVocê está carregando dados e excedeu o número de colunas que podem ser atualizadassimultaneamente.

Esse erro ocorre quando o esquema da tabela excede o tamanho máximo de 350 KB. Para obter maisinformações, consulteCotas (p. 272)

95

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorErros de linguagem de definição de

Estou tentando excluir dados na minha tabela do AmazonKeyspaces e a exclusão falha para o intervaloVocê está tentando excluir dados por chave de partição e receber um erro de exclusão de intervalo.

Esse erro ocorre quando você está tentando excluir mais de 1.000 linhas em uma operação de exclusão.

Range delete requests are limited by the amount of items that can be deleted in a single range.

Para obter mais informações, consultethe section called “Excluir intervalo” (p. 8)

Para excluir mais de 1.000 linhas em uma única partição, considere as seguintes opções.

• Excluir por partição — Se a maioria das partições tiver menos de 1.000 linhas, você pode tentar excluirdados por partição. Se as partições contiverem mais de 1.000 linhas, tente excluir pela coluna deagrupamento.

• Excluir por coluna de agrupamento — Se o modelo contiver várias colunas de clustering, você poderáusar a hierarquia de colunas para excluir várias linhas. As colunas de agrupamento são uma estruturaaninhada e você pode excluir muitas linhas operando na coluna de nível superior.

• Excluir por linha individual — Você pode iterar pelas linhas e excluir cada linha por sua chave primáriacompleta (colunas de partição e colunas de agrupamento).

• Como prática recomendada, considere dividir suas linhas entre partições — No Amazon Keyspaces,recomendamos que você distribua sua taxa de transferência entre partições de tabela. Isso distribuidados e acesso uniformemente em todos os recursos físicos, o que fornece a melhor taxa detransferência. Para obter mais informações, consulteModelagem de dados (p. 126)

Considere também as seguintes recomendações ao planejar operações de exclusão para cargas detrabalho pesadas.

• Com o Amazon Keyspaces, as partições podem conter um número praticamente ilimitado de linhas. Issopermite dimensionar partições “mais amplas” do que a orientação tradicional da Cassandra de 100 MB.Não é incomum que séries temporais ou razões cresçam ao longo de um gigabyte de dados ao longo dotempo.

• Com o Amazon Keyspaces, não há estratégias de compactação ou lápides a serem consideradasquando você precisa executar operações de exclusão para cargas de trabalho pesadas. Você podeexcluir quantos dados quiser sem afetar o desempenho da leitura.

96

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Bibliotecas e exemplos

Exemplos e ferramentas de códigodo Amazon Keyspaces (for ApacheCassandra)

Esta seção fornece informações sobre exemplos e ferramentas de código do Amazon Keyspaces (forApache Cassandra).

Tópicos• Bibliotecas e exemplos (p. 97)• Repos de ferramentas de desenvolvedor e amostra destacados (p. 98)

Bibliotecas e exemplosVocê pode encontrar bibliotecas de código aberto do Amazon Keyspaces e ferramentas de desenvolvedorno GitHub noAWSeAWSamostrasRepositórios.

Kit de ferramentas do desenvolvedor do AmazonKeyspaces (for Apache Cassandra)Este repositório fornece uma imagem de encaixe com ferramentas úteis de desenvolvedor para oAmazon Keyspaces. Por exemplo, inclui um arquivo CQLSHRC com práticas recomendadas, umopcionalAWSExpansão de autenticação para cqlsh e ferramentas auxiliares para executar tarefas comuns.O kit de ferramentas é otimizado para o Amazon Keyspaces, mas também funciona com clusters ApacheCassandra.

https://github.com/aws-samples/amazon-keyspaces-toolkit.

Exemplos do Amazon Keyspaces (for ApacheCassandra)Este repositório é nossa lista oficial de código de exemplo do Amazon Keyspaces. O repositório ésubdividido em seções por idioma (consulteExemplos). Cada idioma tem sua própria subseção deexemplos. Esses exemplos demonstram implementações e padrões comuns de serviços do AmazonKeyspaces que você pode usar ao criar aplicativos.

https://github.com/aws-samples/amazon-keyspaces-examples/.

AWSSignature versão 4 (SigV4) plug-ins deautenticaçãoOs plugins permitem que você gerencie o acesso ao Amazon Keyspaces usandoAWS Identity and AccessManagementUsuários e funções (IAM).

Java:https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin.

Node.js:https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin.

97

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Repos de ferramentas dedesenvolvedor e amostra destacados

Python: https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin.

Acessehttps://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin.

Repos de ferramentas de desenvolvedor e amostradestacados

Veja abaixo uma seleção de ferramentas de comunidade úteis para o Amazon Keyspaces (para ApacheCassandra).

AWS CloudFormationModelo para criar o painel doAmazon CloudWatch para as métricas do AmazonKeyspaces (para Apache Cassandra)Este repositório forneceAWS CloudFormationmodelos para configurar rapidamente métricas doCloudWatch para o Amazon Keyspaces. O uso desse modelo permitirá que você comece mais facilmentefornecendo painéis do CloudWatch pré-construídos implantáveis com métricas comumente usadas.

https://github.com/aws-samples/amazon-keyspaces-cloudwatch-cloudformation-templates.

Uso do Amazon Keyspaces (para Apache Cassandra)comAWS LambdaO repositório contém exemplos que mostram como se conectar ao Amazon Keyspaces a partir do Lambda.Veja os seguintes exemplos.

C#/.NET:https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/dotnet/datastax-v3/connection-lambda.

Java:https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/connection-lambda.

Outro exemplo do Lambda que mostra como implantar e usar o Amazon Keyspaces a partir de um PythonLambda está disponível no repositório a seguir.

https://github.com/aws-samples/aws-keyspaces-lambda-python

Uso do Amazon Keyspaces (para Apache Cassandra)com o SpringEste é um exemplo que mostra como usar o Amazon Keyspaces com o Spring Boot.

https://github.com/aws-samples/amazon-keyspaces-spring-app-example

Uso do Amazon Keyspaces (para Apache Cassandra)com o ScalaEste é um exemplo que mostra como se conectar ao Amazon Keyspaces usando o plug-in de autenticaçãoSigv4 com o Scala.

98

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Linguagem de consulta do Amazon Keyspaces(for Apache Cassandra) Cassandra (CQL)

paraAWS CloudFormationconversorhttps://github.com/aws-samples/amazon-keyspaces-examples/tree/main/scala/datastax-v4/connection-sigv4

Linguagem de consulta do Amazon Keyspaces (forApache Cassandra) Cassandra (CQL) paraAWSCloudFormationconversorEste pacote implementa uma ferramenta de linha de comando para converter scripts Apache CassandraQuery Language (CQL) emAWS CloudFormationModelos (CloudFormation), que permitem que osesquemas do Amazon Keyspaces sejam facilmente gerenciados em pilhas do CloudFormation.

https://github.com/aws/amazon-keyspaces-cql-to-cfn-converter.

Ajudantes do Amazon Keyspaces (for ApacheCassandra) para o driver Apache Cassandra paraJavaEste repositório contém políticas de driver, exemplos e práticas recomendadas ao usar o Driver JavaDataStax com o Amazon Keyspaces (para Apache Cassandra).

https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers.

Demonstração de compactação rápida do AmazonKeyspaces (for Apache Cassandra)Este repositório demonstra como compactar, armazenar e ler/gravar objetos grandes para umdesempenho mais rápido e reduzir os custos de throughput e armazenamento.

https://github.com/aws-samples/amazon-keyspaces-compression-example.

Demonstração do Amazon Keyspaces (para ApacheCassandra) e do Amazon S3O Amazon S3 Codec personalizado oferece suporte ao mapeamento transparente e configurável pelousuário de ponteiros UUID para objetos do Amazon S3.

https://github.com/aws-samples/amazon-keyspaces-large-object-s3-demo.

99

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Armazenamento

Gerenciamento de recursos semservidor no Amazon Keyspaces (paraApache Cassandra)

O Amazon Keyspaces (for Apache Cassandra) é sem servidor. Em vez de implantar, gerenciar e manterrecursos de armazenamento e computação para sua carga de trabalho por meio de nós em um cluster,o Amazon Keyspaces aloca recursos de taxa de transferência de leitura/gravação e armazenamentodiretamente para tabelas.

Este capítulo fornece detalhes sobre gerenciamento de recursos sem servidor no Amazon Keyspaces.Para saber como monitorar recursos sem servidor com o Amazon CloudWatch, consultethe section called“Monitoramento com CloudWatch” (p. 226).

Tópicos• Armazenamento no Amazon Keyspaces (p. 100)• Modos de capacidade de leitura/gravação no Amazon Keyspaces (p. 100)• Gerenciamento da capacidade de throughput do Amazon Keyspaces com o Application Auto

Scaling (p. 105)• Uso efetivo da capacidade de intermitência no Amazon Keyspaces (p. 116)

Armazenamento no Amazon KeyspacesO Amazon Keyspaces (para Apache Cassandra) provisiona armazenamento para tabelasautomaticamente com base nos dados reais armazenados em sua tabela. Não é necessário provisionararmazenamento para tabelas antecipadamente. O Amazon Keyspaces dimensiona o armazenamentoda tabela para cima e para baixo automaticamente à medida que o aplicativo grava, atualiza e excluidados. Ao contrário dos clusters tradicionais do Apache Cassandra, o Amazon Keyspaces não requerarmazenamento adicional para suportar operações de sistema de baixo nível, como compactação. Vocêpaga apenas pelo armazenamento usado.

O Amazon Keyspaces configura espaços de chave com um fator de replicação de três por padrão. Vocênão pode modificar o fator de replicação. O Amazon Keyspaces replica dados da tabela três vezesautomaticamente em váriosAWSZonas de disponibilidade para alta disponibilidade. O preço por GB doarmazenamento do Amazon Keyspaces já inclui replicação. ConsulteDefinição de preço do AmazonKeyspaces (for Apache Cassandra)Para obter mais informações.

O Amazon Keyspaces monitora o tamanho de suas tabelas continuamente para determinar as cobrançasde armazenamento. Para obter mais informações sobre como o Amazon Keyspaces calcula o tamanhofaturável dos dados, consultethe section called “Calculando o tamanho da linha” (p. 121).

Modos de capacidade de leitura/gravação noAmazon Keyspaces

O Amazon Keyspaces tem dois modos de capacidade de leitura/gravação para processar leituras egravações em suas tabelas:

100

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorModo de capacidade sob demanda

• Sob demanda (padrão)• Provisionada

O modo de capacidade de leitura/gravação que você escolhe controla como você é cobrado por taxa derendimento de leitura e gravação e como a capacidade de taxa de rendimento de tabela é gerenciada.

Tópicos• Modo de capacidade sob demanda (p. 101)• Modo de capacidade de throughput provisionado (p. 103)• Gerenciando e visualizando modos de capacidade (p. 104)• Considerações ao mudar os modos de capacidade (p. 105)

Modo de capacidade sob demandaAmazon Keyspaces (para Apache Cassandra)sob demandaO modo de capacidade é uma opçãode faturamento flexível capaz de servir centenas de solicitações por segundo sem planejamento decapacidade. Esta opção oferece pay-per-request Preços para solicitações de leitura e gravação para quevocê pague apenas pelo o que usar.

Quando você escolhe o modo sob demanda, o Amazon Keyspaces pode aumentar a capacidade de taxade rendimento para qualquer nível de tráfego anteriormente alcançado instantaneamente e, em seguida,voltar para baixo quando o tráfego de aplicativos diminui. Se o nível de tráfego de uma carga de trabalhoatingir um novo pico, o serviço fará adaptações rapidamente para aumentar a capacidade de rendimentopara sua tabela. Você pode ativar o modo de capacidade sob demanda para tabelas novas e existentes.

Modo sob demanda é uma boa opção se qualquer uma das declarações a seguir for verdadeira:

• Você cria novas tabelas com workloads desconhecidas.• Você tem tráfego de aplicativos imprevisível.• Você prefere a facilidade de pagar somente pelo que usar.

Para começar com o modo sob demanda, você pode criar uma nova tabela ou atualizar uma tabelaexistente para usar o modo de capacidade sob demanda usando o console ou com algumas linhas decódigo Cassandra Query Language (CQL). Para obter mais informações, consultethe section called“Tabelas” (p. 261)

Tópicos• Unidades de solicitação de leitura e unidades de solicitação de gravação (p. 101)• Propriedades de pico de tráfego e escalonamento (p. 102)• Taxa de transferência inicial para o modo de capacidade sob demanda (p. 102)

Unidades de solicitação de leitura e unidades de solicitação degravaçãoCom tabelas de modo de capacidade sob demanda, você não precisa especificar quanto de taxa derendimento de leitura e gravação você espera que seu aplicativo use antecipadamente. O AmazonKeyspaces cobra você pelas leituras e gravações que você realiza em suas tabelas em termos deunidades de solicitação de leitura (RRUs) e unidades de solicitação de gravação (WRUs).

• UmRRUrepresenta umLOCAL_QUORUMsolicitação de leitura, ou dois LOCAL_ONEsolicitações de leitura,para uma linha de até 4 KB de tamanho. Se você precisar ler uma linha maior que 4 KB, a operação de

101

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorModo de capacidade sob demanda

leitura usará RRUs adicionais. O número total de RRUs necessárias varia de acordo com o tamanhoda linha e se você deseja usarLOCAL_QUORUMouLOCAL_ONEconsistência de leitura. Por exemplo, leruma linha de 8 KB requer 2 RRUs usandoLOCAL_QUORUMconsistência de leitura e 1 RRU, se vocêescolherLOCAL_ONEconsistência de leitura.

• UmWRUrepresenta uma gravação para uma linha de até 1 KB de tamanho. Todas as gravações estãousandoLOCAL_QUORUMconsistência, e não há custo adicional pelo uso de transações leves (LWTs).Se você precisar gravar uma linha maior que 1 KB, a operação de gravação usará WCUs adicionais. Onúmero total de WCUs necessárias varia de acordo com o tamanho da linha. Por exemplo, se o tamanhoda sua linha for 2 KB, são necessárias duas WCUs para executar uma solicitação de gravação.

Para obter informações sobre os níveis de consistência compatíveis, consultethe section called “Níveis deconsistência compatíveis do Cassandra” (p. 13).

Propriedades de pico de tráfego e escalonamentoTabelas do Amazon Keyspaces que usam modo de capacidade sob demanda automaticamente adaptam-se ao volume de tráfego de seu aplicativo. O modo de capacidade sob demanda instantaneamente a atéo dobro do pico de tráfego anterior em uma tabela. Por exemplo, o padrão de tráfego do aplicativo podevariar entre 5.000 e 10.000LOCAL_QUORUMleituras por segundo, onde 10.000 leituras por segundo é o picode tráfego anterior.

Com esse padrão, o modo de capacidade sob demanda acomoda instantaneamente o tráfego sustentadode até 20.000 leituras por segundo. Se seu aplicativo aguentar tráfego de 20.000 leituras por segundo,esse pico torna-se seu novo pico anterior, habilitando tráfego subsequente de até 40.000 leituras porsegundo.

Se precisar de mais que o dobro de seu pico anterior em uma tabela, o Amazon Keyspaces alocaautomaticamente mais capacidade que seu volume de tráfego aumenta. Isso ajuda a garantir que suatabela tenha capacidade de transferência suficiente para processar as solicitações adicionais. No entanto,você pode observar erros de capacidade de rendimento insuficientes se você exceder o dobro de seu picoanterior dentro de 30 minutos.

Por exemplo, suponha que o padrão de tráfego de seu aplicativo varia entre 5.000 e 10.000 leiturasfortemente consistentes por segundo, onde 20.000 leituras por segundo é o pico de tráfego anteriormentealcançado. Nesse caso, o serviço recomenda que você espacie seu crescimento de tráfego em pelomenos 30 minutos antes de conduzir até 40.000 leituras por segundo.

Para saber mais sobre cotas padrão para sua conta e como aumentá-las, consulteCotas (p. 272).

Taxa de transferência inicial para o modo de capacidade sobdemandaSe você criar uma nova tabela com modo de capacidade sob demanda habilitado ou trocar uma tabelaexistente para o modo de capacidade sob demanda pela primeira vez, a tabela terá as configurações depico anterior a seguir, mesmo que não tenha servido tráfego anteriormente usando o modo de capacidadesob demanda:

• Tabela recém-criada com o modo de capacidade sob demanda: O pico anterior é de 2.000 WRUs ou6.000 RRUs. Você pode dirigir até o dobro do pico anterior imediatamente. Isso permite que tabelas sobdemanda criadas recentemente atendam até 4.000 WRUs ou 12.000 RRUs, ou qualquer combinaçãolinear dos dois.

• A tabela existente mudou para o modo de capacidade sob demanda: O pico anterior é a metade dosWCUs e RCUs anteriores provisionados para a tabela ou as configurações para uma tabela recém-criada com modo de capacidade sob demanda, o que for maior.

102

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Modo de capacidade de throughput provisionado

Modo de capacidade de throughput provisionadoSe escolherThroughput provisionadoModo de capacidade, você especifica o número de leituras egravações por segundo necessárias para o aplicativo. Isso ajuda a gerenciar seu uso do AmazonKeyspaces para permanecer dentro ou abaixo de uma taxa de solicitação definida para otimizar preçoe manter a previsão. Para saber mais sobre o dimensionamento automático para taxa de transferênciaprovisionada, consultethe section called “Gerenciamento da capacidade de throughput com o ApplicationAuto Scaling” (p. 105).

Modo de capacidade de throughput provisionado é uma boa opção se qualquer uma das declarações aseguir for verdadeira:

• Você tem tráfego de aplicativos previsível.• Você executa aplicativos cujo tráfego é consistente ou aumenta gradualmente.• Você pode prever os requisitos de capacidade para otimizar o preço.

Unidades de capacidade de leitura e unidades de capacidade degravaçãoPara tabelas de modo de capacidade de taxa de rendimento provisionado, você especifica a capacidadede taxa de rendimento em termos de unidades de capacidade de leitura (RCUs) e unidades de capacidadede gravação (WCUs):

• UmRCUrepresenta umLOCAL_QUORUMleitura por segundo, ou doisLOCAL_ONEleituras por segundo,para uma linha de até 4 KB de tamanho. Se você precisar ler uma linha maior que 4 KB, a operação deleitura usará RCUs adicionais.

O número total de RCUs necessárias varia de acordo com o tamanho da linha e se vocêdesejaLOCAL_QUORUMouLOCAL_ONElê. Por exemplo, se o tamanho da linha for de 8 KB, vocêprecisará de 2 RCUs para sustentar umaLOCAL_QUORUMleitura por segundo e 1 RCU, se vocêescolherLOCAL_ONElê.

• UmWCUrepresenta uma gravação por segundo para uma linha de até 1 KB de tamanho. Todas asgravações estão usandoLOCAL_QUORUMconsistência, e não há custo adicional pelo uso de transaçõesleves (LWTs). Se você precisar gravar uma linha maior que 1 KB, a operação de gravação usa WCUsadicionais.

O número total de WCUs necessárias varia de acordo com o tamanho da linha. Por exemplo, se otamanho da sua linha for 2 KB, são necessárias duas WCUs para dar suporte a uma solicitação degravação por segundo.

Se o seu aplicativo ler ou gravar linhas maiores (até o tamanho de linha máximo do Amazon Keyspacesde 1 MB), ele consumirá mais unidades de capacidade. Para saber mais sobre como estimar o tamanhoda linha, consultethe section called “Calculando o tamanho da linha” (p. 121). Por exemplo, suponha quevocê crie uma tabela provisionada com 6 RCUs e 6 WCUs. Com essas configurações, seu aplicativo podefazer o seguinte:

• ConduzirLOCAL_QUORUMLeituras de até 24 KB por segundo (4 KB × 6 RCUs).• ConduzirLOCAL_ONELeituras de até 48 KB por segundo (o dobro do throughput de leitura).• Grave até 6 KB por segundo (1 KB × 6 WCUs).

Throughput provisionadoé a quantidade máxima de capacidade de throughput que um aplicativo podeconsumir de uma tabela. Se o aplicativo exceder sua capacidade de throughput provisionado, você poderáobservar erros de capacidade insuficientes.

103

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Gerenciando e visualizando modos de capacidade

Por exemplo, uma solicitação de leitura que não tem capacidade de throughput suficiente falha comumRead_Timeoutexceção e é postado noReadThrottleEventsMétrica do. Uma solicitação degravação que não tem capacidade de throughput suficiente falha com umWrite_Timeoutexceção e épostado noWriteThrottleEventsMétrica do.

Você pode usar a Amazon CloudWatch para monitorar suas métricas de throughput provisionadas e reaise eventos de capacidade insuficientes. Para obter mais informações sobre essas métricas, consulte thesection called “Métricas e dimensões” (p. 227).

Note

Erros repetidos devido à capacidade insuficiente podem levar a exceções específicasdo driver do lado do cliente, por exemplo, DataStax O driver Java falha comumNoHostAvailableException.

Para alterar as configurações de capacidade de throughput para tabelas, você pode usar oAWSManagement Consoleou oALTER TABLEinstrução usando CQL, para obter mais informações, consultethesection called “ALTER TABLE” (p. 263).

Para saber mais sobre cotas padrão para sua conta e como aumentá-las, consulteCotas (p. 272).

Gerenciando e visualizando modos de capacidadeVocê pode consultar a tabela do sistema no espaço de chave do sistema Amazon Keyspaces pararevisar as informações do modo de capacidade sobre uma tabela. Você também pode ver se uma tabelaestá usando o modo de capacidade de throughput sob demanda ou provisionada. Se a tabela estiverconfigurada com o modo de capacidade de throughput provisionado, você poderá ver a capacidade dethroughput provisionada para a tabela.

Exemplo

SELECT * from system_schema_mcs.tables where keyspace_name = 'mykeyspace' and table_name = 'mytable';

Uma tabela configurada com o modo de capacidade sob demanda retorna o seguinte.

{ 'capacity_mode': { 'last_update_to_pay_per_request_timestamp': '1579551547603', 'throughput_mode': 'PAY_PER_REQUEST' } }

Uma tabela configurada com o modo de capacidade de throughput provisionado retorna o seguinte.

{ 'capacity_mode': { 'last_update_to_pay_per_request_timestamp': '1579048006000', 'read_capacity_units': '5000', 'throughput_mode': 'PROVISIONED', 'write_capacity_units': '6000' } }

104

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Considerações ao mudar os modos de capacidade

Olast_update_to_pay_per_request_timestampo valor é medido em milissegundos.

Para alterar a capacidade de throughput provisionada de uma tabela, usethe section called “ALTERTABLE” (p. 263).

Considerações ao mudar os modos de capacidadeQuando você troca uma tabela de modo de capacidade provisionado para modo de capacidade sobdemanda, o Amazon Keyspaces faz várias alterações na estrutura de sua tabela e partições. Esseprocesso pode levar alguns minutos. Durante o período de troca, sua tabela entrega taxa de rendimentoque é consistente com os valores de WCU e RCU provisionados anteriormente.

Quando você volta para o modo de capacidade sob demanda para modo de capacidade provisionado, suatabela entrega taxa de rendimento que é consistente com o pico anterior alcançado quando a tabela foidefinida como modo de capacidade sob demanda.

Note

Você pode alternar entre os modos de capacidade de leitura/gravação uma vez a cada 24 horas.

Gerenciamento da capacidade de throughput doAmazon Keyspaces com o Application Auto Scaling

Muitas workloads de banco de dados são cíclicas por natureza ou são difíceis de prever comantecedência. Por exemplo, considere um aplicativo de rede social na qual a maioria dos usuários estáativa durante o horário diurno. O banco de dados deve ser capaz de lidar com a atividade durante o dia,mas não há necessidade dos mesmos níveis de throughput à noite.

Outro exemplo pode ser um novo aplicativo de jogos para celular que está passando por uma rápidaadoção. Se o jogo se tornar muito popular, talvez ele exceda os recursos de banco de dados disponíveis,o que resultaria em desempenho lento e clientes insatisfeitos. Esses tipos de workloads muitas vezesexigem intervenção manual para dimensionar recursos de banco de dados, aumentando-os ou diminuindo-os em resposta a diferentes níveis de uso.

O Amazon Keyspaces (para Apache Cassandra) ajuda você a provisionar a capacidade de taxa detransferência de forma eficiente para cargas de trabalho variáveis, ajustando a capacidade de taxa detransferência automaticamente em resposta ao tráfego real do aplicativo. O Amazon Keyspaces usa oserviço Application Auto Scaling para aumentar e diminuir a capacidade de leitura e gravação de umatabela em seu nome. Para obter mais informações sobre o Application Auto Scaling do, consulte oGuia dousuário do Application Auto Scaling.

Note

Para começar a usar o escalonamento automático do Amazon Keyspaces rapidamente,consultethe section called “Usar o console” (p. 107). Você não pode gerenciar políticas deescalabilidade do Amazon Keyspaces com Cassandra Query Language (CQL). Para saber comogerenciar políticas de escalabilidade do Amazon Keyspaces programaticamente, consultethesection called “Gerenciar de forma programática” (p. 110).

Como o escalonamento automático do AmazonKeyspaces funcionaO diagrama a seguir fornece uma visão geral de alto nível de como o Auto Scaling do Amazon Keyspacesgerencia a capacidade de taxa de transferência de uma tabela.

105

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorComo o escalonamento automático

do Amazon Keyspaces funciona

Para habilitar o Auto Scaling do para uma tabela, você cria umpolítica de escalabilidade. A políticade escalabilidade especifica se você deseja dimensionar a capacidade de leitura ou a capacidade degravação (ou ambas), bem como as configurações mínimas e máximas de unidades de capacidadeprovisionadas para a tabela.

A política de escalabilidade também define umUtilização pretendida. A utilização prevista é a proporçãoentre unidades de capacidade consumidas e unidades de capacidade provisionadas em um ponto notempo, expressa como porcentagem. O Auto Scaling do usa umRastreamento de destino dePara ajustar ataxa de transferência provisionada da tabela para cima ou para baixo em resposta às cargas de trabalhoreais. É feito isso de forma que a utilização real da capacidade permaneça igual ou próxima da utilizaçãopretendida.

É possível definir os valores de utilização de destino de escalabilidade automática entre 20% e 90%para sua capacidade de gravação e leitura. A taxa de utilização alvo padrão é 70%. Você pode definir autilização de destino como uma porcentagem menor se o tráfego mudar rapidamente e você quiser quea capacidade comece a aumentar mais cedo. Você também pode definir a taxa de utilização de destinopara uma taxa mais alta se o tráfego do aplicativo mudar mais lentamente e você quiser reduzir o custo dataxa de transferência. Para obter mais informações sobre políticas de escalabilidade, consultePolíticas dedimensionamento com monitoramento do objetivo para o Application Auto Scaling.

Quando você criar uma política de escalabilidade, o Application Auto Scaling cria dois pares deAmazonCloudWatchalarmes do em seu nome. Cada par representa seus limites superiores e inferiorespara configurações de throughput provisionado e consumido. Esses alarmes do CloudWatch sãodisparados quando a utilização real da tabela se desvia da utilização prevista por um período prolongado.Para saber mais sobre a AmazonCloudWatch, consulte oAmazôniaCloudWatchGuia do usuário do.

Quando um dosCloudWatchOs alarmes do são disparados, o Amazon Simple Notification Service (AmazonSNS) enviará uma notificação (caso você tenha habilitado esse recurso). OCloudWatchO alarme chamao Application Auto Scaling para avaliar sua política de escalabilidade. Isso, por sua vez, emite umasolicitação de Tabela de alterações ao Amazon Keyspaces para ajustar a capacidade provisionada databela para cima ou para baixo conforme apropriado. Para saber mais sobre notificações do Amazon SNS,consulteConfigurar notificações do Amazon SNS.

O Amazon Keyspaces processa solicitação Alter Table aumentando (ou diminuindo) a capacidade de taxade transferência provisionada da tabela de forma que ela se aproxime da sua utilização pretendida.

Note

O Auto Scaling do Amazon Keyspaces modifica as configurações de throughput provisionadosomente quando a carga de trabalho real permanece elevada (ou baixa) por um período

106

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Observações de uso

prolongado de vários minutos. O algoritmo de rastreamento de alvo do Application Auto Scalingprocura manter a utilização pretendida em ou perto do seu valor escolhido em longo prazo. Picosde atividade súbitos de curta duração são acomodados pela capacidade de explosão interna databela.

Observações de usoAntes de começar a usar o Auto Scaling do Amazon Keyspaces, você deve estar ciente do seguinte:

• O Auto Scaling do Amazon Keyspaces pode aumentar a capacidade de leitura ou gravação sempreque necessário, de acordo com a sua política de escalabilidade. Todas as cotas do Amazon Keyspacespermanecem em vigor, conforme descrito emCotas (p. 272).

• O Auto Scaling do Amazon Keyspaces não impede a modificação manual de configurações de taxa detransferência provisionada. Esses ajustes manuais não afetam nenhum existenteCloudWatchalarmesanexados à política de escalabilidade.

• Se você usar o console para criar uma tabela com capacidade de throughput provisionado, o AutoScaling do Amazon Keyspaces estará habilitada por padrão. É possível modificar as configurações deescalabilidade automática a qualquer momento. Para obter mais informações, consulte the section called“Usar o console” (p. 107).

• Se você estiver usandoAWS CloudFormationpara criar políticas de escalabilidade, você deve gerenciaras políticas de escalabilidade deAWS CloudFormationpara que a pilha esteja sincronizada com o modelode pilha. Se você alterar as políticas de escalabilidade do Amazon Keyspaces ou do Application AutoScaling, elas serão substituídas pelos valores originais daAWS CloudFormationmodelo de pilha quandoa pilha é redefinida.

• Se você usarCloudTrailpara monitorar o dimensionamento automático do Amazon Keyspaces, vocêpode ver alertas de chamadas feitas pelo Application Auto Scaling como parte de seu processode validação de configuração. Você pode filtrar esses alertas usando oinvokedBycampo, quecontémapplication-autoscaling.amazonaws.compara essas verificações de validação.

Gerenciando políticas de escalabilidade automática doAmazon Keyspaces com o consoleVocê pode usar o console para habilitar o dimensionamento automático do Amazon Keyspaces paratabelas novas e existentes. Você também pode usar o console para modificar as configurações de AutoScaling ou desabilitar o Auto Scaling.

Note

Para obter recursos mais avançados, como a definição de redução e expansão de períodosde desaquecimento, use oAWS Command Line Interface(AWS CLI) para gerenciar políticas deescalabilidade do Amazon Keyspaces programaticamente. Para obter mais informações, consulteGerenciando políticas de escalabilidade do Amazon Keyspaces programaticamente (p. 110).

Tópicos• Antes de começar: Concedendo permissões de usuário para o escalonamento automático do Amazon

Keyspaces (p. 108)• Como criar uma nova tabela com o Auto Scaling do Amazon Keyspaces habilitada (p. 108)• Habilitando o dimensionamento automático do Amazon Keyspaces em tabelas existentes (p. 109)• Modificando ou desabilitando as configurações de escalabilidade automática do Amazon

Keyspaces (p. 110)• Exibindo atividades de escalabilidade automática do Amazon Keyspaces no console (p. 110)

107

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o console

Antes de começar: Concedendo permissões de usuário para oescalonamento automático do Amazon KeyspacesPara começar, confirme se o usuário tem as permissões apropriadas para criar e gerenciar configuraçõesde dimensionamento automático. DentroAWS Identity and Access Management(IAM), oAWSpolíticagerenciadaAmazonKeyspacesFullAccessé necessário para gerenciar políticas de escalabilidade doAmazon Keyspaces.

Important

application-autoscaling:*permissões são necessárias para desativar o dimensionamentoautomático em uma tabela. O dimensionamento automático deve ser desativado usandothesection called “Desative o dimensionamento automático em uma tabela existente: Cancelar oregistro de um destino escalável” (p. 116)Antes de excluir uma tabela.

Para configurar um usuário do IAM para acesso ao console do Amazon Keyspaces e Auto Scaling doAmazon Keyspaces, adicione a política a seguir.

Para anexar oAmazonKeyspacesFullAccessregra

1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

2. No painel do console do IAM, escolha Users (Usuários) e, em seguida, escolha seu usuário do IAM nalista.

3. Na página Summary (Resumo), escolha Add permissions (Adicionar permissões).4. Selecione Attach existing policies directly.5. Na lista de políticas, selecioneAmazonKeyspacesFullAccesse depois escolhaPróximo: Análise.6. Selecione Add permissions (Adicionar permissões).

Como criar uma nova tabela com o Auto Scaling do AmazonKeyspaces habilitada

Note

O escalabilidade automática do Amazon Keyspaces requer a presença de uma função vinculadaao serviço (AWSServiceRoleForApplicationAutoScaling_CassandraTable) que realizaações de escalabilidade automática em seu nome. Esta função é criada automaticamente paravocê. Para obter mais informações, consulte the section called “Uso de funções vinculadas aserviço” (p. 223).

Para criar uma nova tabela com o Auto Scaling habilitada

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas) e Create table (Criar tabela).3. NoCriar tabelaNa página doDetalhes da tabelaSeção, selecione um espaço de chave e forneça um

nome para a nova tabela.4. NoEsquema, crie o esquema para sua tabela.5. NoConfigurações da tabelaSeção, escolhaPersonalizar as configurações.6. Continue paraConfigurações de capacidade de leitura/gravação.7. para oModo de capacidade, escolhaProvisionada.8. NoCapacidade de leituraseção, confirme queEscalabilidade automáticaEstá selecionado.

108

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar o console

Nesta etapa, você seleciona as unidades de capacidade de leitura mínima e máxima para a tabela,bem como a utilização de destino.

• Unidades de capacidade mínima— Insira o valor para o nível mínimo de taxa de transferência que atabela deve estar sempre pronta para suportar. O valor deve estar entre 1 e a cota máxima de taxade transferência por segundo para sua conta (40.000 por padrão).

• Unidades de capacidade máxima— Insira a quantidade máxima de taxa de transferência quevocê deseja provisionar para a tabela. O valor deve estar entre 1 e a cota máxima de taxa detransferência por segundo para sua conta (40.000 por padrão).

• Utilização de destino— Insira uma taxa de utilização alvo entre 20% e 90%. Quando o tráfegoexcede a taxa de utilização de destino definida, a capacidade é dimensionada automaticamente.Quando o tráfego fica abaixo do destino definido, ele é automaticamente reduzido novamente.

Note

Para saber mais sobre cotas padrão da sua conta e como aumentá-las,consulteCotas (p. 272).

9. NoCapacidade de gravação, escolha as mesmas configurações definidas na etapa anterior paracapacidade de leitura ou insira valores de capacidade de gravação manualmente.

10. Escolha Create table. Sua tabela é criada com os parâmetros de escalabilidade automáticaespecificados.

Note

A ativação do dimensionamento automático do Amazon Keyspaces não está incluída no comandoCassandra Query Language (CQL) mostrado no console. Ele é concluído com uma chamada deAPI separada que registrará a tabela como um destino escalável com o Application Auto Scaling.

Habilitando o dimensionamento automático do AmazonKeyspaces em tabelas existentes

Note

O escalabilidade automática do Amazon Keyspaces requer a presença de uma função vinculadaao serviço (AWSServiceRoleForApplicationAutoScaling_CassandraTable) que realizaações de escalabilidade automática em seu nome. Esta função é criada automaticamente paravocê. Para obter mais informações, consulte the section called “Uso de funções vinculadas aserviço” (p. 223).

Para habilitar a escalabilidade automática do Amazon Keyspaces para uma tabela existente

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. Escolha a tabela com a qual você deseja trabalhar e depois escolhaAlterar as configurações decapacidade.

3. SelectEscalabilidade automáticae veja o passo 6 emComo criar uma nova tabela com o Auto Scalingdo Amazon Keyspaces habilitada (p. 108)Para editar a capacidade de leitura e gravação.

4. Quando as configurações de dimensionamento automático estiverem definidas, escolhaSalvar.

109

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

Note

A ativação do dimensionamento automático do Amazon Keyspaces não está incluída no comandoCQL mostrado no console. Ele é concluído com uma chamada de API separada que registrará atabela como um destino escalável com o Application Auto Scaling.

Modificando ou desabilitando as configurações de escalabilidadeautomática do Amazon KeyspacesVocê pode usar oAWS Management Consolepara modificar as configurações de escalabilidadeautomática do Amazon Keyspaces. Para fazer isso, acesse a tabela que você deseja editar e depoisescolhaAlterar as configurações de capacidade. Você pode modificar as configurações noCapacidadede leituraouCapacidade de gravaçãoSeções. Para obter mais informações sobre essas configurações,consulte Como criar uma nova tabela com o Auto Scaling do Amazon Keyspaces habilitada (p. 108).

Para desativar o dimensionamento automático do Amazon Keyspaces, desmarqueEscalabilidadeautomática. A desativação do dimensionamento automático cancela o registro da tabela como um destinoescalável. Para excluir a função vinculada ao serviço usada pelo Application Auto Scaling para acessar atabela, Siga as etapas em??? (p. 224).

Note

Para excluir a função vinculada ao serviço usada pelo Application Auto Scaling, você devedesabilitar a escalabilidade automática em todas as tabelas da conta em todas as tabelas daconta em todas asRegiões da AWS.

Exibindo atividades de escalabilidade automática do AmazonKeyspaces no consoleVocê pode monitorar como o escalonamento automático do Amazon Keyspaces usa recursos usandoa AmazonCloudWatch, que gera métricas sobre uso e desempenho. Siga as etapas noApplication AutoScalingGuia do usuário dopara criar umCloudWatchPainel do.

Gerenciando políticas de escalabilidade do AmazonKeyspaces programaticamentePara atualizar e gerenciar as configurações de escalabilidade automática do Amazon Keyspaces de formaprogramática, você pode usar oAWS Command Line Interface(AWS CLI) ou oAWSAPI. As políticas deescalabilidade do Amazon Keyspaces não podem ser gerenciadas usando Cassandra Query Language(CQL). Este tópico fornece uma visão geral das tarefas de dimensionamento automático que você podegerenciar programaticamente usando oAWS CLI.

Para obter mais informações sobre o Application Auto ScalingAWS CLIOs comandos descritos nestetópico, consulteautoscaling de aplicativosnoAWS CLIReferência de comando. Para obter mais informaçõessobre como usar oAWSAPI, consulte aReferência à API do Application Auto Scaling.

Tópicos• Antes de começar (p. 110)• Habilite o dimensionamento automático em uma tabela existente: Registrar um destino

escalável (p. 111)• Exibir destinos escaláveis registrados com o Application Auto Scaling (p. 111)

Antes de começarVocê precisa concluir as tarefas seguintes antes de começar.

110

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

Configurar permissõesCaso ainda não tenha feito isso, você deve configurar as permissões apropriadas para o usuário criar egerenciar configurações de escalabilidade automática. DentroAWS Identity and Access Management(IAM),oAWSpolítica gerenciadaAmazonKeyspacesFullAccessé necessário para gerenciar políticas deescalabilidade do Amazon Keyspaces. Para obter detalhes das etapas, consultethe section called“Antes de começar: Concedendo permissões de usuário para o escalonamento automático do AmazonKeyspaces” (p. 108).

Instalar a AWS CLICaso ainda não tenha feito isso, você deve instalar e configurar a AWS CLI. Para fazer isso, vá para oAWSCommand Line InterfaceGuia do usuário e siga estas instruções:

• Instalar o AWS CLI• Configurar a AWS CLI

Habilite o dimensionamento automático em uma tabela existente:Registrar um destino escalávelPara uma tabela existente do Amazon Keyspaces, você pode registrar a capacidade de gravação ouleitura da tabela como um destino escalável com o Application Auto Scaling. Isso permite que o ApplicationAuto Scaling ajuste a capacidade de gravação ou leitura provisionada da tabela que você especificou. Noexemplo a seguir, registramosmytableComo um destino escalável com capacidade de gravação dentro dointervalo de 5 a 10 unidades de capacidade.

Note

O dimensionamento automático do Amazon Keyspaces requer a presença de uma funçãovinculada ao serviço (AWSServiceRoleForApplicationAutoScaling_CassandraTable)que executa ações de escalabilidade automática em seu nome. Esta função é criadaautomaticamente para você. Para obter mais informações, consulte the section called “Uso defunções vinculadas a serviço” (p. 223).

Agora, insira o comando a seguir para registrar uma tabela como destino escalável.

aws application-autoscaling register-scalable-target \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --min-capacity 5 \ --max-capacity 10

Exibir destinos escaláveis registrados com o Application AutoScalingPara visualizar detalhes de um registro, use o comando a seguir:

aws application-autoscaling describe-scalable-targets --service-namespace cassandra --resource-ids "keyspace/mykeyspace/table/mytable"

A saída desse comando parece com o exemplo a seguir.

{ "ScalableTargets": [

111

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

{ "ServiceNamespace": "cassandra", "ResourceId": "keyspace/mykeyspace/table/mytable", "ScalableDimension": "cassandra:table:WriteCapacityUnits", "MinCapacity": 5, "MaxCapacity": 10, "RoleARN": "arn:aws:iam::012345678910:role/aws-service-role/cassandra.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_CassandraTable", "CreationTime": 1587495787.412, "SuspendedState": { "DynamicScalingInSuspended": false, "DynamicScalingOutSuspended": false, "ScheduledScalingSuspended": false } } ]}

Exibir destinos escaláveis registrados com o Application Auto Scaling

Para visualizar detalhes de um registro, use o comando a seguir:

aws application-autoscaling describe-scalable-targets \ --service-namespace cassandra \ --resource-id "keyspace\mytable"

Criar uma política de escalabilidade

Para gerenciar as configurações de escalabilidade automática de forma programática, você cria umapolítica de escalabilidade para a tabela. A política define as condições que direcionam o Application AutoScaling para ajustar a taxa de transferência provisionada da tabela e as ações que serão executadasquando ele fizer isso. Neste exemplo, você associa essa política ao destino escalável que definiuanteriormente (unidades de capacidade de gravação para omytabletabela).

A política contém os elementos a seguir:

• PredefinedMetricSpecification- A métrica que o Application Auto Scaling tem permissão paraajustar. Para o Amazon Keyspaces, os valores a seguir são válidos paraPredefinedMetricType:• CassandraReadCapacityUtilization

• CassandraWriteCapacityUtilization

• ScaleOutCooldown- Uma ação de expansão aumenta a taxa de transferência provisionada da tabela.Para adicionar um desaquecimento nas atividades de expansão, especifique um valor, em segundos,paraScaleOutCooldown. O valor padrão é 0. Para obter mais informações, consultePolíticas deescalabilidade de rastreamento de destino no Guia do usuário do Application Auto Scaling.

• ScaleInCooldown— Uma atividade de expansão diminui a taxa de transferência provisionada databela. Para adicionar um desaquecimento para atividades de expansão, especifique um valor, emsegundos, paraScaleInCooldown. O valor padrão é 0. Para obter mais informações, consultePolíticasde escalabilidade de rastreamento de destino no Guia do usuário do Application Auto Scaling.

• TargetValue- O Application Auto Scaling garante que a taxa de capacidade consumida paracapacidade provisionada permaneça nesse valor ou próximo a ele. Você define TargetValue comouma porcentagem.

Note

Para compreender melhor como o TargetValue funciona, suponha que você tenha uma tabelacom uma configuração de taxa de transferência provisionada de 200 unidades de capacidade

112

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

de gravação. Você decide criar uma política de escalabilidade para essa tabela, com umTargetValue de 70%.Agora, suponha que você comece a direcionar tráfego de gravação para a tabela de forma quea taxa de transferência de gravação real seja de 150 unidades de capacidade. Oconsumed-to-provisionedAgora, a taxa é (150/200) ou 75%. Essa taxa excede o valor pretendido. Portanto, oApplication Auto Scaling aumenta a capacidade de gravação provisionada para 215 de modo quea taxa seja (150/215) ou 69,77% — tão próxima ao seu TargetValue quanto possível, mas semexcedê-lo.

para omytable, você definiuTargetValuePara 50 por cento. O Application Auto Scaling ajusta ataxa de transferência provisionada da tabela dentro do intervalo de 5 a 10 unidades de capacidade(consulteHabilite o dimensionamento automático em uma tabela existente: Registrar um destinoescalável (p. 111)) para que oconsumed-to-provisioneda proporção permanece em ou perto de 50%.Você define os valores de ScaleOutCooldown e ScaleInCooldown para 60 segundos.

1. Crie um arquivo que contenha a política que você deseja aplicar à tabela como no exemplo a seguir.Em seguida, salve o arquivo, para este exemplo, com o nomescaling-policy.json.

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60, "TargetValue": 50.0}

2. Use o comando da AWS CLI a seguir para criar a política.

aws application-autoscaling put-scaling-policy \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy" \ --policy-type "TargetTrackingScaling" \ --target-tracking-scaling-policy-configuration file://scaling-policy.json

Na saída desse comando, você pode ver oCloudWatchOs alarmes do Application Auto Scaling cria - umpara a capacidade superior e outra para o limite inferior da faixa do destino de escalabilidade.

{ "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:8d606c33-2078-4f37-8305-36e89c56a779:resource/cassandra/keyspace/mykeyspace/table/mytable:policyName/MyScalingPolicy", "Alarms": [ { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23" }, {

113

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

"AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215" } ]}

Exibir uma política de escalabilidadeVocê pode usar o seguinteAWS CLIPara visualizar os detalhes das políticas de escalabilidade existentes:

aws application-autoscaling describe-scaling-policies \ --service-namespace cassandra \ --resource-ids "keyspace/mykeyspace/table/mytable" \ --policy-name "MyScalingPolicy"

Na saída deste comando, você pode ver os detalhes da política de escalabilidade, bem comooCloudWatchOs alarmes do Application Auto Scaling cria - um para a capacidade superior e outra para olimite inferior da faixa do destino de escalabilidade.

{ "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:8d606c33-2078-4f37-8305-36e89c56a779:resource/cassandra/keyspace/mykeyspace/table/mytable:policyName/MyScalingPolicy", "PolicyName": "MyScalingPolicy", "ServiceNamespace": "cassandra", "ResourceId": "keyspace/mykeyspace/table/mytable", "ScalableDimension": "cassandra:table:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraWriteCapacityUtilization" }, "ScaleOutCooldown": 60, "ScaleInCooldown": 60 }, "Alarms": [ { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmHigh-d421fec6-fa82-44b4-aab6-6a9bfb6f0ced" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-AlarmLow-04479372-e50b-4652-a06d-b3055744ae23" },

114

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorGerenciar de forma programática

{ "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityHigh-c6a26783-837e-4f70-919e-1fbe4362b6ab" }, { "AlarmName": "TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215", "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-keyspace/mykeyspace/table/mytable-MCSProvisionedCapacityLow-e1ce121a-48ea-4148-ace2-25c5f854c215" } ], "CreationTime": 1587497009.591 } ]}

Exibir ações Application Auto ScalingVocê pode visualizar as ações do Application Auto Scaling que são iniciadas em seu nome com oseguinteAWS CLIcomando.

aws application-autoscaling describe-scaling-activities \ --service-namespace cassandra

Se você executar esse comando em uma tabela em que o dimensionamento automático está alterando acapacidade de gravação, você verá uma saída semelhante a esta:

...

{ "ScalableDimension": "cassandra:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "keyspace/mykeyspace/table/mytable", "ActivityId": "0cc6fb03-2a7c-4b51-b67f-217224c6b656", "StartTime": 1489088210.175, "ServiceNamespace": "cassandra", "EndTime": 1489088246.85, "Cause": "monitor alarm AutoScaling-keyspace/mykeyspace/table/mytable-AlarmHigh-1bb3c8db-1b97-4353-baf1-4def76f4e1b9 in state ALARM triggered policy MyScalingPolicy", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by cassandra.", "StatusCode": "Successful"}, ...

Esta saída de exemplo indica que o Application Auto Scaling emitiu umAlter Tablesolicitação aoAmazon Keyspaces para alterar a capacidade de gravação.

Excluir uma política de escalabilidadeExcluir a política de escalabilidade paramytable. Se você não precisar mais dimensionar a capacidadede gravação da tabela, considere excluir sua política de escalabilidade para que o Amazon Keyspacesnão continue modificando as configurações de capacidade de gravação da tabela. Você pode excluirsua infraestrutura de escalabilidade cancelando o registro de capacidade pretendida escalável ouexcluir apenas sua política de escalabilidade e manter o destino escalável registrado para usar em outromomento.

115

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Capacidade de intermitência

O comando a seguir exclui a política de escalabilidade de rastreamento de destino que você especificou.Ele também exclui oCloudWatchOs alarmes do Application Auto Scaling criou em seu nome.

aws application-autoscaling delete-scaling-policy \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits" \ --policy-name "MyScalingPolicy"

Desative o dimensionamento automático em uma tabela existente: Cancelar oregistro de um destino escalável

Cancelar o registro de capacidade pretendida escalável com o seguinteAWS CLIcomando. Isso tambémexclui a política de escalabilidade anexada a esse destino.

aws application-autoscaling deregister-scalable-target \ --service-namespace cassandra \ --resource-id "keyspace/mykeyspace/table/mytable" \ --scalable-dimension "cassandra:table:WriteCapacityUnits"

Uso efetivo da capacidade de intermitência noAmazon Keyspaces

O Amazon Keyspaces fornece alguma flexibilidade no provisionamento de taxa de transferência porpartição ao oferecerCapacidade de intermitência do. Quando você não está usando totalmente a taxa detransferência de uma partição, o Amazon Keyspaces reserva uma parte dessa capacidade não utilizadapara mais tarderajadasde taxa de transferência para lidar com picos de uso.

No momento, o Amazon Keyspaces retém até 5 minutos (300 segundos) de capacidade de leitura ecapacidade não utilizada. Durante uma intermitência ocasional de atividades de leitura e gravação,essas unidades de capacidade extra podem ser consumidas rapidamente, ainda mais rápido do que acapacidade de throughput provisionado por segundo que você definiu para a sua tabela.

O Amazon Keyspaces também pode consumir capacidade de intermitência para manutenção em segundoplano e para outras tarefas sem aviso prévio.

Note que esses detalhes da capacidade de intermitência podem mudar no futuro.

116

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorTrabalhando com espaços de chave

Trabalhando com keyspaces, tabelase linhas no Amazon Keyspaces (paraApache Cassandra)

Este capítulo fornece detalhes sobre como trabalhar com keyspaces, tabelas, linhas e muito mais noAmazon Keyspaces (para Apache Cassandra). Para saber como monitorar keyspaces e tabelas com oAmazon CloudWatch, consultethe section called “Monitoramento com CloudWatch” (p. 226).

Tópicos• Trabalhando com espaços de chave no Amazon Keyspaces (p. 117)• Trabalhando com tabelas no Amazon Keyspaces (p. 118)• Trabalhando com linhas no Amazon Keyspaces (p. 121)• Trabalhando com consultas no Amazon Keyspaces (p. 123)• Trabalhando com particionadores no Amazon Keyspaces (p. 124)

Trabalhando com espaços de chave no AmazonKeyspaces

Esta seção fornece detalhes sobre como trabalhar com keyspaces no Amazon Keyspaces (para ApacheCassandra).

Tópicos• Criando espaços de chave no Amazon Keyspaces (p. 117)

Criando espaços de chave no Amazon KeyspacesO Amazon Keyspaces executa operações de linguagem de definição de dados (DDL), como criar eexcluir keyspaces, de forma assíncrona. Você pode monitorar o status de criação de novos espaçosde chave naAWS Management Console, que indicará quando um espaço de chave está pendente ouativo. Você também pode monitorar o status da criação de um novo espaço de chave programaticamenteusando a tabela de esquema do sistema. Um espaço de chave ficará visível no esquema do sistemaquando estiver pronto para uso. O padrão de design recomendado para verificar quando um novo espaçode chave está pronto para uso é pesquisar as tabelas de esquema do sistema do Amazon Keyspaces(system_schema_mcs.*). Para ver uma lista de instruções DDL para keyspaces, consulte othe sectioncalled “Keyspaces” (p. 259)na referência da linguagem CQL.

A consulta a seguir mostra se um espaço de chave foi criado com sucesso.

SELECT * FROM system_schema_mcs.keyspaces WHERE keyspace_name = 'mykeyspace';

Para um espaço de chave que foi criado com sucesso, a saída da consulta se parece com a seguinte.

keyspace_name | durable_writes | replication--------------+-----------------+--------------

117

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Trabalhar com tabelas

mykeyspace | true |{...} 1 item

Trabalhando com tabelas no Amazon KeyspacesEssa seção fornece detalhes sobre como trabalhar com tabelas no Amazon Keyspaces (para ApacheCassandra).

Tópicos• Criando tabelas no Amazon Keyspaces (p. 118)• Colunas estáticas no Amazon Keyspaces (p. 118)

Criando tabelas no Amazon KeyspacesO Amazon Keyspaces executa operações de linguagem de definição de dados (DDL), como criar eexcluir tabelas, de forma assíncrona. Você pode monitorar o status de criação de novas tabelas naAWSManagement Console, que indica quando uma tabela está pendente ou ativa. Você também podemonitorar o status de criação de uma nova tabela programaticamente usando a tabela de esquema dosistema.

Uma tabela é exibida como ativa no esquema do sistema quando estiver pronta para uso. O padrãode design recomendado para verificar quando uma nova tabela está pronta para uso é pesquisar astabelas de esquema do sistema do Amazon Keyspaces (system_schema_mcs.*). Para ver uma lista deinstruções DDL para tabelas, consulte athe section called “Tabelas” (p. 261)na referência da linguagemCQL.

A consulta a seguir mostra o status de uma tabela.

SELECT keyspace_name, table_name, status FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

Para uma tabela que ainda está sendo criada e está pendente, a saída da consulta se parece com isso.

keyspace_name | table_name | status--------------+------------+-------- mykeyspace | mytable | CREATING

Para uma tabela que foi criada com sucesso e está ativa, a saída da consulta se parece com a seguinte.

keyspace_name | table_name | status--------------+------------+-------- mykeyspace | mytable | ACTIVE

Colunas estáticas no Amazon KeyspacesQuando você declara uma coluna em uma tabela do Amazon Keyspaces como estática, o valorarmazenado nesta coluna é compartilhado entre todas as linhas em uma partição lógica. Quando você

118

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Colunas estáticas

atualiza o valor dessa coluna, o Amazon Keyspaces aplica a alteração automaticamente a todas as linhasna partição.

Esta seção descreve como calcular o tamanho codificado dos dados quando você está gravando emcolunas estáticas. Esse processo é tratado separadamente do processo que grava dados nas colunasnão estáticas de uma linha. Além das cotas de tamanho para dados estáticos, as operações de leitura egravação em colunas estáticas também afetam a capacidade de medição e throughput para tabelas deforma independente.

Calculando o tamanho da coluna estática por partição lógica noAmazon KeyspacesEssa seção fornece detalhes sobre como estimar o tamanho codificado de colunas estáticas no AmazonKeyspaces. O tamanho codificado é usado quando você está calculando o uso da fatura e da cota.Você também deve usar o tamanho codificado ao calcular os requisitos de capacidade de taxa detransferência provisionada para tabelas. Para calcular o tamanho codificado de colunas estáticas noAmazon Keyspaces, você pode usar as seguintes diretrizes.

• As chaves de partição podem conter até 2048 bytes de dados. Cada coluna de chave na chave departição requer até 3 bytes de metadados. Esses bytes de metadados contam para sua cota de tamanhode dados estáticos de 1 MB por partição. Ao calcular o tamanho dos dados estáticos, você deve assumirque cada coluna de chave de partição usa os 3 bytes completos de metadados.

• Use o tamanho bruto dos valores de dados da coluna estática com base no tipo de dados. Para obterinformações sobre tipos de dados, consulte the section called “Tipos de dados” (p. 255).

• Adicione 104 bytes ao tamanho dos dados estáticos para metadados.• Colunas de agrupamento e colunas de chave não primárias regulares não contam para o tamanho

dos dados estáticos. Para saber como estimar o tamanho dos dados não estáticos dentro de linhas,consultethe section called “Calculando o tamanho da linha” (p. 121).

O tamanho codificado total de uma coluna estática é baseado na seguinte fórmula:

partition key columns + static columns + metadata = total encoded size of static data

Considere o exemplo a seguir de uma tabela em que todas as colunas são do tipo inteiro. A tabela temduas colunas de chave de partição, duas colunas de agrupamento, uma coluna normal e uma colunaestática.

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

Neste exemplo, calculamos o tamanho dos dados estáticos da seguinte instrução:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, static_col1) values(1,2,6);

Para estimar o total de bytes exigidos por essa operação de gravação, você pode usar as etapas a seguir.

1. Calcule o tamanho de uma coluna de chave de partição adicionando os bytes para o tipo de dadosarmazenado na coluna e os bytes de metadados. Repita isso para todas as colunas de chave departição.

a. Calcule o tamanho da primeira coluna da chave de partição (pk_col1):

4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes

b. Calcule o tamanho da segunda coluna da chave de partição (pk_col2):

119

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Colunas estáticas

4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes

c. Adicione as duas colunas para obter o tamanho total estimado das colunas da chave de partição:

7 bytes + 7 bytes = 14 bytes for the partition key columns

2. Adicione o tamanho das colunas estáticas. Neste exemplo, temos apenas uma coluna estática quearmazena um inteiro (que requer 4 bytes).

3. Finalmente, para obter o tamanho total codificado dos dados da coluna estática, adicione osbytes para as colunas de chave primária e colunas estáticas e adicione 104 bytes adicionais parametadados:

14 bytes for the partition key columns + 4 bytes for the static column + 104 bytes for metadata = 122 bytes.

Você também pode atualizar dados estáticos e não estáticos com a mesma instrução. Para estimar otamanho total da operação de gravação, primeiro você deve calcular o tamanho da atualização de dadosnão estática. Em seguida, calcule o tamanho da atualização da linha, conforme mostrado no exemploemthe section called “Calculando o tamanho da linha” (p. 121)e adicione os resultados.

Nesse caso, você pode gravar um total de 2 MB—1 MB é a cota de tamanho máximo de linha e 1 MB é acota para o tamanho máximo de dados estáticos por partição lógica.

Para calcular o tamanho total de uma atualização de dados estáticos e não estáticos na mesma instrução,você pode usar a seguinte fórmula:

(partition key columns + static columns + metadata = total encoded size of static data) + (partition key columns + clustering columns + regular columns + row metadata = total encoded size of row)= total encoded size of data written

Considere o exemplo a seguir de uma tabela em que todas as colunas são do tipo inteiro. A tabela temduas colunas de chave de partição, duas colunas de agrupamento, uma coluna normal e uma colunaestática.

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

Neste exemplo, calculamos o tamanho dos dados quando escrevemos uma linha na tabela, conformemostrado na seguinte instrução:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1, static_col1) values(2,3,4,5,6,7);

Para estimar o total de bytes exigidos por essa operação de gravação, você pode usar as etapas a seguir.

1. Calcule o tamanho total codificado dos dados estáticos, conforme mostrado anteriormente. Nesteexemplo, são 122 bytes.

2. Adicione o tamanho do tamanho total codificado da linha com base na atualização de dados nãoestáticos, seguindo as etapas emthe section called “Calculando o tamanho da linha” (p. 121). Nesteexemplo, o tamanho total da atualização de linha é 134 bytes.

122 bytes for static data + 134 bytes for nonstatic data = 256 bytes.

120

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Trabalhar com linhas

Medição de operações de leitura/gravação de dados estáticos noAmazon KeyspacesOs dados estáticos estão associados a partições lógicas em Cassandra, não a linhas individuais.As partições lógicas no Amazon Keyspaces podem ser praticamente não vinculadas em tamanho,abrangendo várias partições de armazenamento físico. Como resultado, o Amazon Keyspaces medeas operações de gravação em dados estáticos e não estáticos separadamente. Além disso, gravaçõesque incluem dados estáticos e não estáticos requerem operações subjacentes adicionais para fornecerconsistência de dados.

Se você executar uma operação de gravação mista de dados estáticos e não estáticos, isso resultará emduas operações de gravação separadas — uma para dados não estáticos e outra para dados estáticos.Isso se aplica aos modos de capacidade de leitura/gravação sob demanda e provisionada.

O exemplo a seguir fornece detalhes sobre como estimar as unidades de capacidade de leitura (RCUs)necessárias e as unidades de capacidade de gravação (WCUs) ao calcular os requisitos de capacidade detaxa de transferência provisionada para tabelas no Amazon Keyspaces que possuem colunas estáticas.Você pode estimar quanta capacidade sua tabela precisa para processar gravações que incluem dadosestáticos e não estáticos usando a seguinte fórmula:

2 x WCUs required for nonstatic data + 2 x WCUs required for static data

Por exemplo, se o aplicativo gravar 27 KBs de dados por segundo e cada gravação incluir 25,5 KBs dedados não estáticos e 1,5 KBs de dados estáticos, sua tabela exigirá 56 WCUs (2 x 26 WCUs + 2 x 2WCUs).

O Amazon Keyspaces mede as leituras de dados estáticos e não estáticos da mesma forma que asleituras de várias linhas. Como resultado, o preço da leitura de dados estáticos e não estáticos na mesmaoperação é baseado no tamanho agregado dos dados processados para executar a leitura.

Para saber como monitorar recursos sem servidor com o Amazon CloudWatch, consultethe section called“Monitoramento com CloudWatch” (p. 226).

Trabalhando com linhas no Amazon KeyspacesEsta seção fornece detalhes sobre como trabalhar com linhas no Amazon Keyspaces (para ApacheCassandra). As tabelas são as principais estruturas de dados no Amazon Keyspaces e os dados emtabelas são organizados em colunas e linhas.

Tópicos• Calculando o tamanho da linha no Amazon Keyspaces (p. 121)

Calculando o tamanho da linha no Amazon KeyspacesO Amazon Keyspaces (para Apache Cassandra) oferece armazenamento totalmente gerenciadoque oferece desempenho de leitura e gravação de milissegundos de um dígito e armazena dados deforma durável em váriosAWSZonas de disponibilidade. O Amazon Keyspaces anexa metadados atodas as linhas e colunas de chave primária para oferecer suporte a acesso eficiente aos dados e altadisponibilidade.

Esta seção fornece detalhes sobre como estimar o tamanho codificado de linhas no Amazon Keyspaces.O tamanho da linha codificada é usado ao calcular o uso da fatura e da cota. Você também deve usar o

121

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Calculando o tamanho da linha

tamanho da linha codificada ao calcular os requisitos de capacidade de taxa de transferência provisionadapara tabelas. Para calcular o tamanho codificado das linhas no Amazon Keyspaces, você pode usar asseguintes diretrizes.

• As chaves de partição podem conter até 2.048 bytes de dados. Cada coluna de chave na chave departição requer até 3 bytes de metadados. Esses bytes de metadados contam para sua cota de tamanhode linha de 1 MB. Ao calcular o tamanho da linha, você deve presumir que cada coluna de chave departição usa os 3 bytes completos de metadados.

• Cada linha pode ter até 850 bytes de dados de coluna de agrupamento e cada coluna de agrupamentorequer até 4 bytes para metadados. Esses bytes de metadados contam para sua cota de tamanho delinha de 1 MB. Ao calcular o tamanho da linha, você deve presumir que cada coluna de agrupamentousa os 4 bytes completos de metadados.

• Para colunas de chave regulares, não estáticas e não primárias, use o tamanho bruto dos dados dacélula com base no tipo de dados. Para obter informações sobre tipos de dados, consulte the sectioncalled “Tipos de dados” (p. 255).

• Os dados da coluna estática não contam para o tamanho máximo da linha de 1 MB. Para calcular otamanho dos dados de colunas estáticas, consultethe section called “Cálculo do tamanho da colunaestática por partição lógica” (p. 119).

• Adicione 100 bytes ao tamanho de cada linha para metadados de linha.

O tamanho total de uma linha de dados codificada é baseado na seguinte fórmula:

partition key columns + clustering columns + regular columns + row metadata = total encoded size of row

Considere o exemplo a seguir de uma tabela em que todas as colunas são do tipo inteiro. A tabela temduas colunas de chave de partição, duas colunas de agrupamento e uma coluna normal.

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

Neste exemplo, calculamos o tamanho dos dados quando escrevemos uma linha na tabela, conformemostrado na seguinte instrução:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1) values(1,2,3,4,5);

Para estimar o total de bytes exigidos por essa operação de gravação, você pode usar as etapas a seguir.

1. Calcule o tamanho de uma coluna de chave de partição adicionando os bytes para o tipo de dadosarmazenado na coluna e os bytes de metadados. Repita isso para todas as colunas de chave departição.

a. Calcule o tamanho da primeira coluna da chave de partição (pk_col1):

4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes

b. Calcule o tamanho da segunda coluna da chave de partição (pk_col2):

4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes

c. Adicione as duas colunas para obter o tamanho total estimado das colunas da chave de partição:

7 bytes + 7 bytes = 14 bytes for the partition key columns

122

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Trabalhar com consultas

2. Calcule o tamanho da coluna de agrupamento adicionando os bytes para o tipo de dados armazenadona coluna e os bytes de metadados. Repita isso para todas as colunas de agrupamento.

a. Calcule o tamanho da primeira coluna da coluna de agrupamento (ck_col1):

4 bytes for the integer data type + 4 bytes for clustering column metadata = 8 bytes

b. Calcule o tamanho da segunda coluna da coluna de agrupamento (ck_col2):

4 bytes for the integer data type + 4 bytes for clustering column metadata = 8 bytes

c. Adicione as duas colunas para obter o tamanho total estimado das colunas de agrupamento:

8 bytes + 8 bytes = 16 bytes for the clustering columns

3. Adicione o tamanho das colunas regulares. Neste exemplo, temos apenas uma coluna que armazenaum inteiro, o que requer 4 bytes.

4. Finalmente, para obter o tamanho total da linha codificada, adicione os bytes para todas as colunas eadicione os 100 bytes adicionais para metadados de linha:

14 bytes for the partition key columns + 16 bytes for clustering columns + 4 bytes for the regular column + 100 bytes for row metadata = 134 bytes.

Para saber como monitorar recursos sem servidor com o Amazon CloudWatch, consultethe section called“Monitoramento com CloudWatch” (p. 226).

Trabalhando com consultas no Amazon KeyspacesEsta seção fornece uma introdução ao trabalho com consultas no Amazon Keyspaces (paraApache Cassandra). As instruções CQL disponíveis para consultar, transformar e gerenciar dadossãoSELECT,INSERT,UPDATE, eDELETE. Os tópicos a seguir descrevem algumas das opções maiscomplexas disponíveis ao trabalhar com consultas. Para obter a sintaxe completa da linguagem comexemplos, consultethe section called “Instruções DML” (p. 266).

Tópicos• Resultados de pedidos no Amazon Keyspaces (p. 123)• Paginação de resultados no Amazon Keyspaces (p. 124)

Resultados de pedidos no Amazon KeyspacesOORDER BYA cláusula especifica a ordem de classificação dos resultados retornados emumSELECTinstrução. A instrução pega uma lista de nomes de colunas como argumentos e, para cadacoluna, você pode especificar a ordem de classificação dos dados. Você só pode especificar colunas deagrupamento em cláusulas de ordenação, não são permitidas colunas que não sejam agrupadas.

As duas opções de ordem de classificação disponíveis para os resultados retornados sãoASCparaascendente eDESCPara ordem de classificação descendente. Se você não especificar a ordem declassificação na instrução de consulta, a ordem padrão da coluna de clustering será usada.

As possíveis ordens de classificação que você pode usar em uma cláusula de ordenação dependemda ordem de classificação atribuída a cada coluna de agrupamento na criação da tabela. Os resultados

123

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Resultados de paginação

da consulta só podem ser classificados na ordem definida para todas as colunas de agrupamento nacriação da tabela ou no inverso da ordem de classificação definida. Outras combinações possíveis não sãopermitidas.

Por exemplo, se a ORDEM DE CLUSTERING da tabela for (col1 ASC, col2 DESC, col3ASC), os parâmetros válidos para ORDER BY são (col1 ASC, col2 DESC, col3 ASC) ou (col1DESC, col2 ASC, col3 DESC). Para obter mais informações sobre a ORDEM DE CLUSTER,consultetable_optionsembaixothe section called “CREATE TABLE” (p. 261).

Paginação de resultados no Amazon KeyspacesAmazon KeyspacespaginaOs resultados deSELECTinstruções quando os dados são lidos para processaroSELECTinstrução excede 1 MB. Com paginação, oSELECTOs resultados de instruções de são divididosem “páginas” de dados com 1 MB de tamanho (ou menos). Um aplicativo pode processar a primeira páginade resultados e, em seguida, a segunda página, e assim por diante. Os clientes devem sempre verificar sehá tokens de paginação ao executarSELECTConsultas que retornam várias linhas.

Se um cliente fornecer um TAMANHO DE PÁGINA que requer a leitura de mais de 1 MB de dados, oAmazon Keyspaces divide os resultados automaticamente em várias páginas com base nos incrementosde leitura de dados de 1 MB.

Por exemplo, se o tamanho médio de uma linha for de 100 KB e você especificar um TAMANHO DEPÁGINA de 20, o Amazon Keyspaces pagina os dados automaticamente depois que ele lê 10 linhas (1000KB de dados lidos).

Como o Amazon Keyspaces pagina os resultados com base no número de linhas lidas para processar umasolicitação e não no número de linhas retornadas no conjunto de resultados, algumas páginas podem nãoconter nenhuma linha se você estiver executando consultas filtradas.

Por exemplo, se você definir TAMANHO DA PÁGINA como 10 e o Keyspaces avaliar 30 linhas paraprocessar suaSELECTconsulta, o Amazon Keyspaces retornará três páginas. Se apenas um subconjuntodas linhas corresponder à sua consulta, algumas páginas podem ter menos de 10 linhas.

Trabalhando com particionadores no AmazonKeyspaces

No Apache Cassandra, os particionadores controlam quais dados de nós são armazenados no cluster.Os particionadores criam um token numérico usando um valor com hash da chave de partição. OCassandra usa esse token para distribuir dados entre nós. Os clientes também podem usar esses tokensnoSELECToperações eWHEREcláusulas para otimizar operações de leitura e gravação. Por exemplo, osclientes podem executar consultas paralelas com eficiência em tabelas grandes especificando intervalosde token distintos para consultar em cada trabalho parallel.

Com o Amazon Keyspaces, você pode optar por definir o particionador da sua conta para oCassandraRandomPartitionerpara compatibilidade com ferramentas de desenvolvedor, como oApache Spark Cassandra Connector. O Amazon Keyspaces também fornece umDefaultPartitioner,que retorna o mesmoTOKENresultados da função como oRandomPartitioner.

Você pode alterar com segurança o particionador no nível da conta a qualquer momento. Você não precisarecarregar seus dados do Amazon Keyspaces ao alterar a configuração do particionador. Os clientesusarão automaticamente a nova configuração do particionador na próxima vez que se conectarem.

É possível alterar o particionador usando oAWS Management Consoleou Cassandra Query Language(CQL).

124

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Trabalhar com particionadores

AWS Management Console

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, escolha Configuration (Configuração).3. NoConfiguraçãopágina, vá paraEdite particionador.4. Selectorg.apache.Cassandra.dht.RandomPartitioner.

Note

Você precisa se desconectar e reconectar ao Amazon Keyspaces para solicitações deuso do novo particionador.

Cassandra Query Language (CQL)

1. Para ver qual particionador está configurado para a conta, você pode usar a consulta a seguir.

SELECT partitioner from system.local;

Se o particionador não tiver sido alterado, a consulta terá a seguinte saída.

partitioner--------------------------------------------com.amazonaws.cassandra.DefaultPartitioner

2. Para atualizar o particionador para oRandomPartitioner, você pode usar a consulta a seguir.

UPDATE system.local set partitioner='org.apache.cassandra.dht.RandomPartitioner' where key='local';

3. Para confirmar se o particionador foi definido, você pode executar aSELECTConsulte novamente.Observe que, devido à consistência de leitura eventual, a resposta pode não refletir os resultadosda alteração do particionador recentemente concluída. Se você repetir oSELECToperaçãonovamente após um curto período, a resposta deve retornar os dados mais recentes.

SELECT partitioner from system.local;

Note

Você precisa se desconectar e reconectar ao Amazon Keyspaces para que assolicitações usem o novo particionador.

125

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Design de chave de partição

Modelagem de dados no AmazonKeyspaces (para Apache Cassandra)

Este tópico apresenta conceitos de modelagem de dados no Amazon Keyspaces (para ApacheCassandra). Use esta seção para encontrar recomendações para projetar modelos de dados alinhadoscom os padrões de acesso a dados do aplicativo. A implementação de práticas recomendadas demodelagem de dados melhora o desempenho e minimiza os custos de throughput ao trabalhar com oAmazon Keyspaces.

Para visualizar e projetar modelos de dados com mais facilidade, você pode usar oNoSQLWorkbench (p. 129).

Tópicos• Como usar chaves de partição de forma eficaz no Amazon Keyspaces (p. 126)

Como usar chaves de partição de forma eficaz noAmazon Keyspaces

A chave primária que identifica exclusivamente cada linha em uma tabela do Amazon Keyspaces podeconsistir em uma ou várias colunas de chave de partição, que determinam em quais partições os dadossão armazenados e uma ou mais colunas de clustering opcionais, que definem como os dados sãoagrupados e classificados em uma partição.

Como a chave de partição estabelece o número de partições em que seus dados são armazenados ecomo os dados são distribuídos nessas partições, como você escolheu sua chave de partição pode ter umimpacto significativo no desempenho de suas consultas. De modo geral, você deve projetar o aplicativopara atividade uniforme em todas as partições no disco.

Distribuir a atividade de leitura e gravação de seu aplicativo uniformemente em todas as partições ajudaa minimizar os custos de throughput e isso se aplica aos modos de capacidade de leitura/gravação sobdemanda e provisionados. Por exemplo, se você estiver usando o modo de capacidade provisionada,é possível determinar os padrões de acesso que o aplicativo precisa e estimar o total de unidades decapacidade de leitura (RCU) e unidades de capacidade de gravação (WCU) que cada tabela exige.O Amazon Keyspaces é compatível com seus padrões de acesso usando a taxa de transferênciaprovisionada, contanto que o tráfego em uma determinada partição não exceda 3.000 RCUs ou 1.000WCUs.

O Amazon Keyspaces oferece flexibilidade adicional no provisionamento de taxa de transferênciapor partição ao oferecer capacidade de intermitência, para obter mais informaçõesthe section called“Capacidade de intermitência” (p. 116).

Tópicos• Usando fragmentação de gravação para distribuir cargas de trabalho uniformemente no Amazon

Keyspaces (p. 127)

126

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Estilhaçamento

Usando fragmentação de gravação para distribuircargas de trabalho uniformemente no AmazonKeyspacesUma forma de distribuir melhor as gravações entre uma partição no Amazon Keyspaces é aumentar oespaço. É possível fazer isso de várias formas diferentes. Você pode adicionar uma coluna de chave departição adicional à qual você escreve números aleatórios para distribuir as linhas entre partições. Ou podeusar um número calculado com base em algo que você está consultando.

Sharding usando chaves de partição compostas e valoresaleatóriosUma estratégia de distribuição de cargas mais uniformemente entre uma partição é adicionar uma colunade chave de partição adicional na qual você escreve números aleatórios. Então, você randomiza asgravações no espaço maior.

Por exemplo, considere a tabela a seguir, que tem uma única chave de partição representando uma data.

CREATE TABLE IF NOT EXISTS tracker.blogs ( publish_date date, title text, description int, PRIMARY KEY (publish_date));

Para distribuir mais uniformemente essa tabela entre partições, você pode incluir uma coluna de chave departição adicionalshardque armazena números aleatórios. Por exemplo:

CREATE TABLE IF NOT EXISTS tracker.blogs ( publish_date date, shard int, title text, description int, PRIMARY KEY ((publish_date, shard)));

Ao inserir dados, você pode escolher um número aleatório entre1e200para ashardcoluna. Isso produzvalores de chave de partição composta, como(2020-07-09, 1),(2020-07-09, 2), e assim pordiante, por meio de(2020-07-09, 200). Como você está randomizando a chave de partição, asgravações na tabela em cada dia são espalhadas uniformemente entre várias partições. Isso resulta emmelhor paralelismo e throughput geral mais alto.

Contudo, para ler todas as linhas de um determinado dia, você teria que consultar as linhas quanto a todosos estilhaçamentos e mesclar os resultados. Por exemplo, você primeiro emite umSELECTInstrução dovalor da chave de partição(2020-07-09, 1). Depois emite outraSELECTInstrução FOR(2020-07-09,2), e assim por diante, por meio de(2020-07-09, 200). Por fim, seu aplicativo precisaria mesclar osresultados de todos essesSELECTInstruções .

Sharding usando chaves de partição compostas e valorescalculadosUma estratégia de randomização pode melhorar bastante o throughput de gravação. Mas é difícil ler umalinha específica, porque você não sabe que valor foi gravado noshardcoluna quando a linha foi escrita.Para facilitar a leitura de linhas individuais, você pode usar uma estratégia diferente. Em vez de usar umnúmero aleatório para distribuir as linhas entre as partições, use um número calculado com base em algoque você deseja consultar.

127

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Estilhaçamento

Considere o exemplo anterior, em que uma tabela usa a data de hoje na chave de partição. Agorasuponha que cada linha tenha um acesso acessíveltitleColuna, e que você precisa com frequência delocalizar linhas por título, além da data. Antes que o aplicativo grave a linha na tabela, ele poderia calcularum valor hash com base no título e usá-lo para preencher oshardcoluna. O cálculo pode gerar um númeroentre 1 e 200 que é distribuído uniformemente, semelhante à estratégia aleatória.

Bastaria um cálculo simples, como o produto dos valores de pontos de código UTF-8 para os caracteresno título, módulo 200, + 1. O valor da chave de partição composta seria então a combinação da data e doresultado do cálculo.

Com essa estratégia, as gravações são distribuídas uniformemente entre os valores de chaves de partiçãoe, portanto, entre as partições físicas. É possível executar umSELECTInstrução de uma determinada linhae data, pois você pode calcular o valor da chave de partição para um específicotitlevalue.

Para ler todas as linhas de um determinado dia, você ainda deveSELECTcada um dos(2020-07-09,N)chaves (ondeNé 1—200), e seu aplicativo precisa mesclar todos os resultados. O benefício é evitar deter um valor de chave de partição "hot" único consumindo toda a workload.

128

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Baixar

Usando o NoSQL Workbench como Amazon Keyspaces (Para ApacheCassandra)

O NoSQL Workbench é um aplicativo do lado do cliente que ajuda você a projetar e visualizar modelosde dados não relacionais para o Amazon Keyspaces com mais facilidade. Os clientes NoSQL Workbenchestão disponíveis para Windows, macOS e Linux.

Projetando modelos de dados e criando recursos automaticamente

O NoSQL Workbench fornece um point-and-click interface para projetar e criar modelos de dadosdo Amazon Keyspaces. Você pode criar facilmente novos modelos de dados do zero definindoespaços de chave, tabelas e colunas. Você também pode importar modelos de dados existentes efazer modificações (como adicionar, editar ou remover colunas) para adaptar os modelos de dadospara novos aplicativos. Em seguida, o NoSQL Workbench permite que você confirme os modelosde dados para o Amazon Keyspaces ou Apache Cassandra e crie os espaços de chave e tabelasautomaticamente. Para saber como criar modelos de dados, consultethe section called “Modelador dedados” (p. 131).

Visualizar modelos de dados

Usando o NoSQL Workbench, você pode visualizar seus modelos de dados para ajudar a garantirque os modelos de dados possam suportar consultas e padrões de acesso do aplicativo. Vocêtambém pode salvar e exportar seus modelos de dados em vários formatos para colaboração,documentação e apresentações. Para obter mais informações, consultethe section called “Visualizadorde dados” (p. 134)

Tópicos• Fazer download do NoSQL Workbench (p. 129)• Como começar a usar o NoSQL Workbench (p. 130)• Como compilar modelos de dados (p. 131)• Como visualizar modelos de dados (p. 134)• Como confirmar modelos de dados para o Amazon Keyspaces e o Apache Cassandra (p. 137)• Modelos de dados de amostra no NoSQL Workbench (p. 144)• Histórico de versões do NoSQL Workbench (p. 146)

Fazer download do NoSQL WorkbenchSiga estas instruções para baixar o NoSQL Workbench e instalar o NoSQL Workbench.

Para fazer download do NoSQL Workbench e instalá-lo

1. Use um dos links a seguir para fazer download do NoSQL Workbench gratuitamente.

129

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Começar a usar

Sistema operacional Link para download Link para soma de verificação

macOS Download para macOS Soma de verificação

Linux* Download para Linux Soma de verificação

Windows Download para Windows Soma de verificação

* O NoSQL Workbench oferece suporte a Ubuntu 12.04, Fedora 21 e Debian 8 ou quaisquer versõesmais recentes dessas distribuições do Linux.

2. Após a conclusão do download, inicie o aplicativo e siga as instruções na tela para concluir ainstalação.

Como começar a usar o NoSQL WorkbenchPara começar a usar o NoSQL Workbench, na página Database Catalog no NoSQL Workbench, escolhaAmazon Keyspaces e, em seguida, escolhaExecutar.

Isso abre a home page do NoSQL Workbench para o Amazon Keyspaces, onde você tem as seguintesopções para começar:

1. Crie um novo modelo de dados.2. Importe um usuário existente no formato JSON.3. Abra um modelo de dados editado recentemente.4. Abra um dos modelos de exemplo disponíveis.

130

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Modelador de dados

Cada uma das opções abre o modelador de dados NoSQL Workbench. Para continuar criando um novomodelo de dados, consultethe section called “Criando um modelo de dados” (p. 131). Para editar umusuário existente, consultethe section called “Editar um modelo de dados” (p. 133).

Como compilar modelos de dadosVocê pode usar o modelador de dados NoSQL Workbench para projetar novos modelos de dados combase nos padrões de acesso a dados do aplicativo. Você pode usar o modelador de dados para projetarnovos modelos de dados ou importar e modificar modelos de dados existentes criados usando o NoSQLWorkbench. O modelador de dados também inclui alguns modelos de dados de amostra para ajudar vocêa começar a modelagem de dados.

Tópicos• Criando novos modelos de dados com o NoSQL Workbench (p. 131)• Editando modelos de dados existentes com o NoSQL Workbench (p. 133)

Criando novos modelos de dados com o NoSQLWorkbenchPara criar um novo modelo de dados para o Amazon Keyspaces, você pode usar o modelador de dadosNoSQL Workbench para criar espaços de chave, tabelas e colunas. Siga estas etapas para criar um novomodelo de dados.

1. Para criar um novo espaço de chave, escolha o sinal de mais emKeyspace.

Nesta etapa, escolha as seguintes propriedades e configurações.

131

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criando um modelo de dados

• Nome do espaço de chaves— Insira o nome do novo espaço de chaves.• Estratégia de replicação— Escolha a estratégia de replicação para o espaço de chave. O Amazon

Keyspaces usa oEstratégia única Regionpara replicar dados três vezes automaticamente emváriosAWSZonas de disponibilidade. Se você planeja confirmar o modelo de dados em um clusterApache Cassandra, você pode escolherSimpleStrategyouNetworkTopologyStrategy.

• Tags do Keyspaces— As tags de recursos são opcionais e permitem categorizar recursos dediferentes maneiras — por exemplo, por finalidade, proprietário, ambiente ou outros critérios.Para saber mais sobre tags para recursos do Amazon Keyspaces, consulteMarcar recursos do (p. 179).

2. SelecioneAdicionar definição do espaço de chavesPara criar o espaço de chaves.

3. Para criar uma nova tabela, escolha o sinal de adição ao lado deTabelas. Nesta etapa, você define asseguintes propriedades e configurações.

• Nome da tabela— O nome da nova tabela.• Columns— Adicione um nome de coluna e escolha o tipo de dados. Repita essas etapas para cada

coluna do esquema.• Chave de partição— Escolha colunas para a chave de partição.• Colunas de agrupamento— Escolha colunas de agrupamento (opcional).• Mode de capacidade— Escolha o modo de capacidade leitura/gravação para a tabela. Você

pode escolher a capacidade provisionada ou sob demanda. Para saber mais sobre os modos decapacidade, consultethe section called “Modo de capacidade de leitura/gravação” (p. 100).

• Etiquetas de mesa— As tags de recursos são opcionais e permitem categorizar recursos dediferentes maneiras — por exemplo, por finalidade, proprietário, ambiente ou outros critérios.Para saber mais sobre tags para recursos do Amazon Keyspaces, consulteMarcar recursos do (p. 179).

4. SelecioneAdicionar definição de tabelaPara criar a nova tabela.5. Repita essas etapas para criar tabelas adicionais.6. Continue parathe section called “Visualizar um modelo de dados” (p. 135)para visualizar o modelo

de dados que você criou.

132

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Editar um modelo de dados

Editando modelos de dados existentes com o NoSQLWorkbenchCom o modelador de dados NoSQL Workbench, você pode editar modelos de dados existentes noAmazon Keyspaces. Estes podem ser modelos de dados importados de um arquivo, os modelos de dadosde amostra fornecidos ou modelos de dados criados anteriormente.

1. Para editar um espaço de chaves, selecione o símbolo de edição emKeyspace.

Nesta etapa, você pode editar as seguintes propriedades e configurações.

• Nome do espaço de chaves— Insira o nome do novo espaço de chaves.• Estratégia de replicação— Escolha a estratégia de replicação para o espaço de chave. O Amazon

Keyspaces usa oEstratégia única Regionpara replicar dados três vezes automaticamente emváriosAWSZonas de disponibilidade. Se você planeja confirmar o modelo de dados em um clusterApache Cassandra, você pode escolherSimpleStrategyouNetworkTopologyStrategy.

• Tags do Keyspaces— As tags de recursos são opcionais e permitem categorizar recursos dediferentes maneiras — por exemplo, por finalidade, proprietário, ambiente ou outros critérios.Para saber mais sobre tags para recursos do Amazon Keyspaces, consulteMarcar recursos do (p. 179).

2. SelecioneSalvar ediçõesPara atualizar o espaço de chaves.

133

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Visualizador de dados

3. Para editar uma tabela, escolhaEditeAo lado do nome da tabela. Nesta etapa, você pode atualizar asseguintes propriedades e configurações.

• Nome da tabela— O nome da nova tabela.• Columns— Adicione um nome de coluna e escolha o tipo de dados. Repita essas etapas para cada

coluna do esquema.• Chave de partição— Escolha colunas para a chave de partição.• Colunas de agrupamento— Escolha colunas de agrupamento (opcional).• Mode de capacidade— Escolha o modo de capacidade leitura/gravação para a tabela. Você

pode escolher a capacidade provisionada ou sob demanda. Para saber mais sobre os modos decapacidade, consultethe section called “Modo de capacidade de leitura/gravação” (p. 100).

• Etiquetas de mesa— As tags de recursos são opcionais e permitem categorizar recursos dediferentes maneiras — por exemplo, por finalidade, proprietário, ambiente ou outros critérios.Para saber mais sobre tags para recursos do Amazon Keyspaces, consulteMarcar recursos do (p. 179).

4. SelecioneSalvar ediçõesPara atualizar a tabela.5. Continue parathe section called “Visualizar um modelo de dados” (p. 135)para visualizar o modelo

de dados que você atualizou.

Como visualizar modelos de dadosUsando o NoSQL Workbench, você pode visualizar seus modelos de dados para ajudar a garantir queos modelos de dados possam suportar consultas e padrões de acesso do aplicativo. Você tambémpode salvar e exportar seus modelos de dados em vários formatos para colaboração, documentação eapresentações.

Depois de criar um novo modelo de dados ou editar um modelo de dados existente, você poderá visualizaro modelo.

134

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Visualizar um modelo de dados

Visualizar modelos de dados com o NoSQLWorkbenchQuando você tiver concluído o modelo de dados no modelador de dados, escolhaVisualizar modelo dedados.

Isso leva você ao visualizador de dados no NoSQL Workbench. O visualizador de dados fornece umarepresentação visual do esquema da tabela e permite adicionar dados de amostra. Para adicionar dadosde amostra a uma tabela, escolha uma tabela do modelo e, em seguida, escolhaEdite. Para adicionar umanova linha de dados, escolhaAdicionar nova linhaNa parte inferior da tela. Selecione Save (Salvar) aoconcluir.

135

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exibição agregada

Exibição agregadaDepois de confirmar o esquema da tabela, você pode agregar visualizações do modelo de dados.

136

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Confirmar um modelo de dados

Depois de agregar a exibição do modelo de dados, você pode exportar a exibição para um arquivo PNG.Para exportar o modelo de dados para um arquivo JSON, escolha o sinal de upload sob o nome do modelode dados.

Note

Você pode exportar o modelo de dados no formato JSON a qualquer momento no processo dedesign.

Você tem as seguintes opções para confirmar as alterações:

• Confirmar com o Amazon Keyspaces• Confirmar com um cluster Apache Cassandra

Para saber mais sobre como confirmar alterações, consultethe section called “Confirmar um modelo dedados” (p. 137).

Como confirmar modelos de dados para o AmazonKeyspaces e o Apache Cassandra

Esta seção mostra como confirmar modelos de dados concluídos para os clusters do Amazon Keyspaces edo Apache Cassandra. Esse processo cria automaticamente os recursos do lado do servidor para espaçosde chave e tabelas com base nas configurações definidas no modelo de dados.

137

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Antes de começar

Tópicos• Antes de começar (p. 138)• Conectando-se ao Amazon Keyspaces com credenciais específicas do serviço (p. 139)• Conectando-se ao Amazon Keyspaces comAWS Identity and Access Managementcredenciais

(IAM) (p. 140)• Usar uma conexão salva (p. 142)• Comprometendo-se com o Apache Cassandra (p. 143)

Antes de começarO Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexõescom os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, é necessário executar a seguintetarefa antes de começar.

• Baixe o certificado digital Starfield usando o seguinte comando e salvesf-class2-root.crtLocalmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Note

Você também pode usar o certificado digital da Amazon para se conectar ao AmazonKeyspaces e continuar a fazê-lo se o cliente estiver se conectando ao Amazon Keyspaces comsucesso. O certificado Starfield fornece compatibilidade adicional com versões anteriores paraclientes que usam autoridades de certificação mais antigas.

138

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Conectar com credenciais específicas do serviço

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Depois de salvar o arquivo de certificado, você pode se conectar ao Amazon Keyspaces. Uma opção é seconectar usando credenciais específicas do serviço. As credenciais específicas do serviço são um nomede usuário e senha associados a um usuário do IAM específico e só podem ser usados com o serviçoespecificado. A segunda opção é conectar-se com credenciais do IAM que estão usando oAWSProcessoSignature versão 4 (SigV4). Para saber mais sobre essas duas opções, consultethe section called “Comocriar credenciais” (p. 17).

Para se conectar com credenciais específicas do serviço, consultethe section called “Conectar comcredenciais específicas do serviço” (p. 139).

Para se conectar com credenciais do IAM, consultethe section called “Conectar com credenciais doIAM” (p. 140).

Conectando-se ao Amazon Keyspaces comcredenciais específicas do serviçoEsta seção mostra como usar credenciais específicas do serviço para confirmar o modelo de dados quevocê criou ou editou com o NoSQL Workbench.

1. Para criar uma nova conexão usando credenciais específicas do serviço, escolha aConnect usandonome de usuário e senhaGuia.

• Antes de começar, você deve criar credenciais específicas do serviço usando o processodocumentado emthe section called “Credenciais específicas do serviço” (p. 17).

Depois de obter as credenciais específicas do serviço, você poderá continuar configurando a conexão.Continue com um dos seguintes:

• Nome de usuário— Insira o nome de usuário.• Password— Insira a senha.• Região da AWS— Para regiões disponíveis, consultethe section called “Service endpoints

(Endpoints de serviço)” (p. 24).• Port— O Amazon Keyspaces usa a porta 9142.

Como alternativa, você pode importar credenciais salvas de um arquivo.2. SelecioneConfirmarpara atualizar o Amazon Keyspaces com o modelo de dados.

139

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorConectar com credenciais do IAM

Conectando-se ao Amazon Keyspaces comAWSIdentity and Access Managementcredenciais (IAM)Esta seção mostra como usar credenciais do IAM para confirmar o modelo de dados criado ou editado como NoSQL Workbench.

1. Para criar uma nova conexão usando credenciais do IAM, escolha oConnect usando credenciais doIAMGuia.

• Antes de começar, você deve criar credenciais do IAM usando um dos métodos a seguir.

140

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorConectar com credenciais do IAM

• Para acesso ao console, use seu nome de usuário e senha do IAM para fazer login no.AWSManagement ConsoledoPágina de login do IAM. O IAM permite que você controle comsegurança o acesso a Serviços da AWS e recursos em sua Conta da AWS. Para obter detalhessobre credenciais programáticas e de console, consulteCompreender e obter as credenciais desegurançanoAWSReferência geral.

• Para acesso à CLI, você precisa de uma ID da chave de acesso e uma chave de acessosecreta. Use as chaves de acesso do usuário IAM em vez das chaves de acesso do usuárioraiz da Conta da AWS. O IAM permite que você controle com segurança o acesso a Serviçosda AWS e recursos em sua Conta da AWS. Para obter mais informações sobre como criarchaves de acesso, consulte Noções básicas e como obter suas credenciais de segurança naReferência geral da AWS.

• Para acesso à API, é necessário ter um ID de chave de acesso e uma chave de acessosecreta. Use as chaves de acesso dedo usuário do IAM em vez das chaves de acesso dedousuário raiz da Conta da AWS. Para obter mais informações sobre a criação de chaves deacesso, consulte Gerenciar chaves de acesso para usuários do IAM no Guia do usuário do IAM.

Para obter mais informações, consulteGerenciamento de chaves de acesso de usuários do IAM.

Depois de obter as credenciais do IAM, você poderá continuar configurando a conexão.

• Connection name (Nome da conexão)— O nome da conexão.• Região da AWS— Para regiões disponíveis, consultethe section called “Service endpoints

(Endpoints de serviço)” (p. 24).• ID de chave de acesso— Insira o ID da chave de acesso da.• Chave de acesso secreta— Insira a chave de acesso secreta da.• Port— O Amazon Keyspaces usa a porta 9142.• AWSCertificado público— Aponte para oAWScertificado que foi baixado na primeira etapa.• Persista na conexão— Marque esta caixa de seleção se quiser salvar oAWSsegredos de conexão

localmente.2. SelecioneConfirmarpara atualizar o Amazon Keyspaces com o modelo de dados.

141

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Usar uma conexão salva

Usar uma conexão salvaSe você já configurou uma conexão com o Amazon Keyspaces, poderá usá-la como a conexão padrãopara confirmar alterações no modelo de dados. Selecione oUsar conexões salvase continue a confirmar asatualizações.

142

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Apache Cassandra

Comprometendo-se com o Apache CassandraEsta seção orienta você por fazer as conexões com um cluster do Apache Cassandra para confirmar omodelo de dados criado ou editado com o NoSQL Workbench.

Note

Somente modelos de dados que foram criadoscomSimpleStrategyouNetworkTopologyStrategypode ser comprometido com osclusters Apache Cassandra. Para alterar a estratégia de replicação, edite o espaço de chave nomodelador de dados.

1. • Nome de usuário— Insira o nome de usuário se a autenticação estiver habilitada no cluster.• Password— Insira a senha se a autenticação estiver ativada no cluster.• Pontos de contato— Insira os pontos de contato.• Data center local— Insira o nome do datacenter local.• Port— A conexão usa a porta 9042.

2. SelecioneConfirmarpara atualizar o cluster Apache Cassandra com o modelo de dados.

143

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Modelos de dados de exemplo

Modelos de dados de amostra no NoSQLWorkbench

A página inicial do modelador e visualizador exibe uma série de exemplos de modelos fornecidos comNoSQL Workbench. Esta seção descreve esses modelos e seus usos potenciais.

Tópicos• Modelo de dados de funcionários (p. 145)

144

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorModelo de dados de funcionários

• Modelo de dados de transações com cartão de crédito (p. 145)• Modelo de dados de operações de avião (p. 145)

Modelo de dados de funcionáriosEsse modelo de dados representa um esquema do Amazon Keyspaces para um aplicativo de banco dedados de funcionários.

Aplicativos que acessam informações de funcionários de uma determinada empresa podem usar essemodelo de dados.

Os padrões de acesso suportados por este modelo de dados são:

• Recuperação de um registro de funcionário com uma determinada ID.• Recuperação de um registro de funcionário com uma determinada ID e divisão.• Recuperação de um registro de funcionário com um determinado ID e nome.

Modelo de dados de transações com cartão de créditoEsse modelo de dados representa um esquema do Amazon Keyspaces para transações com cartão decrédito em lojas de varejo.

O armazenamento de transações com cartão de crédito não só ajuda as lojas com contabilidade, mastambém ajuda os gerentes de lojas a analisar as tendências de compra, o que pode ajudá-los comprevisão e planejamento.

Os padrões de acesso suportados por este modelo de dados são:

• Recuperação de transações por número de cartão de crédito, mês e ano e data.• Recuperação de transações por número, categoria e data do cartão de crédito.• Recuperação de transações por categoria, local e número de cartão de crédito.• Recuperação de transações por número de cartão de crédito e status de disputa.

Modelo de dados de operações de aviãoEste modelo de dados mostra dados sobre voos de avião, incluindo aeroportos, companhias aéreas erotas de voo.

Os principais componentes da modelagem do Amazon Keyspaces demonstrados são pares de chave-valor, armazenamentos de dados de coluna larga, chaves compostas e tipos de dados complexos, comomapas, para demonstrar padrões comuns de acesso a dados NoSQL.

Os padrões de acesso suportados por este modelo de dados são:

• Recuperação de rotas provenientes de uma determinada companhia aérea em um determinadoaeroporto.

• Recuperação de rotas com um determinado aeroporto de destino.• Recuperação de aeroportos com voos diretos.• Recuperação de detalhes do aeroporto e detalhes da companhia aérea.

145

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Histórico de versões

Histórico de versões do NoSQL WorkbenchA tabela a seguir descreve alterações importantes em cada versão doNoSQL Workbenchaplicativo do ladodo cliente do.

Alteração Descrição Data

NoSQL Workbench para AmazonKeyspaces — GA.

O NoSQL Workbench paraAmazon Keyspaces estádisponível para o público emgeral.

28 de outubro de 2020

A demonstração do NoSQLWorkbench foi lançada.

O NoSQL Workbench é umaplicativo do lado do clienteque ajuda você a projetar evisualizar modelos de dadosnão relacionais para o AmazonKeyspaces com mais facilidade.Os clientes NoSQL Workbenchestão disponíveis para Windows,macOS e Linux. Para obter maisinformações, consulteNoSQLWorkbench para AmazonKeyspaces.

5 de outubro de 2020

146

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Pré-requisitos

Integração do Amazon Keyspacescom o Apache Spark

O Apache Spark é um mecanismo de código aberto para análise de dados em larga escala. O ApacheSpark permite que você execute análises em dados armazenados no Amazon Keyspaces de forma maiseficiente. Você também pode usar o Amazon Keyspaces para fornecer aplicativos consistentes, single-digit-millisecond acesso de leitura aos dados analíticos do Spark. O Spark Cassandra Connector de códigoaberto simplifica a leitura e a gravação de dados entre o Amazon Keyspaces e o Spark.

O suporte do Amazon Keyspaces para o Spark Cassandra Connector simplifica a execução de cargas detrabalho do Cassandra em pipelines analíticos baseados em Spark usando um serviço de banco de dadostotalmente gerenciado e sem servidor. Com o Amazon Keyspaces, você não precisa se preocupar com oSpark concorrendo pelos mesmos recursos de infraestrutura subjacentes que suas tabelas. As tabelas doAmazon Keyspaces são dimensionadas para cima e para baixo automaticamente com base no tráfego doaplicativo.

O tutorial a seguir orienta você pelas etapas e práticas recomendadas necessárias para ler e gravardados no Amazon Keyspaces usando o Spark Cassandra Connector. O tutorial demonstra como migrardados para o Amazon Keyspaces carregando dados de um arquivo com o Spark Cassandra Connector egravando-os em uma tabela do Amazon Keyspaces. Em seguida, o tutorial mostra como ler os dados devolta do Amazon Keyspaces usando o Spark Cassandra Connector. Você faria isso para executar cargasde trabalho do Cassandra em pipelines de análise baseados em Sparks.

Tópicos• Pré-requisitos para estabelecer conexões com o Amazon Keyspaces com o Spark Cassandra

Connector (p. 147)• Etapa 1: Configurar o Amazon Keyspaces para integração com o Apache Cassandra Spark

Connector (p. 148)• Etapa 2: Configurar o Apache Cassandra Spark Connector (p. 149)• Etapa 3: Crie o arquivo de configuração do aplicativo (p. 150)• Etapa 4: Preparar os dados de origem e a tabela de destino no Amazon Keyspaces (p. 152)• Etapa 5: Gravar e ler dados do Amazon Keyspaces usando o Apache Cassandra Spark

Connector (p. 153)• Solução de problemas comuns ao usar o Spark Cassandra Connector com o Amazon

Keyspaces (p. 156)

Pré-requisitos para estabelecer conexões como Amazon Keyspaces com o Spark CassandraConnector

Antes de se conectar ao Amazon Keyspaces com o Spark Cassandra Connector, você precisa ter certezade que instalou o seguinte. A compatibilidade do Amazon Keyspaces com o Spark Cassandra Connectorfoi testada com as seguintes versões recomendadas:

• Java versão 8

147

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 1: Configurar o Amazon Keyspaces

• Scala 2.11, 2,12• Spark 2.4• Conector Cassandra 2.5 e superior• Motorista Cassandra 4.12

1. Para instalar o Scala, siga as instruções emhttps://www.scala-lang.org/download/scala2.html.2. Para instalar o Spark 3.1.2, siga este exemplo.

curl -o spark-3.1.2-bin-hadoop3.tgz -k https://dlcdn.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz

# now to untartar -zxvf spark-3.1.2-bin-hadoop3.tgz

# set this variable.export SPARK_HOME=$PWD/spark-3.1.2-bin-hadoop3.2```

Etapa 1: Configurar o Amazon Keyspaces paraintegração com o Apache Cassandra SparkConnector

Nesta etapa, você confirma que o particionador da sua conta é compatível com o Apache Spark Connectore configura as permissões do IAM necessárias. As práticas recomendadas a seguir ajudam você aprovisionar capacidade de leitura/gravação suficiente para a tabela.

1. Selecione um particionador para sua conta que seja compatível com o Spark Cassandra Connector.Para obter mais informações sobre particionadores e como alterá-los, consultethe section called“Trabalhar com particionadores” (p. 124).

2. Configure suas permissões do IAM para o Amazon Keyspaces, usando endpoints de interface VPC,com o Apache Spark.

• Atribua acesso de leitura/gravação à tabela do usuário e acesso de leitura às tabelas do sistema,conforme mostrado no exemplo de política do IAM listado abaixo.

• Preencher a tabela system.peers com sua interface disponível VPC endpoints é necessário paraclientes que acessam o Amazon Keyspaces com o Spark sobreVPC endpoints.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] },

148

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 2: Configurar o Apache Cassandra Spark Connector

{ "Sid":"ListVPCEndpoints", "Effect":"Allow", "Action":[ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcEndpoints" ], "Resource":"*" } ]}

3. Considere as seguintes práticas recomendadas para configurar capacidade de taxa de transferênciade leitura/gravação suficiente para sua tabela do Amazon Keyspaces para oferecer suporte ao tráfegodo Spark Cassandra Connector.

• Comece a usar a capacidade sob demanda para ajudá-lo a testar o cenário.• Para otimizar o custo da taxa de transferência de tabela para ambientes de produção, use

um limitador de taxa para tráfego do conector e configure sua tabela para usar a capacidadeprovisionada com dimensionamento automático. Para obter mais informações, consultethe sectioncalled “Gerenciamento da capacidade de throughput com o Application Auto Scaling” (p. 105)

• Você pode usar um limitador de taxa fixa que vem com o driver Cassandra. Há algunslimitadores detaxa adaptados ao Amazon KeyspacesnoAWSamostrasrepo.

• Para obter mais informações sobre gerenciamento de capacidade, consultethe section called “Modode capacidade de leitura/gravação” (p. 100).

Etapa 2: Configurar o Apache Cassandra SparkConnector

O Apache Spark é uma plataforma computacional de uso geral que você pode configurar de maneirasdiferentes. Para configurar o Spark e o Spark Cassandra Connector para integração com o AmazonKeyspaces, recomendamos que você comece com as configurações mínimas descritas na seção a seguire, em seguida, aumentá-las posteriormente conforme apropriado para sua carga de trabalho.

• Crie tamanhos de partição Spark menores que 8 MBs.

Em Spark,partiçõesrepresentam um pedaço atômico de dados que pode ser executado em parallel.Quando você está gravando dados no Amazon Keyspaces com o Spark Cassandra Connector, quantomenor a partição do Spark, menor a quantidade de registros que a tarefa irá gravar. Se uma tarefado Spark encontrar vários erros, ela falhará após o número designado de novas tentativas ter sidoesgotado. Para evitar repetir tarefas grandes e reprocessar muitos dados, mantenha o tamanho dapartição Spark pequeno.

• Use um baixo número simultâneo de gravações por executor com um grande número de novastentativas.

O Amazon Keyspaces retorna erros de capacidade insuficientes de volta aos drivers Cassandracomo tempos limite de operação. Você não pode resolver tempos limite causados por capacidadeinsuficiente alterando a duração do tempo limite configurado porque o Spark Cassandra Connectortenta repetir solicitações de forma transparente usando oMultipleRetryPolicy. Para garantir quenovas tentativas não sobrecarregem o pool de conexões do driver, use um baixo número simultâneode gravações por executor com um grande número de tentativas. O seguinte snippet de código é umexemplo disso.

spark.cassandra.query.retry.count = 500spark.cassandra.output.concurrent.writes = 3

149

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 3: Criar o arquivo de configuração do aplicativo

• Divida a taxa de transferência total e distribua-a em várias sessões do Cassandra.• O Cassandra Spark Connector cria uma sessão para cada executor do Spark. Pense nessa sessão

como a unidade de escala para determinar a taxa de transferência necessária e o número deconexões necessárias.

• Ao definir o número de núcleos por executor e o número de núcleos por tarefa, comece baixo eaumente conforme necessário.

• Defina falhas na tarefa do Spark para permitir o processamento em caso de erros transitórios. Depoisde se familiarizar com as características e os requisitos de tráfego do aplicativo, recomendamosdefinirspark.task.maxFailurespara um valor limitado.

• Por exemplo, a configuração a seguir pode lidar com duas tarefas simultâneas por executor, porsessão:

spark.executor.instances = configurable -> number of executors for the session.spark.executor.cores = 2 -> Number of cores per executor.spark.task.cpus = 1 -> Number of cores per task.spark.task.maxFailures = -1

• Desligue o lote.• Recomendamos que você desative o lote para melhorar os padrões de acesso aleatório. O seguinte

snippet de código é um exemplo disso.

spark.cassandra.output.batch.size.rows = 1 (Default = None)spark.cassandra.output.batch.grouping.key = none (Default = Partition)spark.cassandra.output.batch.grouping.buffer.size = 100 (Default = 1000)

• DefinaSPARK_LOCAL_DIRSpara um disco local rápido, com espaço suficiente.• Por padrão, o Spark salva arquivos de saída de mapa e conjuntos de dados distribuídos resilientes

(RDDs) em um/tmp folder. Dependendo da configuração do host Spark, isso pode resultaremEspaço insuficiente no dispositivoErros de estilo.

• Para definir oSPARK_LOCAL_DIRSvariável de ambiente para um diretório chamado/example/spark-dir, é possível usar o seguinte comando.

export SPARK_LOCAL_DIRS=/example/spark-dir

Etapa 3: Crie o arquivo de configuração doaplicativo

Para usar o Spark Cassandra Connector de código aberto com o Amazon Keyspaces, você precisafornecer um arquivo de configuração de aplicativo que contenha as configurações necessárias para seconectar com o DataStax Driver Java. Você pode usar credenciais específicas do serviço ou o plug-inSigV4 para se conectar.

Caso ainda não tenha feito isso, você precisará converter o certificado digital Starfield em um arquivoTrustStore. Você pode seguir as etapas detalhadas emthe section called “Antes de começar” (p. 34)notutorial de conexão de driver Java. Anote o caminho e a senha do arquivo TrustStore porque você precisadessa informação ao criar o arquivo de configuração do aplicativo.

Connect com a autenticação Sigv4Esta seção explica um exemploapplication.confarquivo que você pode usar ao se conectarcomAWScredenciais e o plug-in SigV4. Caso ainda não tenha feito isso, você precisará gerar suas

150

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Connect com credenciais específicas do serviço

chaves de acesso do IAM (uma ID de chave de acesso e uma chave de acesso secreta) e salvá-las emseuAWSArquivo de configuração ou como variáveis de ambiente. Para obter instruções detalhadas,consulte the section called “Credenciais necessárias paraAWSautenticação” (p. 19).

No exemplo a seguir, substitua o caminho do arquivo pelo arquivo TrustStore e substitua a senha.

datastax-java-driver { basic.contact-points = ["cassandra.us-east-1.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-1 } basic.request { consistency = LOCAL_QUORUM } advanced { auth-provider = { class = software.aws.mcs.auth.SigV4AuthProvider aws-region = us-east-1 } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "path_to_file/cassandra_truststore.jks" truststore-password = "password" hostname-validation=false } metadata = { schema { token-map.enabled = true } } }}

Atualize e salve esse arquivo de configuração como/home/user1/application.conf. Os exemplos aseguir usam esse caminho.

Connect com credenciais específicas do serviçoEsta seção explica um exemploapplication.confarquivo que você pode usar ao se conectar comcredenciais específicas do serviço. Caso ainda não tenha feito isso, você precisará gerar credenciaisespecíficas do serviço para o Amazon Keyspaces. Para obter instruções detalhadas, consulte the sectioncalled “Credenciais específicas do serviço” (p. 17).

No exemplo a seguir, substituausernameepasswordCom suas próprias credenciais. Além disso, substituao caminho do arquivo pelo arquivo TrustStore e substitua a senha.

datastax-java-driver { basic.contact-points = ["cassandra.us-east-1.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-1 } basic.request { consistency = LOCAL_QUORUM } advanced { auth-provider = { class = PlainTextAuthProvider username = "username" password = "password"

151

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Connect com uma taxa fixa

aws-region = "us-east-1" } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "path_to_file/cassandra_truststore.jks" truststore-password = "password" hostname-validation=false } metadata = { schema { token-map.enabled = true } } } }

Atualize e salve esse arquivo de configuração como/home/user1/application.confpara usar com oexemplo de código.

Connect com uma taxa fixaPara forçar uma taxa fixa por executor do Spark, você pode definir um limitador de solicitações. Esselimitador de solicitações limita a taxa de solicitações por segundo. O Spark Cassandra Connector implantauma sessão Cassandra por executor. O uso da fórmula a seguir pode ajudá-lo a obter uma taxa detransferência consistente em relação a uma tabela.

max-request-per-second * numberOfExecutors = total throughput against a table

Você pode adicionar esse exemplo ao arquivo de configuração do aplicativo criado anteriormente.

datastax-java-driver { advanced.throttler { class = RateLimitingRequestThrottler

max-requests-per-second = 3000 max-queue-size = 30000 drain-interval = 1 millisecond }}

Etapa 4: Preparar os dados de origem e a tabela dedestino no Amazon Keyspaces

Nesta etapa, você cria um arquivo de origem com dados de exemplo e uma tabela do Amazon Keyspaces.

1. Crie o arquivo de origem. Você pode escolher uma das seguintes opções:• Para este tutorial, você usa um arquivo de valores separados por vírgula (CSV) com o

nomekeyspaces_sample_table.csvcomo o arquivo de origem para a migração de dados.O arquivo de amostra fornecido contém algumas linhas de dados para uma tabela com onomebook_awards.

• Baixe o arquivo CSV de exemplo (keyspaces_sample_table.csv) que está contido noarquivo de arquivamento a seguirArquivo samplemigration.zip. Descompacte o arquivo eanote o caminho parakeyspaces_sample_table.csv.

152

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Gravar e ler dados do Amazon Keyspaces

• Se você quiser acompanhar seu próprio arquivo CSV para gravar dados no Amazon Keyspaces,certifique-se de que os dados sejam aleatórios. Os dados lidos diretamente de um banco dedados ou exportados para arquivos simples geralmente são ordenados pela partição e pela chaveprimária. A importação de dados solicitados para o Amazon Keyspaces pode fazer com que elessejam gravados em segmentos menores de partições do Amazon Keyspaces, o que resulta emuma distribuição de tráfego irregular. Isso pode levar a um desempenho mais lento e taxas deerro mais altas.

Em contraste, a aleatoriedade de dados ajuda a aproveitar os recursos integrados debalanceamento de carga do Amazon Keyspaces distribuindo o tráfego entre partições de formamais uniforme. Há várias ferramentas que você pode usar para aleatorizar dados. Para umexemplo que usa a ferramenta de código abertoShufconsultethe section called “Etapa 2: Prepararos dados” (p. 77)No tutorial de migração de dados. Veja a seguir um exemplo que mostra comoembaralhar dados como umDataFrame.

import org.apache.spark.sql.functions.randvalshuffledDF = dataframe.orderBy(rand())

2. Crie o espaço de chave e a tabela de destino no Amazon Keyspaces.

a. Connect ao Amazon Keyspaces usandocqlshe substitua o endpoint do serviço, o nome dousuário e a senha no exemplo a seguir por seus próprios valores.

cqlsh cassandra.us-east-2.amazonaws.com 9142 -u "111122223333" -p "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --ssl

b. Crie um novo espaço de chave com o nomecatalogComo mostrado no exemplo a seguir.

CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};

c. Depois que o novo espaço de chave tiver um status disponível, use o código a seguirpara criar a tabela de destinobook_awards. Para saber mais sobre a criação de recursosassíncronos e como verificar se um recurso está disponível, consultethe section called “Criarkeyspaces” (p. 117).

CREATE TABLE catalog.book_awards ( year int, award text, rank int, category text, book_title text, author text, publisher text, PRIMARY KEY ((year, award), category, rank) );

Etapa 5: Gravar e ler dados do Amazon Keyspacesusando o Apache Cassandra Spark Connector

Nesta etapa, você começa carregando os dados do arquivo de amostra em umDataFramecom oconector Spark Cassandra. Em seguida, você escreve os dados doDataFrameem sua tabela doAmazon Keyspaces. Você também pode usar essa parte de forma independente, por exemplo, paramigrar dados para uma tabela do Amazon Keyspaces. Finalmente, você lê os dados da sua tabela emumDataFrameusando o Spark Cassandra Connector. Você também pode usar essa parte de forma

153

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Gravar e ler dados do Amazon Keyspaces

independente, por exemplo, para ler dados de uma tabela do Amazon Keyspaces para realizar análises dedados com o Apache Spark.

1. Inicie o Spark Shell conforme mostrado no exemplo a seguir. Observe que este exemplo está usandoa autenticação Sigv4.

./spark-shell --files application.conf --conf spark.cassandra.connection.config.profile.path=application.conf --packages software.aws.mcs:aws-sigv4-auth-cassandra-java-driver-plugin:4.0.5,com.datastax.spark:spark-cassandra-connector_2.12:3.1.0 --conf spark.sql.extensions=com.datastax.spark.connector.CassandraSparkExtensions

2. Importe o Spark Cassandra Connector com o seguinte código.

import org.apache.spark.sql.cassandra._

3. Para ler dados do arquivo CSV e armazená-los em umDataFrame, é possível usar o exemplo decódigo a seguir.

var df = spark.read.option("header","true").option("inferSchema","true").csv("keyspaces_sample_table.csv")

É possível exibir o resultado com o seguinte comando.

scala> df.show();

A saída deve ser semelhante a essa.

+----------------+----+-----------+----+------------------+--------------------+-------------+| award|year| category|rank| author| book_title| publisher|+----------------+----+-----------+----+------------------+--------------------+-------------+|Kwesi Manu Prize|2020| Fiction| 1| Akua Mansa| Where did you go?|SomePublisher||Kwesi Manu Prize|2020| Fiction| 2| John Stiles| Yesterday|Example Books||Kwesi Manu Prize|2020| Fiction| 3| Nikki Wolf|Moving to the Cha...| AnyPublisher|| Wolf|2020|Non-Fiction| 1| Wang Xiulan| History of Ideas|Example Books|| Wolf|2020|Non-Fiction| 2|Ana Carolina Silva| Science Today|SomePublisher|| Wolf|2020|Non-Fiction| 3| Shirley Rodriguez|The Future of Sea...| AnyPublisher|| Richard Roe|2020| Fiction| 1| Alejandro Rosalez| Long Summer|SomePublisher|| Richard Roe|2020| Fiction| 2| Arnav Desai| The Key|Example Books|| Richard Roe|2020| Fiction| 3| Mateo Jackson| Inside the Whale| AnyPublisher|+----------------+----+-----------+----+------------------+--------------------+-------------+

Você pode confirmar o esquema dos dados naDataFrameComo mostrado no exemplo a seguir.

scala> df.printSchema

154

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Etapa 5: Gravar e ler dados do Amazon Keyspaces

A saída deve ser semelhante à seguinte.

root|-- award: string (nullable = true)|-- year: integer (nullable = true)|-- category: string (nullable = true)|-- rank: integer (nullable = true)|-- author: string (nullable = true)|-- book_title: string (nullable = true)|-- publisher: string (nullable = true)

4. Use o comando a seguir para gravar os dados naDataFramepara a tabela Amazon Keyspaces.

df.write.cassandraFormat("book_awards", "catalog").mode("APPEND").save()

5. Para confirmar que os dados foram salvos, você pode lê-los de volta para um dataframe, conformemostrado no exemplo a seguir.

var newDf = spark.read.cassandraFormat("book_awards", "catalog").load()

Em seguida, você pode mostrar os dados que agora estão contidos no dataframe.

scala> newDf.show()

A saída desse comando deve ser semelhante à seguinte.

+--------------------+------------------+----------------+-----------+-------------+----+----+| book_title| author| award| category| publisher|rank|year|+--------------------+------------------+----------------+-----------+-------------+----+----+| Long Summer| Alejandro Rosalez| Richard Roe| Fiction|SomePublisher| 1|2020|| History of Ideas| Wang Xiulan| Wolf|Non-Fiction|Example Books| 1|2020|| Where did you go?| Akua Mansa|Kwesi Manu Prize| Fiction|SomePublisher| 1|2020|| Inside the Whale| Mateo Jackson| Richard Roe| Fiction| AnyPublisher| 3|2020|| Yesterday| John Stiles|Kwesi Manu Prize| Fiction|Example Books| 2|2020||Moving to the Cha...| Nikki Wolf|Kwesi Manu Prize| Fiction| AnyPublisher| 3|2020||The Future of Sea...| Shirley Rodriguez| Wolf|Non-Fiction| AnyPublisher| 3|2020|| Science Today|Ana Carolina Silva| Wolf|Non-Fiction|SomePublisher| 2|2020|| The Key| Arnav Desai| Richard Roe| Fiction|Example Books| 2|2020|+--------------------+------------------+----------------+-----------+-------------+----+----+

155

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

Solução de problemas comuns ao usar o SparkCassandra Connector com o Amazon Keyspaces

Você pode usar a Amazon CloudWatch Métricas para ajudá-lo a solucionar problemas com suaconfiguração do Spark Cassandra Connector no Amazon Keyspaces. Para saber mais sobre ouso do Amazon Keyspaces com o CloudWatch, consultethe section called “Monitoramento comCloudWatch” (p. 226).

Esta seção descreve as métricas mais úteis a serem observadas quando você estiver usando o SparkCassandra Connector.

PerconnectionRequestrateExceeded

O Amazon Keyspaces tem uma cota de 3.000 solicitações por segundo, por conexão. Cada executordo Spark estabelece uma conexão com o Amazon Keyspaces. A execução de várias novas tentativaspode esgotar sua cota de taxa de solicitação por conexão. Se você exceder essa cota, o AmazonKeyspaces emite umPerConnectionRequestRateExceededmétrica no CloudWatch.

Se você vir PerConnectionRequestRateExceeded eventos presentes junto com outros erros dosistema ou do usuário, é provável que o Spark esteja executando várias tentativas além do númeroalocado de solicitações por conexão.

Se você virPerConnectionRequestRateExceededeventos sem outros erros, talvez sejanecessário aumentar o número de conexões nas configurações do driver para permitir maisthroughput, ou talvez seja necessário aumentar o número de executores em seu trabalho do Spark.

StoragePartitionThroughputCapacityExceeded

O Amazon Keyspaces tem uma cota de 1.000 WCUs ou WRUs porsegundo/3.000 RCUs ou RRUs por segundo, por partição. Se você estivervendoStoragePartitionThroughputCapacityExceeded CloudWatch eventos, isso pode indicarque os dados não são randomizados em carga. Para obter exemplos de como embaralhar dados,consultethe section called “Etapa 4: Preparar os dados de origem e a tabela de destino” (p. 152).

Erros e avisos comunsSe você estiver usando o Amazon Virtual Private Cloud e se conectar ao Amazon Keyspaces, o driverCassandra poderá emitir uma mensagem de aviso sobre o próprio nó de controle nasystem.peerstabela.Para obter mais informações, consultethe section called “Erros e avisos comuns” (p. 250) É possívelignorar esse aviso com segurança.

156

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como funciona

Recuperação point-in-time paraAmazon Keyspaces (para ApacheCassandra)

A PITR (point-in-time recovery, recuperação point-in-time) ajuda a proteger as tabelas do AmazonKeyspaces contra operações acidentais de gravação ou exclusão, fornecendo backups contínuos dosdados da tabela.

Por exemplo, suponhamos que um script de teste seja gravado acidentalmente em uma tabela do AmazonKeyspaces de produção. com point-in-time Para recuperar, você pode recuperar os dados da tabela paraqualquer segundo desde que a PITR tenha sido ativada nos últimos 35 dias. Se você excluir uma tabelacom point-in-time A recuperação foi ativada, você pode consultar os dados da tabela excluída por 35dias (sem custo adicional) e restaurá-los para o estado em que estava imediatamente antes do ponto deexclusão.

Você pode restaurar uma tabela do Amazon Keyspaces para um ponto no tempo usando o consoledoAWSSDK e oAWS Command Line Interface(AWS CLI), ou Cassandra Query Language (CQL). Paraobter mais informações, consulteRestaurando uma tabela do Amazon Keyspaces para um ponto notempo (p. 164)

As operações point-in-time não têm impacto no desempenho ou na disponibilidade na tabela base, e arestauração de uma tabela não consome taxa de transferência adicional.

Para obter informações sobre cotas PITR, consulteCotas (p. 272).

Para obter informações sobre definição de preço, consulteDefinição de preço do Amazon Keyspaces (forApache Cassandra).

Tópicos• Como point-in-time recuperação funciona no Amazon Keyspaces (p. 157)• Restaurando uma tabela do Amazon Keyspaces para um ponto no tempo (p. 164)

Como point-in-time recuperação funciona noAmazon Keyspaces

Esta seção fornece uma visão geral de como o Amazon Keyspaces point-in-time Recuperação (PITR)funciona. Para obter mais informações sobre os preços da, consulteDefinição de preço do AmazonKeyspaces (for Apache Cassandra).

Tópicos• Habilitar point-in-time recuperação (PITR) (p. 158)• Permissões necessárias para restaurar uma tabela (p. 160)• Janela de tempo para backups contínuos PITR (p. 161)

157

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Habilitar o PITR

• Configurações de restauração PITR (p. 162)• Restauração PITR de tabelas criptografadas (p. 163)• Tempo de restauração da tabela com PITR (p. 163)• Amazon Keyspaces PITR e integração comAWSserviços (p. 164)

Habilitar point-in-time recuperação (PITR)Você pode habilitar o PITR usando o console do ou habilitá-lo programaticamente.

Habilitando o PITR com o consoleAs configurações PITR para novas tabelas podem ser gerenciadas sob aConfiguraçõespersonalizadasopção. Por padrão, o PITR está habilitado em novas tabelas criadas por meio do console.

Para habilitar o PITR para uma tabela existente, conclua as seguintes etapas.

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneTabelasE selecione a tabela que você quer editar.3. NoBackups doguia, selecioneEdite.4. NoEdite point-in-time Configurações de recuperaçãoseção, selecioneHabilitar a recuperação point-in-

time.

Você pode desativar o PITR em uma tabela a qualquer momento com as seguintes etapas.

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneTabelasE selecione a tabela que você quer editar.3. NoBackups doguia, selecioneEdite.4. NoEdite point-in-time Configurações de recuperaçãoseção, limpe aHabilitar a recuperação point-in-

time.

Important

A desativação do PITR exclui seu histórico de backup imediatamente, mesmo que você reative oPITR na tabela dentro de 35 dias.

Para saber como restaurar uma tabela usando o console, consultethe section called “Restaurando umatabela para um ponto no tempo (console)” (p. 165).

Habilitar o PITR usando aAWS CLIVocê pode gerenciar as configurações PITR para tabelas usando oUpdateTableAPI.

Ao criar uma nova tabela usandoAWS CLI, é necessário ativar explicitamente o PITR ao criar a novatabela.

Para habilitar o PITR quando estiver criando uma nova tabela, use o seguinteAWS CLIcomando comoexemplo. O comando foi dividido em linhas separadas para melhorar a legibilidade.

aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable'

158

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Habilitar o PITR

--schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --point-in-time-recovery 'status=ENABLED'

Note

Se não point-in-time O valor de recuperação é especificado, a recuperação point-in-time estádesativada por padrão.

Para confirmar a point-in-time Configuração de recuperação para uma tabela, você pode usar oseguinteAWS CLIcomando.

aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'

Para habilitar o PITR para uma tabela existente usando aAWS CLI, execute o comando a seguir.

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=ENABLED'

Para desativar o PITR em uma tabela existente, execute o seguinteAWS CLIcomando.

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=DISABLED'

Important

A desativação do PITR exclui seu histórico de backup imediatamente, mesmo que você reative oPITR na tabela dentro de 35 dias.

Habilitando o PITR usando CQLVocê pode gerenciar as configurações PITR para tabelas usandoopoint_in_time_recoverypropriedade personalizada.

Ao criar uma nova tabela usando CQL, você deve habilitar explicitamente o PITR ao criar a nova tabela.

Para habilitar o PITR ao criar uma nova tabela, você pode usar o seguinte comando CQL como exemplo.

CREATE TABLE "my_keyspace1"."my_table1"( "id" int, "name" ascii, "date" timestamp, PRIMARY KEY("id"))WITH CUSTOM_PROPERTIES = { 'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'}, 'point_in_time_recovery':{'status':'enabled'}}

Note

Se não point-in-time A propriedade personalizada de recuperação é especificada, a recuperaçãopoint-in-time está desativada por padrão.

Para habilitar o PITR para uma tabela existente usando o CQL, execute o seguinte comando CQL.

ALTER TABLE mykeyspace.mytable

159

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurar permissões

WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}

Para desativar o PITR em uma tabela existente, execute o seguinte comando CQL.

ALTER TABLE mykeyspace.mytableWITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}

Important

A desativação do PITR exclui seu histórico de backup imediatamente, mesmo que você reative oPITR na tabela dentro de 35 dias.

Para obter mais informações na CQL Language Reference, consultethe section called “CREATETABLE” (p. 261)ethe section called “ALTER TABLE” (p. 263). Para saber como restaurar uma tabelausando o CQL, consultethe section called “Restaurando uma tabela para um ponto no tempo com oCQL” (p. 167).

Permissões necessárias para restaurar uma tabelaPara restaurar uma tabela com êxito, o usuário ou a função do IAM precisa das seguintes permissõesmínimas:

• cassandra:Restore— A ação de restauração é necessária para que a tabela de destino sejarestaurada.

• cassandra:Select— É necessária a ação de seleção da para ler da tabela de origem.• cassandra:TagResource— A ação da tag é opcional e só é necessária se a operação de restauração

adicionar tags.

Veja a seguir um exemplo de política que concede as permissões mínimas necessárias a um usuário pararestaurar tabelas no keyspacemykeyspace.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Restore", "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

Permissões adicionais para restaurar uma tabela podem ser necessárias com base em outros recursosselecionados. Por exemplo, se a tabela de origem for criptografada em repouso com uma chavegerenciada pelo cliente, o Amazon Keyspaces deverá ter permissões para acessar a chave gerenciadapelo cliente da tabela de origem para restaurar a tabela com êxito. Para obter mais informações,consultethe section called “PITR e tabelas criptografadas” (p. 163)

Se você estiver usando políticas do IAM comChaves de condição dopara restringir o tráfego de entradaa fontes específicas, você deve garantir que o Amazon Keyspaces tenha permissão para executar umaoperação de restauração em nome do diretor. Você deve adicionar umaws:ViaAWSServicechave

160

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Backups contínuos

de condição para sua política do IAM se sua política restringir o tráfego de entrada a qualquer um dosseguintes:

• VPC endpoints comaws:SourceVpce

• Intervalos de IP comaws:SourceIp

• VPCs comaws:SourceVpc

Oaws:ViaAWSServicechave de condição permite acesso quando qualquerAWSO serviço faz umasolicitação usando as credenciais do principal. Para obter mais informações, consulteElementos de políticaJSON do IAM: Chave de condiçãonoManual do usuário do IAM.

Veja a seguir um exemplo de uma política que restringe o tráfego de origem a um endereço IP específico epermite que o Amazon Keyspaces restaure uma tabela em nome do principal.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CassandraAccessForCustomIp", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"false" }, "ForAnyValue:IpAddress":{ "aws:SourceIp":[ "123.45.167.89" ] } } }, { "Sid":"CassandraAccessForAwsService", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"true" } } } ]}

Para ver um exemplo de política usando aaws:ViaAWSServiceChave de condição global, consultethesection called “Políticas de VPC endpoint e recuperação point-in-time do Amazon Keyspaces(PITR)” (p. 249).

Janela de tempo para backups contínuos PITRO Amazon Keyspaces PITR usa dois carimbos de data/hora para manter o período de tempo para o qualos backups restauráveis estão disponíveis para uma tabela.

• Tempo restaurável mais antigo — marca a hora do primeiro backup restaurável. O backup restaurávelmais antigo retorna até 35 dias ou quando o PITR foi ativado, o que for mais recente. A janela de backupmáxima de 35 dias não pode ser modificada.

161

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurar configurações da

• Hora atual — O carimbo de data e hora para o backup restaurável mais recente é a hora atual. Senenhum carimbo de data/hora for fornecido durante uma restauração, a hora atual será usada.

Quando o PITR estiver habilitado, é possível restaurar para qualquer point-in-timeentreEarliestRestorableDateTimeeCurrentTime. Você só pode restaurar os dados da tabela paraum momento em que o PITR foi habilitado.

Se você desabilitar o PITR e depois reativá-lo novamente, redefinirá a hora de início do primeiro backupdisponível para quando o PITR foi reativado. Isso significa que a desativação do PITR apaga seu históricode backup.

Note

As operações de linguagem de definição de dados (DDL) em tabelas, como alterações deesquema, são executadas de forma assíncrona. Você só pode ver as operações concluídasnos dados da tabela restaurada, mas poderá ver ações adicionais na tabela de origem se elasestivessem em andamento no momento da restauração. Para ver uma lista de instruções DDL,consultethe section called “Instruções DDL” (p. 259).

Uma tabela não precisa estar ativa para ser restaurada. Você também pode restaurar tabelas excluídasse o PITR tiver sido habilitado na tabela excluída e a exclusão ocorreu dentro da janela de backup (ou nosúltimos 35 dias).

Note

Se uma nova tabela for criada com o mesmo nome qualificado (por exemplo,mykeyspace.mytable) como uma tabela excluída anteriormente, a tabela excluída não será maisrestaurável. Se você tentar fazer isso a partir no console, um aviso será exibido.

Configurações de restauração PITRQuando você restaura uma tabela usando PITR, o Amazon Keyspaces restaura o esquema eos dados da tabela de origem para o estado com base no carimbo de data/hora selecionado(day:hour:minute:second) para uma nova tabela. O PITR não sobrescreve as tabelas existentes.

Além do esquema e dos dados da tabela, o PITR restaura ocustom_propertiesNa tabela de origem. Aocontrário dos dados da tabela, que são restaurados com base no carimbo de data/hora selecionado entrea hora de restauração mais antiga e a hora atual, as propriedades personalizadas são sempre restauradascom base nas configurações da tabela a partir da hora atual.

As configurações da tabela restaurada correspondem às configurações da tabela de origem com o carimbode data/hora de quando a restauração foi iniciada. Se você quiser substituir essas configurações durante arestauração, poderá fazê-lo usandoWITH custom_properties. As propriedades personalizadas incluemas configurações a seguir.

• Modo de capacidade de leitura/gravação• Configurações de capacidade de taxa de transferência provisionada• Configurações do PITR

Quando você faz uma restauração completa da tabela, todas as configurações da tabela restaurada sãooriginadas das configurações atuais da tabela de origem no momento da restauração.

Por exemplo, suponha que a taxa de transferência provisionada de uma tabela tenha sido reduzidarecentemente para 50 unidades de capacidade de leitura e 50 unidades de capacidade de gravação.Você então restaura o estado da tabela para três semanas atrás. Nesse momento, a taxa de transferência

162

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

PITR e tabelas criptografadas

provisionada estava definida como 100 unidades de capacidade de leitura e 100 unidades de capacidadede gravação. Nesse caso, o Amazon Keyspaces restaura os dados da tabela para esse ponto no tempo,mas usa as configurações de taxa de transferência provisionada atual (50 unidades de capacidade deleitura e 50 unidades de capacidade de gravação).

As configurações a seguir não são restauradas e você deve configurá-las manualmente para a novatabela.

• Políticas de dimensionamento automático (para tabelas que usam o modo de capacidade provisionada)• Políticas do AWS Identity and Access Management (IAM)• Amazônia CloudWatch Métricas e alarmes do• Tags (podem ser adicionadas ao CQLRESTOREinstrução usandoWITH TAGS)

Restauração PITR de tabelas criptografadasQuando você restaura uma tabela usando PITR, o Amazon Keyspaces restaura as configurações decriptografia da tabela de origem. Se a tabela foi criptografada com umChave pertencente à AWS(padrão),a tabela é restaurada com a mesma configuração automaticamente. Se a tabela que você deseja restaurarfoi criptografada usando uma chave gerenciada pelo cliente, a mesma chave gerenciada pelo clienteprecisa estar acessível ao Amazon Keyspaces para restaurar os dados da tabela.

Você pode alterar as configurações de criptografia da tabela no momento da restauração. Para mudar deumChave pertencente à AWSpara uma chave gerenciada pelo cliente, você precisa fornecer uma chavegerenciada pelo cliente válida e acessível no momento da restauração.

Se você quiser mudar de uma chave gerenciada pelo cliente para umaChave pertencente à AWS,confirme se o Amazon Keyspaces tem acesso à chave gerenciada pelo cliente da tabela de origem pararestaurar a tabela com umChave pertencente à AWS. Para obter mais informações sobre criptografia emconfigurações de repouso para tabelas, consultethe section called “Como funciona” (p. 187).

Note

Se a tabela foi excluída porque o Amazon Keyspaces perdeu o acesso à chave gerenciadapelo cliente, você precisa garantir que a chave gerenciada pelo cliente esteja acessível aoAmazon Keyspaces antes de tentar restaurar a tabela. Uma tabela criptografada com umachave gerenciada pelo cliente não poderá ser restaurada se o Amazon Keyspaces não tiveracesso a essa chave. Para obter mais informações, consulteSolucionar problemas de acesso àchavenoAWS Key Management ServiceGuia do desenvolvedor do .

Tempo de restauração da tabela com PITRO tempo necessário para restaurar uma tabela é baseado em vários fatores e nem sempre estácorrelacionado diretamente com o tamanho da tabela.

Veja a seguir algumas considerações sobre os tempos de restauração.

• Os backups são restaurados para novas tabelas. Pode demorar até 20 minutos (mesmo se a tabelaestiver vazia) para executar todas as ações necessárias para criar a nova tabela e iniciar o processo derestauração.

• Os tempos de restauração para tabelas grandes com modelos de dados bem distribuídos podem durarvárias horas ou mais.

• Se a tabela de origem tiver dados significativamente distorcidos, o tempo de restauração poderáaumentar. Por exemplo, se a chave primária de uma tabela estiver usando o mês do ano como chave departição, e todos os dados forem do mês de dezembro, os dados estarão distorcidos.

163

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorIntegração com serviços da AWS

Uma prática recomendada ao planejar a recuperação de desastres é documentar regularmente os temposmédios de conclusão da restauração e estabelecer como esses tempos afetam seu objetivo geral detempo de recuperação.

Amazon Keyspaces PITR e integraçãocomAWSserviçosAs seguintes operações PITR são registradas usandoAWS CloudTrailpara permitir monitoramento eauditoria contínuos.

• Crie uma nova tabela com PITR ativado ou desativado.• Ative ou desative o PITR em uma tabela existente.• Restaure uma tabela ativa ou excluída.

Para obter mais informações, consulteRegistro de chamadas de API do Amazon Keyspaces comAWSCloudTrail (p. 239)

Você pode realizar as ações PITR a seguir usandoAWS CloudFormation.

• Crie uma nova tabela com PITR ativado ou desativado.• Ative ou desative o PITR em uma tabela existente.

Para obter mais informações, consulte o .Referência do tipo de recurso CassandranoAWSCloudFormationGuia do usuário do.

Restaurando uma tabela do Amazon Keyspacespara um ponto no tempo

Amazon Keyspaces (para Apache Cassandra) point-in-time Recuperação (PITR) permite restauraros dados da tabela do Amazon Keyspaces para qualquer ponto nos últimos 35 dias. A primeira partedeste tutorial mostra como restaurar uma tabela para um ponto no tempo usando o console do AmazonKeyspaces, aAWS Command Line Interface(AWS CLI) e Cassandra Query Language (CQL). A segundaparte mostra como restaurar uma tabela excluída usando oAWS CLIe CQL.

Tópicos• Antes de começar (p. 164)• Restaurando uma tabela para um ponto no tempo (console) (p. 165)• Restaurando uma tabela para um ponto no tempo com aAWS CLI (p. 165)• Restaurando uma tabela para um ponto no tempo com o CQL (p. 167)• Restaurando uma tabela excluída com oAWS CLI (p. 169)• Restaurando uma tabela excluída com CQL (p. 169)

Antes de começarCaso ainda não tenha feito isso, você deve configurar as permissões apropriadas para que o usuáriorestaure as tabelas do Amazon Keyspaces. DentroAWS Identity and Access Management(IAM),oAWSpolítica gerenciadaAmazonKeyspacesFullAccessinclui as permissões para restaurar tabelasdo Amazon Keyspaces. Para obter etapas detalhadas para implementar uma política com permissõesmínimas necessárias, consultethe section called “Restaurar permissões” (p. 160).

164

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela para um ponto no tempo (console)

Restaurando uma tabela para um ponto no tempo(console)O exemplo a seguir demonstra como usar o console do Amazon Keyspaces para restaurar uma tabelaexistente chamadamytablePara um momento específico.

Note

Esse procedimento pressupõe que você tenha ativado point-in-time recuperação. Para habilitar oPITR para omytabletabela, siga as etapas emthe section called “Usar o console” (p. 158).

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, no lado esquerdo do console, selecione Tables (Tabelas).3. Na lista de tabelas, escolha a tabela mytable.4. NoBackups doGuia domytabletabela, noRecuperação point-in-timeseção, escolhaRestaurar.

5. Insira mytable_restored como o novo nome da tabela.6. Para definir o ponto no tempo da operação de restauração, você pode escolher entre duas opções:

• Selecione o pré-configuradoO mais antigoTempo.• SelectEspecificar data e horae insira a data e a hora para as quais deseja restaurar a nova tabela.

Note

É possível restaurar para qualquer ponto no tempo dentro doO mais antigoTempo e a horaatual. O Amazon Keyspaces restaura os dados da tabela para o estado com base na data ena hora selecionadas (day:minute:second).

7. SelecioneRestaurarPara iniciar o processo de restauração.

A tabela que está sendo restaurada é mostrada com o status Restoring (Em restauração). Quando oprocesso de restauração for concluído, o status da tabela mytable_restored mudará para Active(Ativo).

Important

Enquanto uma restauração estiver em andamento, não modifique nem exclua as políticasdo AWS Identity and Access Management (IAM) que concedem à entidade do IAM (porexemplo, usuário, grupo ou função) permissão para realizar a restauração. Do contrário,pode haver um comportamento inesperado. Por exemplo, suponha que você tenha removidoas permissões de gravação de uma tabela enquanto essa tabela estava sendo restaurada.Nesse caso, a operação RestoreTableToPointInTime subjacente não conseguirá gravarna tabela nenhum dos dados restaurados.Você pode modificar ou excluir permissões somente depois que a operação de restauração éconcluída.

Restaurando uma tabela para um ponto no tempo comaAWS CLIO seguinte procedimento mostra como usar a AWS CLI para restaurar uma tabela existente chamadamyTable para um ponto no tempo.

1. Na primeira etapa, você cria uma tabela simples chamadamyTableque tem PITR habilitado. Ocomando foi dividido em linhas separadas para legibilidade.

165

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRestaurando uma tabela para umponto no tempo com aAWS CLI

aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --point-in-time-recovery 'status=ENABLED'

2. Confirme as propriedades da nova tabela e revise oearliestRestorableTimestamppara PITR.

aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'

A saída desse comando retorna o seguinte.

{ "keyspaceName": "myKeyspace", "tableName": "myTable", "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable", "creationTimestamp": "2022-06-20T14:34:57.049000-07:00", "status": "ACTIVE", "schemaDefinition": { "allColumns": [ { "name": "id", "type": "int" }, { "name": "date", "type": "timestamp" }, { "name": "name", "type": "text" } ], "partitionKeys": [ { "name": "id" } ], "clusteringKeys": [], "staticColumns": [] }, "capacitySpecification": { "throughputMode": "PAY_PER_REQUEST", "lastUpdateToPayPerRequestTimestamp": "2022-06-20T14:34:57.049000-07:00" }, "encryptionSpecification": { "type": "AWS_OWNED_KMS_KEY" }, "pointInTimeRecovery": { "status": "ENABLED", "earliestRestorableTimestamp": "2022-06-20T14:35:13.693000-07:00" }, "defaultTimeToLive": 0, "comment": { "message": "" }}

Você pode restaurar uma tabela ativa para qualquer point-in-time entreoearliestRestorableTimestampe a hora atual em intervalos de um segundo. A hora atual é opadrão.

166

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela paraum ponto no tempo com o CQL

3. Para restaurar uma tabela para um momento específico, especifique umrestore_timestampNoformato ISO 8601. É possível escolher qualquer ponto durante os últimos 35 dias emintervalos de um segundo. Por exemplo, o comando a seguir restaura a tabela para oEarliestRestorableDateTime.

aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored' --restore-timestamp "2022-06-20 21:35:14.693"

A saída desse comando retorna o ARN da tabela restaurada.

{ "restoredTableARN": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable_restored"}

Para restaurar a tabela para a hora atual, você pode omitir orestore-timestamp.

aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored1'"

Important

Enquanto uma restauração estiver em andamento, não modifique nem exclua as políticas doAWS Identity and Access Management (IAM) que concedem à entidade do IAM (por exemplo,usuário, grupo ou função) permissão para realizar a restauração. Do contrário, pode haver umcomportamento inesperado. Por exemplo, suponha que você tenha removido as permissões degravação de uma tabela enquanto essa tabela estava sendo restaurada. Nesse caso, a operaçãoRestoreTableToPointInTime subjacente não conseguirá gravar na tabela nenhum dos dadosrestaurados.Você pode modificar ou excluir permissões somente depois que a operação de restauração éconcluída.

Restaurando uma tabela para um ponto no tempo como CQLO procedimento a seguir mostra como usar o CQL para restaurar uma tabela existentechamadamytablePara um momento específico.

Note

Esse procedimento pressupõe que você tenha ativado point-in-time recuperação. Para habilitar oPITR na tabela, siga as etapas emthe section called “CQL” (p. 159).

1. Você pode restaurar uma tabela ativa para um point-in-timeentreearliest_restorable_timestampe a hora atual. A hora atual é o padrão.

Para confirmar isso point-in-time a recuperação está ativada para omytabletabela, consulteosystem_schema_mcs.tablesda seguinte forma.

SELECT custom_propertiesFROM system_schema_mcs.tablesWHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

167

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela paraum ponto no tempo com o CQL

A recuperação point-in-time está ativada como mostrado na saída de exemplo a seguir.

custom_properties-----------------{ ..., "point_in_time_recovery": { "earliest_restorable_timestamp":"2020-06-30T19:19:21.175Z" "status":"enabled" }}

2. Restaure a tabela para um ponto no tempo, especificado por umrestore_timestampNo formatoISO 8601. Neste caso, omytablea tabela é restaurada para a hora atual. É possível omitir oWITHrestore_timestamp = ...Cláusula. Sem a cláusula, o carimbo de data/hora atual é usado.

RESTORE TABLE mykeyspace.mytable_restoredFROM TABLE mykeyspace.mytable;

Você também restaurar para um ponto específico. Você pode especificar qualquer pontodurante os últimos 35 dias. Por exemplo, o comando a seguir restaura a tabela para oEarliestRestorableDateTime.

RESTORE TABLE mykeyspace.mytable_restoredFROM TABLE mykeyspace.mytableWITH restore_timestamp = '2020-06-30T19:19:21.175Z';

Para obter uma descrição completa da sintaxe, consultethe section called “TABELA DERESTAURAÇÃO” (p. 265)na referência do idioma.

Para verificar se a restauração da tabela foi bem-sucedida, consulte osystem_schema_mcs.tablesParaconfirmar o status da tabela.

SELECT statusFROM system_schema_mcs.tablesWHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable_restored'

A consulta mostra a saída a seguir.

status------RESTORING

A tabela que está sendo restaurada é mostrada com o status Restoring (Em restauração). Quando oprocesso de restauração for concluído, o status da tabela mytable_restored mudará para Active(Ativo).

Important

Enquanto uma restauração estiver em andamento, não modifique nem exclua as políticas doAWS Identity and Access Management (IAM) que concedem à entidade do IAM (por exemplo,usuário, grupo ou função) permissão para realizar a restauração. Do contrário, pode haver umcomportamento inesperado. Por exemplo, suponha que você tenha removido as permissões degravação de uma tabela enquanto essa tabela estava sendo restaurada. Nesse caso, a operaçãoRestoreTableToPointInTime subjacente não conseguirá gravar na tabela nenhum dos dadosrestaurados.

168

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela excluída com oAWS CLI

Você pode modificar ou excluir permissões somente depois que a operação de restauração éconcluída.

Restaurando uma tabela excluída com oAWS CLIO procedimento a seguir mostra como usar oAWS CLIPara restaurar uma tabela excluídachamadamyTableaté o momento da exclusão.

Note

Este procedimento pressupõe que o PITR foi habilitado na tabela excluída.

1. Exclua a tabela criada no tutorial anterior.

aws keyspaces delete-table --keyspace-name 'myKeyspace' --table-name 'myTable'

2. Restaure a tabela excluída para o momento da exclusão com o seguinte comando.

aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored2'

A saída desse comando retorna o ARN da tabela restaurada.

{ "restoredTableARN": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable_restored2"}

Restaurando uma tabela excluída com CQLO procedimento a seguir mostra como usar o CQL para restaurar uma tabela excluídachamadamytableaté o momento da exclusão.

Note

Este procedimento pressupõe que o PITR foi habilitado na tabela excluída.

1. Para confirmar isso point-in-time A recuperação está ativada para uma tabela excluída, consulte atabela do sistema. Somente tabelas com point-in-time recuperação ativada são mostradas.

SELECT custom_propertiesFROM system_schema_mcs.tables_history WHERE keyspace_name = 'mykeyspace' AND table_name = 'my_table';

A consulta mostra a saída a seguir.

custom_properties------------------{ ..., "point_in_time_recovery":{ "restorable_until_time":"2020-08-04T00:48:58.381Z", "status":"enabled" }

169

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restaurando uma tabela excluída com CQL

}

2. Restaure a tabela para o momento da exclusão com a seguinte instrução de amostra.

RESTORE TABLE mykeyspace.mytable_restoredFROM TABLE mykeyspace.mytable;

170

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como funciona

Dados expirados usando a vida útil(TTL) do Amazon Keyspaces

O Amazon Keyspaces (para Apache Cassandra) Time to Live (TTL) ajuda a simplificar a lógica doaplicativo e otimizar o preço do armazenamento expirando dados das tabelas automaticamente. Os dadosque você não precisa mais são excluídos automaticamente da tabela com base no valor Time to Liveque você definiu. Isso facilita o cumprimento das políticas de retenção de dados com base nos requisitoscomerciais, industriais ou regulamentares que definem por quanto tempo os dados precisam ser retidos ouespecificam quando os dados devem ser excluídos.

Por exemplo, você pode usar TTL em um aplicativo AdTech para agendar quando os dados de anúnciosespecíficos expirarem e não estiverem mais visíveis para os clientes. Você também pode usar o TTL pararetirar dados antigos automaticamente e economizar em seus custos de armazenamento. Você podedefinir um valor TTL padrão para toda a tabela e sobrescrever esse valor para linhas e colunas individuais.As operações TTL não afetam o desempenho do aplicativo. Além disso, o número de linhas e colunasmarcadas para expirar com TTL não afeta a disponibilidade da tabela.

O Amazon Keyspaces filtra automaticamente os dados expirados para que os dados expirados não sejamretornados nos resultados da consulta ou disponíveis para uso em instruções DML (Data ManipulationLanguage, linguagem de manipulação de dados). Normalmente, o Amazon Keyspaces exclui dadosexpirados do armazenamento dentro de 10 dias após a data de expiração. Em casos raros, o AmazonKeyspaces talvez não consiga excluir dados dentro de 10 dias se houver atividade sustentada na partiçãode armazenamento subjacente para proteger a disponibilidade. Nesses casos, o Amazon Keyspacescontinua tentando excluir os dados expirados quando o tráfego na partição diminuir. Depois que os dadossão excluídos permanentemente do armazenamento, você deixa de incorrer em taxas de armazenamento.Para obter mais informações, consulte the section called “Como funciona” (p. 171).

Você pode definir, modificar ou desativar as configurações TTL padrão para tabelas novas e existentesusando o console ou Cassandra Query Language (CQL). Em tabelas com TTL padrão configurado, vocêpode usar Cassandra Query Language (CQL) para substituir as configurações TTL padrão e aplicarvalores TTL personalizados a linhas e colunas. Para obter mais informações, consulte the section called“Como usar o tempo de vida” (p. 173).

O preço TTL é baseado no tamanho das linhas que estão sendo excluídas ou atualizadas usando Timeto Live. As operações TTL são medidas em unidades deTTL deletes. Uma exclusão TTL é consumidapor KB de dados por linha que é excluída ou atualizada. Por exemplo, para atualizar uma linha quearmazena 2,5 KB de dados e excluir uma ou mais colunas dentro da linha ao mesmo tempo, é necessáriotrês exclusões TTL. Ou, para excluir uma linha inteira que contém 3,5 KB de dados, é necessário quatroexclusões TTL. Uma exclusão TTL é consumida por KB de dados excluídos por linha. Para obter maisinformações sobre definição de preço, consulteDefinição de preço do Amazon Keyspaces (para ApacheCassandra).

Tópicos• Como funcionam: Time to Live (TTL — Tempo de vida) do Amazon Keyspaces (p. 171)• Como usar o tempo de vida (TTL) (p. 173)

Como funcionam: Time to Live (TTL — Tempo devida) do Amazon Keyspaces

O Amazon Keyspaces Time to Live (TTL) é totalmente gerenciado. Você não precisa gerenciarconfigurações de sistema de baixo nível, como estratégias de compactação. Os dados expiram no

171

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Valor TTL padrão

momento em que você especificar e o Amazon Keyspaces remove dados expirados automaticamente(normalmente dentro de 10 dias) sem afetar o desempenho ou a disponibilidade do aplicativo.

Os dados expirados são marcados para exclusão e não estão disponíveis para instruções da linguage demanipulação de dados (DML). À medida que você continua a executar leituras e gravações em linhas quecontêm dados expirados, os dados expirados continuam a contar em unidades de capacidade de leitura(RCUs) e unidades de capacidade de gravação (WCUs) até que sejam excluídos do armazenamento.

Tópicos• Definindo o valor TTL padrão para uma tabela (p. 172)• Definindo valores TTL personalizados para linhas e colunas (p. 172)• Habilitando o TTL em tabelas (p. 173)• Amazon Keyspaces Time to Live e integração comAWSserviços (p. 173)

Definindo o valor TTL padrão para uma tabelaNo Amazon Keyspaces, você pode definir um valor TTL padrão para todas as linhas em uma tabelaquando a tabela for criada. Você também pode editar uma tabela existente para definir ou alterar o valorTTL padrão para novas linhas inseridas na tabela. Alterar o valor TTL padrão de uma tabela não modifica ovalor TTL de nenhum dado existente na tabela. O valor TTL padrão para uma tabela é zero, o que significaque os dados não expiram automaticamente. Se o valor TTL padrão para uma tabela for maior que zero,um timestamp de expiração será adicionado a cada linha.

O Amazon Keyspaces calcula um novo carimbo de data/hora TTL sempre que os dados são atualizados.Os valores TTL são definidos em segundos e o valor máximo configurável é 630.720.000 segundos, o queequivale a 20 anos. Para obter mais informações sobre como definir, modificar e desativar o valor TTLpadrão para tabelas usando oAWS Management Consoleou CQL, consultethe section called “Como usar otempo de vida” (p. 173).

Definindo valores TTL personalizados para linhas ecolunas

Note

Antes de definir valores TTL personalizados para linhas e colunas, o TTL deve ser habilitado natabela primeiro. Para obter mais informações, consulte the section called “Como habilitar o tempode vida (TTL) em tabelas existentes usando propriedades personalizadas” (p. 176).

Para substituir o valor TTL padrão de uma tabela ou definir datas de expiração para linhas individuais, vocêpode usar as seguintes instruções de linguagem de manipulação de dados (DML) CQL:

• INSERT— Use para inserir uma nova linha de dados com um conjunto de valores TTL.• UPDATE— Use para modificar uma linha de dados existente com um novo valor TTL.

Definir valores TTL para linhas tem precedência sobre a configuração TTL padrão para a tabela.

Para ver a sintaxe e os exemplos do CQL, consultethe section called “Para usarINSERTPara editarconfigurações de tempo de vida (TTL) personalizadas usando o CQL” (p. 176).

Para substituir ou definir valores TTL para colunas individuais, você pode atualizar a configuração TTLpara um subconjunto de colunas dentro de linhas existentes usando a seguinte instrução CQL DML:

• UPDATE— Use para atualizar uma coluna de dados.

172

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Habilitação do TTL

Definir valores TTL para colunas tem precedência sobre a configuração TTL padrão para a tabelae qualquer configuração TTL personalizada para a linha. Para ver a sintaxe e os exemplos do CQL,consultethe section called “Para usarUPDATEPara editar configurações de tempo de vida (TTL)personalizadas usando o CQL” (p. 176).

Habilitando o TTL em tabelasO TTL é ativado automaticamente para tabelas quando você especifica umdefault_time_to_livevalormaior que 0 em qualquer umCREATE TABLEouALTER TABLEInstruções . Se você não especificarumdefault_time_to_livepara a tabela, mas você deseja especificar valores TTL personalizados paralinhas ou colunas usandoINSERTouUPDATEoperações, você deve primeiro habilitar o TTL para a tabela.Você pode habilitar o TTL para uma tabela usando ottlpropriedade personalizada.

Quando você habilita o TTL em uma tabela, o Amazon Keyspaces começa a armazenar metadadosrelacionados a TTL adicionais para cada linha. Além disso, o TTL usa carimbos de data e hora deexpiração para rastrear quando linhas ou colunas expiram. Os carimbos de data e hora são armazenadoscomo metadados de linha e contribuem para o custo de armazenamento da linha.

A ativação do TTL também exige que o Amazon Keyspaces leia uma linha antes de executar operaçõesde gravação nessa linha para garantir a precisão dos dados. Por exemplo, para escrever uma linha de 3KB requer 1 RCU/RRU além de 3 WCU/WRU. Depois que o recurso TTL estiver ativado, você não poderádesabilitá-lo em uma tabela. Configurando a tabeladefault_time_to_livepara 0 desativa os temposde expiração padrão para novos dados, mas ele não desativa o recurso TTL nem reverte a tabela para osmetadados de armazenamento ou comportamento de gravação originais do Amazon Keyspaces.

Amazon Keyspaces Time to Live e integraçãocomAWSserviçosA seguinte métrica TTL está disponível no Amazon CloudWatch para permitir o monitoramento contínuo.

• TTLDeletes— As unidades consumidas para excluir ou atualizar dados seguidos usando Time to Live(TTL).

Para obter mais informações sobre como monitorar as métricas do CloudWatch, consultethe section called“Monitoramento com CloudWatch” (p. 226).

Como usar o tempo de vida (TTL)É possível usar o console do Amazon Keyspaces (for Apache Cassandra) ou o CQL para habilitar,atualizar e desabilitar as configurações de tempo de vida (vida útil).

Tópicos• Para criar uma nova tabela com as configurações de tempo de vida (TTL) padrão ativadas

(console) (p. 174)• Para atualizar as configurações de tempo de vida (TTL) padrão em tabelas existentes

(console) (p. 174)• Para desabilitar as configurações de tempo de vida (TTL) padrão em tabelas existentes

(console) (p. 175)• Para criar uma nova tabela com configurações de tempo de vida (TTL) padrão habilitadas usando o

CQL (p. 175)

173

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Para criar uma nova tabela com as configuraçõesde tempo de vida (TTL) padrão ativadas (console)

• Para usarALTER TABLEPara editar as configurações de tempo de vida (TTL) padrão usando oCQL (p. 175)

• Como habilitar o tempo de vida (TTL) em novas tabelas usando propriedadespersonalizadas (p. 176)

• Como habilitar o tempo de vida (TTL) em tabelas existentes usando propriedadespersonalizadas (p. 176)

• Para usarINSERTPara editar configurações de tempo de vida (TTL) personalizadas usando oCQL (p. 176)

• Para usarUPDATEPara editar configurações de tempo de vida (TTL) personalizadas usando oCQL (p. 176)

Para criar uma nova tabela com as configurações detempo de vida (TTL) padrão ativadas (console)Siga estas etapas para criar uma nova tabela com as configurações Time to Live ativadas usando oconsole do Amazon Keyspaces.

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas) e Create table (Criar tabela).3. NoCriar tabelana página doDetalhes da tabelaseção, selecione um espaço de chave e forneça um

nome para a nova tabela.4. NoEsquema, crie o esquema para sua tabela.5. NoConfigurações da tabelaseção, escolhaPersonalize as configurações.6. Continue aExpiração do.

Nesta etapa, você seleciona as configurações de TTL padrão para a tabela.

Para oPeríodo TTL padrão, insira o tempo de expiração e escolha a unidade de tempo inserida, porexemplo, segundos, dias ou anos. O Amazon Keyspaces armazenará o valor em segundos.

7. Escolha Create table. Sua tabela é criada com o valor TTL padrão especificado.

Note

Você pode substituir a configuração TTL padrão da tabela para linhas ou colunas específicasusando a linguagem de manipulação de dados (DML) no editor CQL.

Para atualizar as configurações de tempo de vida(TTL) padrão em tabelas existentes (console)Siga estas etapas para atualizar as configurações Time to Live para tabelas existentes usando o consoledo Amazon Keyspaces.

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. Escolha a tabela que deseja atualizar e selecioneEditar TTL.3. Para oPeríodo TTL padrão, insira o tempo de expiração e escolha a unidade de tempo inserida, por

exemplo, segundos, dias ou anos. O Amazon Keyspaces armazenará o valor em segundos. Isso nãoaltera o valor TTL das linhas existentes.

174

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Para desabilitar as configurações de tempo devida (TTL) padrão em tabelas existentes (console)

4. Quando as configurações TTL estiverem definidas, escolhaSalve as alterações.

Para desabilitar as configurações de tempo de vida(TTL) padrão em tabelas existentes (console)Siga estas etapas para desativar as configurações Time to Live para tabelas existentes usando o AmazonKeyspacesAWS Management Console.

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. Escolha a tabela que deseja atualizar e selecioneEditar TTL.3. SelectPeríodo TTL padrãoe defina o valor como zero. Isso desativa o TTL para a tabela por padrão

para dados futuros. Ele não altera o valor TTL para linhas existentes.4. Quando as configurações TTL estiverem definidas, escolhaSalve as alterações.

Para criar uma nova tabela com configurações detempo de vida (TTL) padrão habilitadas usando o CQLHabilite o TTL quando você estiver criando uma nova tabela com o valor TTL padrão definido como3.024.000 segundos, o que representa 35 dias.

CREATE TABLE my_table ( userid uuid, time timeuuid, subject text, body text, user inet, PRIMARY KEY (userid, time) ) WITH default_time_to_live = 3024000;

Para confirmar as configurações de TTL para a nova tabela, use ocqlsh describeInstrução,conforme mostrado no exemplo a seguir. A saída mostra a configuração TTL padrão para a tabelacomodefault_time_to_live.

describe my_table;

Para usarALTER TABLEPara editar as configuraçõesde tempo de vida (TTL) padrão usando o CQLAtualize as configurações TTL da tabela existente para 2.592.000 segundos, o que representa 30 dias.

ALTER TABLE my_table WITH default_time_to_live = 2592000;

Para confirmar as configurações TTL para a tabela atualizada, use ocqlsh describeInstrução,conforme mostrado no exemplo a seguir. A saída mostra a configuração TTL padrão para a tabelacomodefault_time_to_live.

describe my_table;

175

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como habilitar o tempo de vida (TTL) em novastabelas usando propriedades personalizadas

Como habilitar o tempo de vida (TTL) em novastabelas usando propriedades personalizadasPara habilitar as configurações personalizadas Time to Live que podem ser aplicadas a linhas e colunassem habilitar as configurações padrão TTL para toda a tabela, você pode usar a seguinte instrução CQL.

CREATE TABLE my_keyspace.my_table (id int primary key) WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

Depoisttlestá ativado, você não pode desabilitá-lo para a tabela.

Como habilitar o tempo de vida (TTL) em tabelasexistentes usando propriedades personalizadasPara habilitar as configurações personalizadas Time to Live que podem ser aplicadas a linhas e colunassem habilitar as configurações padrão TTL para toda a tabela, você pode usar a seguinte instrução CQL.

ALTER TABLE my_table WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

Depoisttlestá ativado, você não pode desabilitá-lo para a tabela.

Para usarINSERTPara editar configurações de tempode vida (TTL) personalizadas usando o CQLA instrução CQL a seguir insere uma linha de dados na tabela e altera a configuração TTL padrão para259.200 segundos (o que equivale a 3 dias).

INSERT INTO my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;

Para confirmar as configurações de TTL para a linha inserida, use a seguinte instrução.

SELECT TTL (subject) from my_table;

Para usarUPDATEPara editar configurações de tempode vida (TTL) personalizadas usando o CQLPara alterar as configurações de TTL da coluna 'assunto' inserida anteriormente de 259.200 segundos (3dias) para 86.400 segundos (um dia), use a seguinte instrução.

UPDATE my_table USING TTL 86400 set subject = 'Updated Message' WHERE userid = B79CB3BA-745E-5D9A-8903-4A02327A7E09 and time = 96a29100-5e25-11ec-90d7-b5d91eceda0a;

Você pode executar uma consulta de seleção simples para ver o registro atualizado antes do tempo deexpiração.

SELECT * from my_table;

176

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Para usarUPDATEPara editar configurações detempo de vida (TTL) personalizadas usando o CQL

A consulta mostra a saída a seguir.

userid | time | body | subject | user--------------------------------------+--------------------------------------+-------+-----------------+-----------------b79cb3ba-745e-5d9a-8903-4a02327a7e09 | 96a29100-5e25-11ec-90d7-b5d91eceda0a | Hello | Updated Message | 205.212.123.12350554d6e-29bb-11e5-b345-feff819cdc9f | cf03fb21-59b5-11ec-b371-dff626ab9620 | Hello | Message | 205.212.123.123

Para confirmar que a expiração foi bem-sucedida, execute a mesma consulta novamente após o tempo deexpiração configurado.

SELECT * from my_table;

A consulta mostra a seguinte saída depois que a coluna “assunto” expirou.

userid | time | body | subject | user--------------------------------------+--------------------------------------+-------+---------+-----------------b79cb3ba-745e-5d9a-8903-4a02327a7e09 | 96a29100-5e25-11ec-90d7-b5d91eceda0a | Hello | null | 205.212.123.12350554d6e-29bb-11e5-b345-feff819cdc9f | cf03fb21-59b5-11ec-b371-dff626ab9620 | Hello | Message | 205.212.123.123

177

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Amazon Keyspaces eAWS CloudFormationmodelos

Criando recursos do AmazonKeyspaces comAWS CloudFormation

O Amazon Keyspaces (para Apache Cassandra) é integrado aoAWS CloudFormation, um serviço queajuda você a modelar e configurar oAWSPara que você possa passar menos tempo criando e gerenciandoseus recursos e sua infraestrutura. Você cria um modelo que descreve todos osAWSrecursos que vocêdeseja (como espaços de chave e tabelas), eAWS CloudFormationO se encarrega de provisionar econfigurar esses recursos para você.

Quando você usaAWS CloudFormation, você poderá reutilizar seu modelo para configurar os recursos doAmazon Keyspaces de forma repetida e consistente. Basta descrever seus recursos uma vez e, depois,provisionar os mesmos recursos repetidamente em váriosContas da AWSe regiões.

Amazon Keyspaces eAWS CloudFormationmodelosPara provisionar e configurar recursos para o Amazon Keyspaces, você deve entenderAWSCloudFormationmodelos. Os modelos são arquivos de texto formatados em JSON ou YAML. Essesmodelos descrevem os recursos que você deseja provisionar nas suas pilhas do AWS CloudFormation.Se você não estiver familiarizado com JSON ou YAML, poderá usar o AWS CloudFormation Designer paraajudá-lo a começar a usar os modelos do AWS CloudFormation. Para obter mais informações, consulteOque é oAWS CloudFormationdesigner?noAWS CloudFormationGuia do usuário do.

O Amazon Keyspaces oferece suporte à criação de espaços de chave e tabelas noAWS CloudFormation.Para as tabelas que você cria usandoAWS CloudFormationmodelos, você pode especificar o esquema,o modo de leitura/gravação e as configurações de taxa de transferência provisionada. Para obtermais informações, incluindo exemplos de modelos JSON e YAML para espaços de chave e tabelas,consulteReferência de tipo de recurso CassandranoAWS CloudFormationGuia do usuário do.

Saiba mais sobre o AWS CloudFormationPara saber mais sobre o AWS CloudFormation, consulte os seguintes recursos:

• AWS CloudFormation• Manual do usuário do AWS CloudFormation• AWS CloudFormationGuia do usuário do interface de linha de comando

178

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Restrições de marcação

Adicionando tags e rótulos aosrecursos do Amazon Keyspaces

Você pode rotular recursos do Amazon Keyspaces (for Apache Cassandra) usando otags. As tagspermitem categorizar recursos de diferentes maneiras — por exemplo, por finalidade, proprietário,ambiente ou outros critérios. As tags podem ajudar a fazer o seguinte:

• Identificar rapidamente um recurso com base nas tags que você atribuiu a ele.• Veja as faturas da AWS discriminadas por tags.• Controlar o acesso a recursos do Amazon Keyspaces com base em tags. Para ver exemplos de

política do IAM usando tags, consultethe section called “Autorização baseada em tags do AmazonKeyspaces” (p. 208).

A marcação é compatível com oAWSServiços como o Amazon Elastic Compute Cloud (Amazon EC2),o Amazon Simple Storage Service (Amazon S3), o Amazon Keyspaces e muito mais. Uma marcaçãoeficiente é capaz de fornecer insights de custos, permitindo criar relatórios entre serviços que possuemuma tag específica.

Para começar a usar tags, faça o seguinte:

1. Compreender Restrições de marcação para o Amazon Keyspaces (p. 179).2. Criar tags usando Operações de marcação para o Amazon Keyspaces (p. 180).3. Use Relatórios de alocação de custos para o Amazon Keyspaces (p. 183) para controlar seus custos

da AWS por tag ativa.

Por fim, é recomendável seguir estratégias de marcação ideais. Para obter mais informações,consulteAWSEstratégias de etiquetagem.

Restrições de marcação para o Amazon KeyspacesCada tag consiste em uma chave e um valor, ambos definidos por você. As seguintes restrições sãoaplicáveis:

• Cada keyspace ou tabela do Amazon Keyspaces pode ter apenas uma tag com a mesma chave. Sevocê tentar adicionar uma tag existente (mesma chave), o valor da tag existente será atualizado para onovo valor.

• As tags aplicadas a um espaço de chave não se aplicam automaticamente a tabelas dentro desseespaço de chave. Para aplicar a mesma tag a um espaço de chave e a todas as tabelas, cada recursodeve ser marcado individualmente.

• Um valor atua como um descritor dentro de uma categoria de tag (chave). No Amazon Keyspaces, ovalor não pode estar vazio nem ser nulo.

• As chaves e os valores de tags diferenciam maiúsculas de minúsculas.• O comprimento máximo da chave é 128 caracteres Unicode.• O comprimento máximo do valor é 256 caracteres Unicode.

179

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Operações de marcação

• Os caracteres permitidos são letras, espaço em branco e números, além dos seguintes caracteresespeciais: + - = . _ : /

• O número máximo de tags por recurso é 50.• AWSOs nomes e valores de tags atribuídos pelaaws:prefixo, que não pode ser atribuído por

você.AWSNomes de tags atribuídos pela AWS não são considerados no limite de 50. Nomes de tagsatribuídos pelo usuário têm o prefixo user: no relatório de alocação de custos.

• Não é possível colocar uma data retroativa na aplicação de uma tag.

Operações de marcação para o AmazonKeyspaces

Você pode adicionar, listar, editar ou excluir tags de Keyspaces e tabelas usando o console do AmazonKeyspaces (para Apache Cassandra), oAWSCLI ou Cassandra Query Language (CQL). Em seguida, vocêpode ativar essas tags definidas pelo usuário para que elas apareçam no console do AWS Billing and CostManagement para o controle da alocação de custos. Para obter mais informações, consulte Relatórios dealocação de custos para o Amazon Keyspaces (p. 183).

Para edição em massa, também é possível usar o Tag Editor no console do. Para obter mais informações,consulte Como trabalhar com o Tag Editor no Guia do usuário do AWS Resource Groups.

Tópicos• Adição de tags a Keyspaces e tabelas novos ou existentes usando o console do (p. 180)• Adição de tags a Keyspaces e tabelas novas ou existentes usando aAWSCLI (p. 181)• Adição de tags a espaços de chaves e tabelas novos ou existentes usando o CQL (p. 182)

Adição de tags a Keyspaces e tabelas novos ouexistentes usando o console doVocê pode usar o console do Amazon Keyspaces para adicionar tags a novos Keyspaces e tabelas aocriá-las. Você também pode adicionar, editar ou excluir tags de tabelas existentes.

Para marcar espaços de chave ao criá-los (console)

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneKeyspacese, depois, selecioneCrie um espaço de chaves.3. NoCrie um espaço de chaves, forneça um nome para o espaço de chaves. Insira uma chave e um

valor para a tag e, em seguida, selecioneAdicionar nova tag.4. SelecioneCrie um espaço de chaves.

Para marcar tabelas ao criá-las (console)

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas) e Create table (Criar tabela).3. NoCriar tabelana página doDetalhes da tabela, selecione um espaço de chave e forneça um nome

para a tabela.4. NoEsquema, crie o esquema para sua tabela.

180

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Adição de tags a Keyspaces e tabelasnovas ou existentes usando aAWSCLI

5. NoConfigurações da tabela, selecionePersonalizar configurações.6. Continue para oEtiquetas de mesa —opcionaisseção, e escolhaAdicionar nova tagpara criar novas

tags.7. Escolha Create table.

Para marcar recursos existentes (console)

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecioneKeyspacesouTabelas.3. Escolha um espaço de chave ou uma tabela na lista. Em seguida, escolhaGerenciar tagsPara

adicionar, editar ou excluir as tags.

Para obter informações sobre a estrutura da tag, consulte Restrições de marcação para o AmazonKeyspaces (p. 179).

Adição de tags a Keyspaces e tabelas novas ouexistentes usando aAWSCLIOs exemplos nesta seção demonstram como usar oAWSCLI para especificar tags quando você criaespaços de chave e tabelas, como adicionar ou remover tags de recursos existentes e como listar tags.

O exemplo a seguir mostra como criar uma nova tabela com tags. O comando cria uma tabelaMyTableemum espaço de chave já existenteMyKeySpace. Observe que o comando foi dividido em linhas diferentespara ajudar na legibilidade.

aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --tags 'key=key1,value=val1' 'key=key2,value=val2'

O exemplo a seguir mostra como adicionar novas tags a uma tabela existente.

aws keyspaces tag-resource --resource-arn 'arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable' --tags 'key=key3,value=val3' 'key=key4,value=val4'

O próximo exemplo mostra como listar as tags do recurso especificado.

aws keyspaces list-tags-for-resource --resource-arn 'arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable'

A saída do último comando parece com o exemplo a seguir.

{ "tags": [ { "key": "key1", "value": "val1" }, { "key": "key2", "value": "val2" },

181

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Adição de tags a espaços de chaves etabelas novos ou existentes usando o CQL

{ "key": "key3", "value": "val3" }, { "key": "key4", "value": "val4" } ]}

Adição de tags a espaços de chaves e tabelas novosou existentes usando o CQLOs exemplos a seguir mostram como usar o CQL para especificar tags ao criar Keyspaces e tabelas, comomarcar recursos existentes e como ler tags.

O exemplo da a seguir cria um espaço de chaves com tags.

CREATE KEYSPACE mykeyspace WITH TAGS = {'key1':'val1', 'key2':'val2'} ;

O exemplo da a seguir cria uma nova tabela com tags.

CREATE TABLE mytable(...) WITH TAGS = {'key1':'val1', 'key2':'val2'};

Para marcar recursos em uma instrução com outros comandos.

CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class': 'Simple Strategy'} AND TAGS = {'key1':'val1', 'key2':'val2'};

O exemplo a seguir mostra como adicionar ou remover tags em Keyspaces e tabelas existentes.

ALTER KEYSPACE mykeyspace ADD TAGS {'key1':'val1', 'key2':'val2'};

ALTER TABLE mytable DROP TAGS {'key1':'val1', 'key2':'val2'};

Para ler as tags anexadas a um recurso, use a seguinte instrução CQL.

SELECT * FROM system_schema_mcs.tags WHERE valid_where_clause;

OWHEREA cláusula é obrigatória e deve ser um dos seguintes formatos:

• keyspace_name = 'mykeyspace' AND resource_type = 'keyspace'

• keyspace_name = 'mykeyspace' AND resource_name = 'mytable'

• resource_id = arn

Exemplos:

A consulta a seguir mostra se um espaço de chave tem tags.

182

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Relatórios de alocação de custos para o Amazon Keyspaces

SELECT * FROM system_schema_mcs.tags WHERE keyspace_name = 'mykeyspace' AND resource_type = 'keyspace';

A saída da consulta é semelhante à saída a seguir.

resource_id | keyspace_name | resource_name | resource_type | tags-----------------------------------------------------------------+---------------+---------------+---------------+------arn:aws:cassandra:us-east-1:123456789:/keyspace/mykeyspace/ | mykeyspace | mykeyspace | keyspace | {'key1': 'val1', 'key2': 'val2'}

A consulta a seguir mostra as tags de uma tabela.

SELECT * FROM system_schema_mcs.tags WHERE keyspace_name = 'mykeyspace' AND resource_name = 'mytable';

A saída dessa consulta é semelhante à saída a seguir.

resource_id | keyspace_name | resource_name | resource_type | tags----------------------------------------------------------------------------+---------------+---------------+---------------+------arn:aws:cassandra:us-east-1:123456789:/keyspace/mykeyspace/table/mytable | mykeyspace | mytable | table | {'key1': 'val1', 'key2': 'val2'}

Relatórios de alocação de custos para o AmazonKeyspaces

A AWS usa tags para organizar os custos de recursos no seu relatório de alocação de custos. A AWSfornece dois tipos de tags alocação de custos:

• Uma tag gerada pela AWS. A AWS define, cria e aplica essa tag para você.• Tags definidas pelo usuário. Você define, cria e aplica essas tags.

É necessário ativar os dois tipos de tags separadamente para que elas possam ser exibidas no CostExplorer ou em um relatório de alocação de custos.

Para ativar tags geradas pela AWS:

1. Faça login no AWS Management Console e abra o console do Billing and Cost Management em https://console.aws.amazon.com/billing/home#/.

2. No painel de navegação, escolha Cost Allocation Tags.3. Em AWSGenerated Cost Allocation Tags (Etiquetas de alocação de custos geradas), escolha Activate

(Ativar).

183

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Relatórios de alocação de custos para o Amazon Keyspaces

Para ativar tags definidas pelo usuário:

1. Faça login no AWS Management Console e abra o console do Billing and Cost Management em https://console.aws.amazon.com/billing/home#/.

2. No painel de navegação, escolha Cost Allocation Tags.3. Em Tags de alocação de custos definidos pelo usuário, escolha Ativar.

Após você criar e ativar tags, a AWS gera um relatório de alocação de custos com a utilização e os custosagrupados de acordo com as tags ativas. O relatório de alocação de custos inclui todos os seus custos daAWS para cada período de faturamento. O relatório inclui recursos com e sem tags, para que você possaorganizar claramente as cobranças de cada um deles.

Note

Atualmente, os dados transferidos do Amazon Keyspaces não são CATEGizados por tags emrelatórios de alocação de custos.

Para obter mais informações, consulteUsar tags de alocação de custos.

184

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Proteção de dados

Segurança no Amazon Keyspaces(para Apache Cassandra)

A segurança da nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se contará comum datacenter e uma arquitetura de rede criados para atender aos requisitos das organizações com asmaiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O modelo de responsabilidadecompartilhada descreve isso como segurança da nuvem e segurança na nuvem:

• Segurança da nuvem: a AWS é responsável pela proteção da infraestrutura que executa produtos daAWS na Nuvem AWS. A AWS também fornece serviços que podem ser usados com segurança. Aeficácia da nossa segurança é regularmente testada e verificada por auditores de terceiros como partedos Programas de conformidade da AWS. Para saber mais sobre os programas de conformidade que seaplicam ao Amazon Keyspaces, consulteAWSServiços em escopo por programa de conformidade.

• Segurança da nuvem: sua responsabilidade é determinada pelo serviço da AWS que você usa. Vocêtambém é responsável por outros fatores, incluindo a confidencialidade de seus dados, os requisitos dasua organização e as leis e regulamentos aplicáveis.

Esta documentação ajudará você a entender como aplicar o modelo de responsabilidade compartilhadaao usar o Amazon Keyspaces. Os tópicos a seguir mostram como configurar o Amazon Keyspacespara atender aos seus objetivos de segurança e de conformidade. Você também aprenderá comousar outrosAWSServiços da que podem ajudar você a monitorar e proteger seus recursos do AmazonKeyspaces.

Tópicos• Proteção de dados no Amazon Keyspaces (p. 185)• AWS Identity and Access ManagementPara Amazon Keyspaces (p. 201)• Log e monitoramento no Amazon Keyspaces (for Apache Cassandra) (p. 224)• Validação da conformidade para o Amazon Keyspaces (para Apache Cassandra) (p. 244)• Resiliência e recuperação de desastres no Amazon Keyspaces (p. 245)• Segurança da infraestrutura no Amazon Keyspaces (p. 245)• Análise de configuração e vulnerabilidade para o Amazon Keyspaces (p. 250)• Práticas recomendadas de segurança para o Amazon Keyspaces (p. 250)

Proteção de dados no Amazon KeyspacesOAWS Modelo de responsabilidade compartilhadaAplica-se à proteção de dados no Amazon Keyspaces(for Apache Cassandra). Conforme descrito nesse modelo, a AWS é responsável por proteger ainfraestrutura global que executa toda a Nuvem AWS. Você é responsável por manter o controle sobreseu conteúdo hospedado nessa infraestrutura. Esse conteúdo inclui as tarefas de configuração egerenciamento de segurança dos Serviços da AWS que você usa. Para obter mais informações sobrea privacidade de dados, consulte as Perguntas frequentes sobre privacidade de dados. Para obtermais informações sobre a proteção de dados na Europa, consulte a postagem do blog AWS SharedResponsibility Model and GDPR no Blog de segurança da AWS.

185

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

Para fins de proteção de dados, recomendamos que você proteja as credenciais da conta da Conta daAWS e configure as contas de usuário individuais com o AWS Identity and Access Management (IAM).Dessa maneira, cada usuário receberá apenas as permissões necessárias para cumprir suas obrigaçõesde trabalho. Recomendamos também que você proteja seus dados das seguintes formas:

• Use uma autenticação multifator (MFA) com cada conta.• Use SSL/TLS para se comunicar com os recursos da AWS. Recomendamos TLS 1.2 ou posterior.• Configure o registro em log das atividades da API e do usuário com o AWS CloudTrail.• Use as soluções de criptografia da AWS, juntamente com todos os controles de segurança padrão nos

serviços da AWS.• Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e

proteger dados pessoais armazenados no Amazon S3.• Se você precisar de módulos criptográficos validados pelo FIPS 140-2 ao acessar a AWS por meio de

uma interface de linha de comando ou uma API, use um endpoint do FIPS. Para obter mais informaçõessobre endpoints do FIPS, consulte Federal Information Processing Standard (FIPS) 140-2.

É altamente recomendável que você nunca coloque informações de identificação confidenciais, comoendereços de e-mail dos seus clientes, em marcações ou campos de formato livre, como um campo Name(Nome). Isso inclui quando você trabalha com o Amazon Keyspaces ou outrosAWSserviços usando oconsole, a API,AWS CLI, ouAWSSDKs. Quaisquer dados inseridos em marcações ou campos de formatolivre usados para nomes podem ser usados para logs de cobrança ou diagnóstico. Se você fornecerum URL para um servidor externo, recomendemos fortemente que não sejam incluídas informações decredenciais no URL para validar a solicitação a esse servidor.

Tópicos• Criptografia em repouso no Amazon Keyspaces (p. 186)• Criptografia em trânsito no Amazon Keyspaces (p. 200)• Privacidade do tráfego entre redes no Amazon Keyspaces (p. 200)

Criptografia em repouso no Amazon KeyspacesAmazon Keyspaces (para Apache Cassandra)Criptografia em repousoFornece segurança aprimoradacriptografando todos os seus dados em repouso usando chaves de criptografia armazenadas noAWSKey Management Service(AWS KMS). Essa funcionalidade ajuda a reduzir a carga e complexidadeoperacionais necessárias para proteger dados confidenciais. Com a criptografia em repouso, você podecriar aplicativos confidenciais que atendem a requisitos rigorosos de conformidade e regulamentação paraproteção de dados.

A criptografia em repouso do Amazon Keyspaces criptografa os seus dados usando Advanced EncryptionStandard (AES-256) de 256 bits. Isso ajuda a proteger seus dados contra acesso não autorizado aoarmazenamento subjacente.

O Amazon Keyspaces criptografa e descriptografa os dados da tabela de forma transparente. OAmazon Keyspaces usa criptografia de envelope e uma hierarquia de chaves para proteger chaves decriptografia de dados. Ele se integra aoAWS KMSpara armazenar e gerenciar a chave de criptografiaraiz. Para obter mais informações sobre a hierarquia da chave de criptografia, consultethe section called“Como funciona” (p. 187). Para obter mais informações sobreAWS KMSconceitos como criptografiade envelope, consulteAWS KMSConceitos do serviço de gerenciamentonoAWS Key ManagementServiceGuia do desenvolvedor.

Ao criar uma nova tabela, você pode escolher uma das seguintes açõesAWS KMSchaves (chaves KMS):

• Chave pertencente à AWS— Este é o tipo de criptografia padrão. A chave pertence ao AmazonKeyspaces (sem custo adicional).

186

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

• Chave gerenciada pelo cliente — Essa chave é armazenada na sua conta e é criada, pertencida egerenciada por você. Você tem controle total sobre a chave gerenciada pelo cliente (AWS KMSAplicam-se cobranças aplicáveis).

É possível alternar entre oChave pertencente à AWSE a chave gerenciada pelo cliente a qualquermomento. É possível especificar uma chave gerenciada pelo cliente ao criar uma tabela ou alterar a chaveKMS de uma tabela existente usando o console ou programaticamente usando instruções CQL. Para sabercomo, consulte Criptografia em repouso: Como usar chaves gerenciadas pelo cliente para criptografartabelas no Amazon Keyspaces (p. 191).

Criptografia em repouso usando a opção padrão doChaves pertencentes à AWSO é oferecido sem custoadicional. No entanto,AWS KMSAplicam-se cobranças aplicáveis às chaves gerenciadas pelo cliente. Paraobter mais informações sobre a definição de preço, consulte Definição de preço do AWS KMS.

A criptografia do Amazon Keyspaces em repouso está disponível em todos osRegiões da AWS, incluindooAWSChina (Pequim) eAWSRegiões da China (Ningxia). Para obter mais informações, consulteCriptografia em repouso: Como funciona no Amazon Keyspaces (p. 187).

Tópicos• Criptografia em repouso: Como funciona no Amazon Keyspaces (p. 187)• Criptografia em repouso: Como usar chaves gerenciadas pelo cliente para criptografar tabelas no

Amazon Keyspaces (p. 191)

Criptografia em repouso: Como funciona no Amazon KeyspacesAmazon Keyspaces (para Apache Cassandra)Criptografia em repousoCriptografa seus dados usando oAdvanced Encryption Standard de 256 bits (AES-256). Isso ajuda a proteger seus dados contra acessonão autorizado ao armazenamento subjacente. Todos os dados do cliente nas tabelas do AmazonKeyspaces são criptografados em repouso por padrão, e a criptografia do lado do servidor é transparente,o que significa que as alterações nos aplicativos não são necessárias.

A criptografia em repouso integra-se com AWS Key Management Service (AWS KMS) para gerenciamentoda chave de criptografia usada para criptografar suas tabelas. Ao criar uma nova tabela ou atualizar umatabela existente, você pode escolher uma das seguintesAWS KMSchaveopções:

• Chave pertencente à AWS— Esse é o tipo de criptografia padrão. A chave pertence ao AmazonKeyspaces (sem custo adicional).

• Chave gerenciada pelo cliente — Essa chave é armazenada na sua conta e é criada, detéme gerenciada por você. Você tem total controle sobre a chave gerenciada pelo cliente (AWSKMSCobranças são aplicáveis).

AWS KMSchave (chave KMS)

A criptografia em repouso protege todos os dados do Amazon Keyspaces com umAWS KMSchave.Por padrão, o Amazon Keyspaces usa umChave pertencente à AWS, uma chave de criptografiamultilocatário que é criada e gerenciada em uma conta de serviço do Amazon Keyspaces.

No entanto, você pode criptografar suas tabelas do Amazon Keyspaces usando umChave gerenciadapelo clienteno seuConta da AWS. Você pode selecionar uma chave do KMS diferente para cadatabela em um espaço de chaves. A chave do KMS selecionada para uma tabela também é usada paracriptografar todos os metadados e backups restauráveis.

Você seleciona a chave do KMS para uma tabela ao criar ou atualizar essa tabela. É possível alterar achave do KMS de uma tabela a qualquer momento, seja no console do Amazon Keyspaces ou usandoaALTER TABLE (p. 260)instrução. O processo de comutação de chaves KMS é contínuo e nãorequer tempo de inatividade nem causa degradação do serviço.

187

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

Hierarquia de chaves

O Amazon Keyspaces usa uma hierarquia de chaves para criptografar dados. Nesta hierarquiade chaves, a chave KMS é a chave raiz. É usado para criptografar e descriptografar a chave decriptografia de tabela do Amazon Keyspaces. A chave de criptografia de tabela é usada paracriptografar as chaves de criptografia usadas internamente pelo Amazon Keyspaces para criptografare descriptografar dados ao executar operações de leitura e gravação.

Com a hierarquia de chaves de criptografia, você pode fazer alterações na chave KMS sem precisarcriptografar dados ou afetar aplicativos e operações de dados em andamento.

Chave de tabela

A chave de tabela do Amazon Keyspaces é usada como uma chave de criptografia de chaves. OAmazon Keyspaces usa a chave de tabela para proteger as chaves de criptografia de dados internasusadas para criptografar os dados armazenados em tabelas, arquivos de log e backups restauráveis.O Amazon Keyspaces gera uma chave de criptografia de dados exclusiva para cada estruturasubjacente em uma tabela. No entanto, várias linhas de tabela podem ser protegidas pela mesmachave de criptografia de dados.

Quando você define a chave KMS pela primeira vez como uma chave gerenciada pelo cliente,AWSKMSgera umchave de dados. OAWS KMSchave de dados refere-se à chave da tabela no AmazonKeyspaces.

Quando você acessa uma tabela criptografada, o Amazon Keyspaces envia uma solicitação paraoAWS KMSPara usar a chave do KMS para descriptografar a chave de tabela. Em seguida, usa achave de tabela de texto simples para descriptografar as chaves de criptografia de dados do AmazonKeyspaces e usa as chaves de criptografia de dados de texto simples para descriptografar os dadosda tabela.

O Amazon Keyspaces usa e armazena a chave de tabela e as chaves de criptografia de dados foradoAWS KMS. Ele protege todas as chaves com a criptografia Advanced Encryption Standard (AES)

188

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

e chaves de criptografia de 256 bits. Em seguida, armazena as chaves criptografadas com os dadoscriptografados para que estejam disponíveis para descriptografar os dados da tabela sob demanda.

Armazenamento em cache de chaves de tabela

Para evitar chamadasAWS KMSPara cada operação do Amazon Keyspaces, o Amazon Keyspacesarmazena chaves de tabela de texto simples para cada conexão na memória. Se o AmazonKeyspaces recebe uma solicitação para a chave de tabela armazenada em cache após cinco minutosde inatividade, ele envia uma nova solicitação aoAWS KMSPara descriptografar a chave de tabela.Essa chamada captura todas as alterações feitas nas políticas de acesso da chave do KMS noAWSKMSouAWS Identity and Access Management(IAM) desde a última solicitação para descriptografar achave de tabela.

Criptografia de envelope

Se você alterar a chave gerenciada pelo cliente da tabela, o Amazon Keyspaces gerará outra chavede tabela. Em seguida, usa a nova chave de tabela para criptografar novamente as chaves decriptografia de dados. Ele também usa a nova chave de tabela para criptografar chaves de tabelaanteriores que são usadas para proteger backups restauráveis. Esse processo é chamado decriptografia de envelope. Isso garante que você possa acessar backups restauráveis mesmo se vocêgirar a chave gerenciada pelo cliente. Para obter mais informações sobre a criptografia de envelope,consulteCriptografia de envelopenoAWS Key Management ServiceGuia do desenvolvedor.

Tópicos• AWSchaves de propriedade (p. 189)• Chaves gerenciadas pelo cliente (p. 189)• Notas de uso de criptografia em repouso (p. 190)

AWSchaves de propriedadeChaves pertencentes à AWSnão são armazenados em seuConta da AWS. Eles fazem parte de umacoleção de chaves KMS queAWSpossui e gerencia para uso em váriosContas da AWS.AWSserviçospodem usarChaves pertencentes à AWSPara proteger seus dados.

Você não pode visualizar, gerenciar ou usarChaves pertencentes à AWS, ou audite o uso deles. Noentanto, você não precisa fazer nenhum trabalho nem alterar nenhum programa para proteger as chavesque criptografam seus dados.

Não é cobrada taxa mensal nem taxa de uso pelo uso doChaves pertencentes à AWSE eles não sãocontabilizados com base noAWS KMSCotas para sua conta.

Chaves gerenciadas pelo clienteChaves gerenciadas pelo cliente são chaves em seuConta da AWSQue você cria, possui e gerencia. Vocêtem controle total sobre essas chaves do KMS.

Use uma chave gerenciada pelo cliente para obter os seguintes recursos:

• Você cria e gerencia a chave gerenciada pelo cliente, incluindo a configuração e a manutençãodoPolíticas de chaves,Políticas do IAM, esubsídiosPara controlar o acesso à chave gerenciada pelocliente. Você podeHabilitar e desativara chave gerenciada pelo cliente, habilitar e desativarAlternânciaautomática de chaves, eAgende a chave gerenciada pelo clientePara exclusão quando não estiver maisem uso. Você pode criar tags e aliases para as chaves gerenciadas pelo cliente que você gerencia.

• Você pode usar uma chave gerenciada pelo cliente com material de chave importado ou uma chavegerenciada pelo cliente em um armazenamento de chaves personalizado que você possui e gerencia.

• Você pode usarAWS CloudTraile AmazonCloudWatchLogs para rastrear as solicitações que o AmazonKeyspaces enviaAWS KMSEm seu nome. Para obter mais informações, consulte the section called“Etapa 6: Configurar o monitoramento comAWS CloudTrail” (p. 196).

189

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

Chaves gerenciadas pelo clienteincorrem em uma cobrançapara cada chamada de API eAWS KMSascotas se aplicam a essas chaves KMS. Para obter mais informações, consulteAWS KMSCotas de recursosou solicitações.

Quando você especifica uma chave gerenciada pelo cliente como a chave de criptografia raiz de umatabela, os backups restauráveis são criptografados com a mesma chave de criptografia especificada paraa tabela no momento da criação do backup. Se a chave KMS para a tabela for girada, o envelopamento dechaves garante que a chave KMS mais recente tenha acesso a todos os backups restauráveis.

O Amazon Keyspaces deve ter acesso à chave gerenciada pelo cliente para fornecer acesso aos dadosda tabela. Se o estado da chave de criptografia estiver definido como desativado ou estiver agendado paraexclusão, o Amazon Keyspaces não poderá criptografar ou descriptografar dados. Como resultado, vocênão consegue executar operações de leitura e gravação na tabela. Assim que o serviço detectar que achave de criptografia está inacessível, o Amazon Keyspaces envia uma notificação por e-mail para alertarvocê.

Você deve restaurar o acesso à chave de criptografia dentro de sete dias ou o Amazon Keyspaces excluisua tabela automaticamente. Como precaução, o Amazon Keyspaces cria um backup restaurável dosdados da tabela antes de excluir a tabela. O Amazon Keyspaces mantém o backup restaurável por 35dias. Após 35 dias, você não pode mais restaurar os dados da tabela. Você não é cobrado pelo backuprestaurável, mas padrãoAplicam-se cobranças de restauração.

É possível usar esse backup restaurável para restaurar seus dados para uma nova tabela. Para iniciar arestauração, a última chave gerenciada pelo cliente usada para a tabela deve estar habilitada e o AmazonKeyspaces deve ter acesso a ela.

Note

Quando você está criando uma tabela criptografada usando uma chave gerenciada pelo clienteinacessível ou agendada para exclusão antes que o processo de criação seja concluído, ocorreum erro. A operação de criação de tabela falha e você recebe uma notificação por e-mail.

Notas de uso de criptografia em repouso

Considere o seguinte ao usar criptografia em repouso no Amazon Keyspaces.

• A criptografia em repouso no lado do servidor está habilitada em todas as tabelas do AmazonKeyspaces e não pode ser desabilitada. A tabela inteira é criptografada em repouso, você não podeselecionar colunas ou linhas específicas para criptografia.

• Por padrão, o Amazon Keyspaces usa uma chave padrão de serviço único (Chave pertencente à AWS)para criptografar todas as suas tabelas. Se essa chave não existir, ela será criada para você. As chavespadrão de serviço não podem ser desabilitadas.

• A criptografia em repouso só criptografa dados enquanto eles estão estáticos (em repouso) em umamídia de armazenamento persistente. Se a segurança dos dados for motivo de preocupação para dadosem trânsito ou dados em uso, você deve tomar outras medidas:• Dados em trânsito: Todos os seus dados no Amazon Keyspaces são criptografados em trânsito. Por

padrão, as comunicações com o Amazon Keyspaces são protegidas usando a criptografia SecureSockets Layer (SSL) /Transport Layer Security (TLS).

• Dados em uso: Proteja seus dados antes de enviá-los ao Amazon Keyspaces usando criptografia nolado do cliente.

• Chaves gerenciadas pelo cliente: Os dados em repouso nas tabelas são sempre criptografadosusando as chaves gerenciadas pelo cliente. No entanto, as operações que executam atualizaçõesatômicas de várias linhas criptografam dados temporariamente usandoChaves pertencentes àAWSdurante o processamento. Isso inclui operações de exclusão de intervalo e operações queacessam simultaneamente dados estáticos e não estáticos.

• Uma única chave gerenciada pelo cliente pode ter até 50.000subsídios. Toda tabela do AmazonKeyspaces associada a uma chave gerenciada pelo cliente consome 2 concessões. Uma concessão

190

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

é liberada quando a tabela é excluída. A segunda concessão é usada para criar um instantâneoautomático da tabela para proteger contra perda de dados caso o Amazon Keyspaces tenha perdido oacesso à chave gerenciada pelo cliente sem querer. Esta concessão é liberada 42 dias após a exclusãoda tabela.

Criptografia em repouso: Como usar chaves gerenciadas pelocliente para criptografar tabelas no Amazon KeyspacesVocê pode usar o console do ou as instruções CQL para especificar aAWS KMS keypara novas tabelas eatualize as chaves de criptografia de tabelas existentes no Amazon Keyspaces. O tópico a seguir descrevecomo implementar chaves gerenciadas pelo cliente para tabelas novas e existentes.

Tópicos• Pré-requisitos: Para criar uma chave gerenciada pelo cliente usandoAWS KMSE conceda permissões

para o Amazon Keyspaces (p. 191)• Etapa 3: Especifique uma chave gerenciada pelo cliente para uma nova tabela (p. 193)• Etapa 4: Atualize a chave de criptografia de uma tabela existente (p. 194)• Etapa 5: Usar o contexto de criptografia do Amazon Keyspaces em logs (p. 195)• Etapa 6: Configurar o monitoramento comAWS CloudTrail (p. 196)

Pré-requisitos: Para criar uma chave gerenciada pelo cliente usandoAWS KMSEconceda permissões para o Amazon Keyspaces

Antes de poder proteger uma tabela do Amazon Keyspaces com umChave gerenciada pelocliente (p. 189), você deve primeiro criar a chave noAWS Key Management Service(AWS KMS) e, emseguida, autorize o Amazon Keyspaces a usar essa chave.

Etapa 1: Para criar uma chave gerenciada pelo cliente usandoAWS KMS

Para criar uma chave gerenciada pelo cliente a ser usada para proteger uma tabela do AmazonKeyspaces, você pode seguir as etapas emCriação de chaves de criptografia simétrica doUsando oconsole ou aAWSAPI.

Etapa 2: Autorizar o uso da chave gerenciada pelo cliente

Antes que você possa escolher umChave gerenciada pelo cliente (p. 189)Para proteger uma tabelado Amazon Keyspaces, as políticas nessa chave gerenciada pelo cliente devem conceder ao AmazonKeyspaces permissão para usá-la em seu nome. Você tem controle total sobre as políticas e concessõesna chave gerenciada pelo cliente. É possível fornecer essas permissões em uma política de chaves, emuma política do IAM ou em uma concessão.

O Amazon Keyspaces não precisa de autorização adicional para usar o padrãoChave pertencente àAWS (p. 189)para proteger as tabelas do Amazon Keyspaces em seuAWSconta.

Os tópicos a seguir mostram como configurar as permissões necessárias usando políticas do IAM econcessões que permitem que as tabelas do Amazon Keyspaces usem uma chave gerenciada pelocliente.

Tópicos• Política de chaves para chaves gerenciadas pelo cliente (p. 192)• Política de chaves de exemplo (p. 192)• Usar concessões para autorizar o Amazon Keyspaces (p. 193)

191

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

Política de chaves para chaves gerenciadas pelo cliente

Quando você seleciona umChave gerenciada pelo cliente (p. 189)Para proteger uma tabela do AmazonKeyspaces, o Amazon Keyspaces obtém permissão para usar a chave gerenciada pelo cliente em nomedo principal que faz a escolha. Essa entidade principal, um usuário ou uma função, deve ter as permissõesem uma chave gerenciada pelo cliente exigida pelo Amazon Keyspaces.

No mínimo, o Amazon Keyspaces exige as seguintes permissões em uma chave gerenciada pelo cliente:

• kms:Encrypt• kms:Decrypt• kms:ReEncrypt* (para kms:ReEncryptDe e kms:ReEncryptPara)• kms:GenerateDataChave* (parakms:GenerateDataKey (Chave)ekms:GenerateDataKeyWithoutTexto

não criptografado)• kms:DescribeKey• kms:CreateGrant

Política de chaves de exemplo

Por exemplo, o exemplo de política de chaves a seguir fornece somente as permissões necessárias. Apolítica tem os seguintes efeitos:

• Permite que o Amazon Keyspaces use a chave gerenciada pelo cliente em operações de criptografia ecrie concessões — mas somente quando está atuando em nome de entidades principais na conta quetem permissão para usar o Amazon Keyspaces. Se as entidades principais especificadas na instruçãoda política não tiverem permissão para usar o Amazon Keyspaces, a chamada falhará, mesmo se vierdo serviço Amazon Keyspaces.

• Okms:ViaServiceA chave de condição permite as permissões somente quando a solicitaçãovem do Amazon Keyspaces em nome das entidades principais listadas na instrução da política.Esses principais não podem chamar essas operações diretamente. Observe que o valor dekms:ViaService,cassandra.*.amazonaws.com, tem um asterisco (*) na posição da região. OAmazon Keyspaces exige a permissão para ser independente de qualquer particularRegião da AWS.

• Fornece aos administradores de chave gerenciados pelo cliente (usuários que podem assumir odb-teamFunção) acesso somente leitura à chave gerenciada pelo cliente e permissão para revogarconcessões, incluindo aconcede que o Amazon Keyspaces requer (p. 193)para proteger a mesa.

• Concede ao Amazon Keyspaces acesso somente leitura à chave gerenciada pelo cliente. Nesse caso, oAmazon Keyspaces pode chamar essas operações diretamente. Ele não precisa atuar em nome de umaentidade principal de conta.

Antes de usar um exemplo de política de chaves, substitua o exemplo de entidades principais porentidades principais reais da sua conta da Conta da AWS.

{ "Id": "key-policy-cassandra", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon Keyspaces for all principals in the account that are authorized to use Amazon Keyspaces", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*",

192

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

"kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "cassandra.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the customer managed key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ]}

Usar concessões para autorizar o Amazon Keyspaces

Além de políticas de chaves, o Amazon Keyspaces usa concessões para definir permissões em umachave gerenciada pelo cliente. Para visualizar as concessões em uma chave gerenciada pelo cliente emsua conta, use aListGrantsoperação. O Amazon Keyspaces não precisa de concessões ou permissõesadicionais para usar oChave pertencente à AWS (p. 189)Para proteger sua mesa.

O Amazon Keyspaces usa as permissões de concessão ao executar manutenção do sistema e tarefas deproteção de dados contínua em segundo plano. Usa também concessões para gerar chaves de tabela.

Cada concessão é específica a uma tabela. Se a conta incluir várias tabelas criptografadas na mesmachave gerenciada pelo cliente, haverá uma concessão de cada tipo para cada tabela. A concessão érestrita peloContexto de criptografia do Amazon Keyspaces, que inclui o nome da tabela e oConta daAWSID. A concessão inclui permissão paraaposentar a concessãoSe ele não for mais necessário.

Para criar as concessões, o Amazon Keyspaces deve ter permissão para chamarCreateGrantEm nomedo usuário que criou a tabela criptografada.

A política de chaves também pode permitir que a contaRevogar a concessãoNa chave gerenciada pelocliente. No entanto, se você revogar a concessão em uma tabela criptografada ativa, o Amazon Keyspacesnão poderá proteger e manter a tabela.

Etapa 3: Especifique uma chave gerenciada pelo cliente para uma nova tabelaSiga estas etapas para especificar a chave gerenciada pelo cliente em uma nova tabela usando o consoledo Amazon Keyspaces ou o CQL.

Crie uma tabela criptografada usando uma chave gerenciada pelo cliente (console)

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas) e Create table (Criar tabela).3. NoCriar tabelana página noDetalhes da tabelaSeção, selecione um espaço de chave e forneça um

nome para a nova tabela.

193

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

4. NoEsquema, crie o esquema para sua tabela.5. NoConfigurações da tabelaSeção, escolhaPersonalizar as configurações.6. Continue aConfigurações de criptografia.

Nesta etapa, você seleciona as configurações de criptografia para a tabela.

NoCriptografia em repousoseção emEscolha uma opçãoAWS KMS key, escolha a opçãoEscolha umachave do KMS diferente (avançada)e no campo de busca, escolha umaAWS KMS keyOu insira umNome de Recurso da Amazon (ARN).

Note

Se a chave selecionada não estiver acessível ou não tiver as permissões necessárias,consulteSolucionar problemas de acesso à chavenoAWS Key Management ServiceGuia dodesenvolvedor do .

7. Selecione Create (Criar) para criar a tabela criptografada.

Crie uma nova tabela usando uma chave gerenciada pelo cliente para criptografia em repouso(CQL)

Para criar uma nova tabela que usa uma chave gerenciada pelo cliente para criptografia em repouso, vocêpode usar oCREATE TABLEInstrução, conforme mostrado no exemplo a seguir. Certifique-se de substituiro ARN de chave por um ARN por uma chave válida com permissões concedidas ao Amazon Keyspaces.

CREATE TABLE my_keyspace.my_table(id bigint, name text, place text STATIC, PRIMARY KEY(id, name)) WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

Se você receber umInvalid Request Exception, você precisa confirmar se a chave gerenciada pelocliente é válida e o Amazon Keyspaces tem as permissões necessárias. Para confirmar se a chave foiconfigurada corretamente, consulteSolucionar problemas de acesso à chavenoAWS Key ManagementServiceGuia do desenvolvedor do .

Etapa 4: Atualize a chave de criptografia de uma tabela existente

Você também pode usar o console do Amazon Keyspaces ou o CQL para alterar as chaves de criptografiade uma tabela existente entre umaChave pertencente à AWSE uma chave do KMS gerenciada pelo clientea qualquer momento.

Atualize uma tabela existente com a nova chave gerenciada pelo cliente (console)

1. Faça login noAWS Management Consolee abra o console do Amazon Keyspaces emhttps://console.aws.amazon.com/keyspaces/home.

2. No painel de navegação, selecione Tables (Tabelas).3. Escolha a tabela que você deseja atualizar e selecione a tabelaConfigurações adicionaisGuia.4. NoCriptografia em repousoSeção, escolhaGerenciar criptografiapara editar as configurações de

criptografia da tabela.

UnderEscolha uma opçãoAWS KMS key, escolha a opçãoEscolha uma chave do KMS diferente(avançada)e no campo de busca, escolha umaAWS KMS keyOu insira um Nome de Recurso daAmazon (ARN).

194

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

Note

Se a chave selecionada não for válida, consulteSolucionar problemas de acesso àchavenoAWS Key Management ServiceGuia do desenvolvedor do .

Como alternativa, você pode escolher umChave pertencente à AWSPara uma tabela criptografadacom uma chave gerenciada pelo cliente.

5. SelecioneSalve as alteraçõesPara salvar as alterações na tabela.

Atualize a chave de criptografia usada para uma tabela existente

Para alterar a chave de criptografia de uma tabela existente, use oALTER TABLEPara especificar umachave gerenciada pelo cliente para criptografia em repouso. Certifique-se de substituir o ARN de chave porum ARN por uma chave válida com permissões concedidas ao Amazon Keyspaces.

ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

Se você receber umInvalid Request Exception, você precisa confirmar se a chave gerenciada pelocliente é válida e o Amazon Keyspaces tem as permissões necessárias. Para confirmar se a chave foiconfigurada corretamente, consulteSolucionar problemas de acesso à chavenoAWS Key ManagementServiceGuia do desenvolvedor do .

Para alterar a chave de criptografia de volta para a opção de criptografia padrão em repouso comChavespertencentes à AWS, você pode usar oALTER TABLEInstrução, conforme mostrado no exemplo a seguir.

ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = { 'encryption_specification':{ 'encryption_type' : 'AWS_OWNED_KMS_KEY' } };

Etapa 5: Usar o contexto de criptografia do Amazon Keyspaces em logsUm contexto de criptografia é um conjunto de pares de chave-valor que contêm dados arbitrários nãosecretos. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados,o AWS KMS vincula de forma criptográfica o contexto de criptografia aos dados criptografados. Paradescriptografar os dados, você deve passar o mesmo contexto de criptografia.

O Amazon Keyspaces usa o mesmo contexto de criptografia em todosAWS KMSOperações decriptografia. Se você usar umChave gerenciada pelo cliente (p. 189)Para proteger a tabela AmazonKeyspaces, você pode usar o contexto de criptografia para identificar o uso da chave gerenciada pelocliente em logs e registros de auditoria. Ele também é exibido em texto simples em logs, como em logsparaAWS CloudTraileAmazôniaCloudWatchLogs.

Em seus pedidos paraAWS KMSO Amazon Keyspaces usa um contexto de criptografia com três pares dechave/valor.

"encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "mytable" "aws:cassandra:subscriberId": "111122223333"}

195

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

• Keyspace— O primeiro par de chave/valor identifica o espaço de chave que inclui a tabela que oAmazon Keyspaces está criptografando. A chave é aws:cassandra:keyspaceName. O valor é onome do espaço de chaves.

"aws:cassandra:keyspaceName": "<keyspace-name>"

Por exemplo:

"aws:cassandra:keyspaceName": "my_keyspace"

• Tabela do— O segundo par de chave/valor identifica a tabela que o Amazon Keyspaces estácriptografando. A chave é aws:cassandra:tableName. O valor é o nome da tabela.

"aws:cassandra:tableName": "<table-name>"

Por exemplo:

"aws:cassandra:tableName": "my_table"

• Conta— O terceiro par chave/valor identifica aConta da AWS. A chave éaws:cassandra:subscriberId. O valor é o ID de conta.

"aws:cassandra:subscriberId": "<account-id>"

Por exemplo:

"aws:cassandra:subscriberId": "111122223333"

Etapa 6: Configurar o monitoramento comAWS CloudTrail

Se você usar umChave gerenciada pelo cliente (p. 189)para proteger suas tabelas do AmazonKeyspaces, você pode usarAWS CloudTraillogs para rastrear as solicitações que o Amazon KeyspacesenviaAWS KMSEm seu nome.

OGenerateDataKey,DescribeKey,Decrypt, eCreateGrantAs solicitações são discutidas nestaseção. Além disso, o Amazon Keyspaces usa umRetireGrantPara remover uma concessão quando vocêexclui uma tabela.

GenerateDataKey (Chave)

O Amazon Keyspaces cria uma chave de tabela exclusiva para criptografar dados em repouso. Eleenvia uma solicitaçãoGenerateDataKey (Chave)solicitação para oAWS KMSIsso especifica a chave doKMS para a tabela.

O evento que registra a operação GenerateDataKey é semelhante ao evento de exemplo a seguir.O usuário é a conta de serviço Amazon Keyspaces. Os parâmetros incluem o Amazon ResourceName (ARN) da chave gerenciada pelo cliente, um especificador de chave que requer uma chave de256 bits e acontexto de criptografia (p. 195)que identifica o espaço de chave, a tabela e oConta daAWS.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal"

196

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

}, "eventTime": "2021-04-16T04:56:05Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "5e8e9cb5-9194-4334-aacc-9dd7d50fe246", "eventID": "49fccab9-2448-4b97-a89d-7d5c39318d6f", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "84fbaaf0-9641-4e32-9147-57d2cb08792e"}

DescribeKey

O Amazon Keyspaces usa umDescribeKeyOperação para determinar se a chave do KMS escolhidaexiste na conta e na Região.

O evento que registra a operação DescribeKey é semelhante ao evento de exemplo a seguir. Ousuário é a conta de serviço Amazon Keyspaces. Os parâmetros incluem o ARN da chave gerenciadapelo cliente e um especificador de chave que requer uma chave de 256 bits.

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::123SAMPLE012:user/admin", "accountId": "123SAMPLE012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" },

197

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

"eventTime": "2021-04-16T04:55:58Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" }, "responseElements": null, "requestID": "c25a8105-050b-4f52-8358-6e872fb03a6c", "eventID": "0d96420e-707e-41b9-9118-56585a669658", "readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012"}

Decrypt

Ao acessar uma tabela do Amazon Keyspaces, o Amazon Keyspaces precisa descriptografar achave da tabela para que possa descriptografar as chaves abaixo dela na hierarquia. Descriptografaos dados na tabela. Para descriptografar a chave da tabela, o Amazon Keyspaces enviaumaDecryptsolicitação para oAWS KMSIsso especifica a chave do KMS para a tabela.

O evento que registra a operação Decrypt é semelhante ao evento de exemplo a seguir. O usuárioé a entidade principal na sua Conta da AWS que está acessando a tabela. Os parâmetros incluem achave de tabela criptografada (como um texto cifrado blob) e acontexto de criptografia (p. 195)queidentifica a tabela e oConta da AWS.AWS KMSO gera o ID da chave gerenciada pelo cliente do textocifrado.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:29:44Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "50e80373-83c9-4034-8226-5439e1c9b259", "eventID": "8db9788f-04a5-4ae2-90c9-15c79c411b6b",

198

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em repouso

"readOnly": true, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012", "sharedEventID": "7ed99e2d-910a-4708-a4e3-0180d8dbb68e"}

CreateGrant

Quando você usa umChave gerenciada pelo cliente (p. 189)para proteger sua tabela do AmazonKeyspaces, o Amazon Keyspaces usasubsídios (p. 193)Para permitir que o serviço realize aproteção de dados e tarefas de manutenção e durabilidade contínuas. Essas concessões não sãonecessárias emChaves pertencentes à AWS (p. 189).

As concessões que o Amazon Keyspaces cria são específicas a uma tabela. A entidade principalnoCreateGrantSolicitação é o usuário que criou a tabela.

O evento que registra a operação CreateGrant é semelhante ao evento de exemplo a seguir.Os parâmetros incluem o ARN da chave gerenciada pelo cliente para a tabela, a entidade principalfavorecida e a entidade principal que está sendo retirada (o serviço Amazon Keyspaces) e asoperações que a concessão abrange. Incluem também uma restrição que requer que todas asoperações de criptografia usem as especificadascontexto de criptografia (p. 195).

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AIDAZ3FNIIVIZZ6H7CFQG", "arn": "arn:aws:iam::arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111:user/admin", "accountId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "admin", "sessionContext": { "sessionIssuer": {}, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-16T04:55:42Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2021-04-16T05:11:10Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "keyId": "a7d328af-215e-4661-9a69-88c858909f20", "operations": [ "DescribeKey",

199

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia em trânsito

"GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ], "constraints": { "encryptionContextSubset": { "aws:cassandra:keyspaceName": "my_keyspace", "aws:cassandra:tableName": "my_table", "aws:cassandra:subscriberId": "123SAMPLE012" } }, "retiringPrincipal": "cassandratest.us-east-1.amazonaws.com", "granteePrincipal": "cassandratest.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "18e4235f1b07f289762a31a1886cb5efd225f069280d4f76cd83b9b9b5501013" }, "requestID": "b379a767-1f9b-48c3-b731-fb23e865e7f7", "eventID": "29ee1fd4-28f2-416f-a419-551910d20291", "readOnly": false, "resources": [ { "accountId": "123SAMPLE012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "123SAMPLE012"}

Criptografia em trânsito no Amazon KeyspacesO Amazon Keyspaces só aceita conexões seguras usando Transport Layer Security (TLS). Criptografiaem trânsito fornece uma camada adicional de proteção de dados ao criptografar os dados à medida queeles viajam de e para o Amazon Keyspaces. Políticas organizacionais, regulamentações setoriais ougovernamentais e exigências de conformidade geralmente exigem o uso de criptografia em trânsito paraaumentar a segurança de dados de seus aplicativos quando transmitem dados pela rede.

Para saber como criptografarcqlshconexões com o Amazon Keyspaces usando o TLS, consultethesection called “CriptografiacqlshConexões usando o TLS” (p. 28). Para saber como usar Criptografia TLScom drivers cliente, consultethe section called “Usando um driver cliente Cassandra” (p. 33).

Privacidade do tráfego entre redes no AmazonKeyspacesEste tópico descreve como o Amazon Keyspaces (para Apache Cassandra) protege conexões deaplicativos locais para o Amazon Keyspaces e entre o Amazon Keyspaces e outrosAWSrecursos dentro domesmoRegião da AWS.

Tráfego entre clientes de serviço e no local e os aplicativosVocê tem duas opções de conectividade entre sua rede privada e a AWS:

200

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

AWS Identity and Access Management

• Uma conexão AWS Site-to-Site VPN. Para obter mais informações, consulte O que é o AWS Site-to-SiteVPN? no Guia do usuário do AWS Site-to-Site VPN.

• Uma conexão AWS Direct Connect. Para obter mais informações, consulte O que é o AWS DirectConnect? no Guia do usuário do AWS Direct Connect.

O acesso ao Amazon Keyspaces via rede é feito por meio doAWSAPIs publicadas pela. Os clientes devemter suporte ao Transport Layer Security (TLS) 1.0. Recomendamos TLS 1.2 ou posterior. Os clientestambém devem ter suporte a pacotes de criptografia com sigilo de encaminhamento perfeito (PFS) comoEphemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman (ECDHE). A maioria dossistemas modernos como Java 7 e versões posteriores oferece suporte a esses modos.

O Amazon Keyspaces oferece suporte a dois métodos de autenticação de solicitações de clientes. Oprimeiro método usa credenciais específicas do serviço, que são credenciais baseadas em senha geradaspara um específicoAWS Identity and Access ManagementUsuário (IAM). É possível criar e gerenciar asenha usando o console do IAM, oAWS CLI, ou oAWSAPI. Para obter mais informações, consulteUso doIAM com o Amazon Keyspaces.

O segundo método usa um plugin de autenticação para o código abertoDataStaxDriver Java paraCassandra. Este plugin permiteUsuários do IAM, funções e identidades federadasPara adicionarinformações de autenticação às solicitações da API do Amazon Keyspaces (para Apache Cassandra)usando oAWSProcesso do Signature versão 4 (SigV4). Para obter mais informações, consulte ??? (p. 16).

Tráfego entre recursos da AWS na mesma regiãoOs VPC endpoints de interface permitem a comunicação privada entre a nuvem privada virtual (VPC) emexecução na Amazon VPC e no Amazon Keyspaces. Os VPC endpoints de interface são desenvolvidospeloAWS PrivateLink, o que é umAWSserviço que permite a comunicação privada entre VPCseAWSServiços da .AWS PrivateLinkÉ possível usar uma elastic network interface com IPs privados naVPC para que o tráfego de rede não saia da rede da Amazon. VPC endpoints de interface não exigem umgateway de Internet, dispositivo NAT, conexão VPN ou conexão do AWS Direct Connect. Para obter maisinformações, consulteAmazon Virtual Private CloudeVPC endpoints de interface (AWS PrivateLink). Paraobter exemplos de políticas, consulte the section called “Usar VPC endpoints de interface para o AmazonKeyspaces” (p. 246).

AWS Identity and Access ManagementParaAmazon Keyspaces

O AWS Identity and Access Management (IAM) é um serviço da AWS service (Serviço da AWS) queajuda a controlar o acesso aos recursos da AWS de forma segura. Os administradores do IAM controlamquem pode serautenticada(assinado) eautorizada(tem permissões) para usar os recursos do AmazonKeyspaces. O IAM é um AWS service (Serviço da AWS) que pode ser usado sem custo adicional.

Tópicos• Público (p. 202)• Autenticar com identidades (p. 202)• Gerenciamento do acesso usando políticas (p. 204)• Como o Amazon Keyspaces funciona com o IAM (p. 206)• Exemplos de políticas baseadas em identidade do Amazon Keyspaces (p. 209)• AWSpolíticas gerenciadas para Amazon Keyspaces (p. 216)• Solução de problemas de identidade e acesso do Amazon Keyspaces (p. 220)• Uso de funções vinculadas ao serviço para o Amazon Keyspaces (p. 223)

201

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Público

PúblicoComo você usaAWS Identity and Access ManagementO (IAM) varia em função do trabalho realizado noAmazon Keyspaces.

Usuário do serviço— se você usar o serviço Amazon Keyspaces para realizar sua tarefa, o administradorfornecerá as credenciais e as permissões de que você precisa. À medida que mais recursos do AmazonKeyspaces forem usados para realizar o trabalho do Amazon para realizar o trabalho, talvez sejamnecessárias permissões adicionais. Entender como o acesso é gerenciado pode ajudar você a solicitar aspermissões corretas ao seu administrador. Se não for possível acessar um recurso no Amazon Keyspaces,consulteSolução de problemas de identidade e acesso do Amazon Keyspaces (p. 220).

Administrador de serviços— Se você for o responsável pelos recursos do Amazon Keyspaces em suaempresa, você provavelmente terá acesso total ao Amazon Keyspaces. É seu trabalho determinar quaisrecursos do Amazon Keyspaces os funcionários devem acessar. Assim, é necessário enviar solicitaçõesao administrador do IAM para alterar as permissões dos usuários de seu serviço. Revise as informaçõesnesta página para entender os conceitos básicos do IAM. Para saber mais sobre como sua empresa podeusar o IAM com o Amazon Keyspaces com o Amazon KeyspacesComo o Amazon Keyspaces funcionacom o IAM (p. 206).

Administrador do IAM— se você é um administrador do IAM, talvez queira saber detalhes sobrecomo pode escrever políticas para gerenciar o acesso ao Amazon Keyspaces. Para visualizarexemplos de políticas baseadas em identidade do Amazon Keyspaces que podem ser usadas no IAM,consulteExemplos de políticas baseadas em identidade do Amazon Keyspaces (p. 209).

Autenticar com identidadesA autenticação é a forma como você faz login na AWS usando suas credenciais de identidade. Para obtermais informações sobre como fazer login usando o AWS Management Console, consulte Login no AWSManagement Console como usuário do IAM ou usuário root no Manual do usuário do IAM.

É necessário estar autenticado (conectado à AWS) como o usuário root da Conta da AWS ou um usuáriodo IAM, ou ainda assumindo uma função do IAM. Também é possível usar a autenticação de logonúnico da sua empresa ou até mesmo fazer login usando o Google ou o Facebook. Nesses casos, oadministrador configurou anteriormente federação de identidades usando funções do IAM. Ao acessar aAWS usando credenciais de outra empresa, você estará assumindo uma função indiretamente.

Para fazer login diretamente no AWS Management Console, use sua senha com o e-mail do usuário rootou seu nome de usuário do IAM. É possível acessar a AWS de maneira programática usando chaves deacesso do seu usuário root ou dos usuários do IAM. AWS fornece ferramentas SDK e de linha de comandopara assinar de forma criptográfica a sua solicitação usando suas credenciais. Se você não utilizar asferramentas AWS, você deverá assinar a solicitação por conta própria. Faça isso usando o Signatureversão 4, um protocolo para autenticação de solicitações de API de entrada. Para obter mais informaçõessobre solicitações de autenticação, consulte Processo de assinatura do Signature Version 4 na Referênciageral da AWS.

Independentemente do método de autenticação usado, também pode ser exigido que você forneçainformações adicionais de segurança. Por exemplo, a AWS recomenda o uso da autenticação multifator(MFA) para aumentar a segurança de sua conta. Para saber mais, consulte Uso da autenticação multifator(MFA) AWS no Guia do usuário do IAM.

Usuário root da Conta da AWSAo criar uma Conta da AWS, você começa com uma única identidade de login que tenha acesso totala todos os recursos e Serviços da AWS na conta. Essa identidade, denominada Conta da AWSusuárioraiz da , é acessada por login com o endereço de e-mail e a senha que você usou para criar a conta. Érecomendável não usar o usuário raiz para suas tarefas diárias, nem mesmo para as administrativas. Em

202

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Autenticar com identidades

vez disso, siga as práticas recomendadas sobre utilização de usuário raiz somente para criar seu primeirousuário do IAM. Depois, armazene as credenciais do usuário raiz com segurança e use-as para executarsomente algumas tarefas de gerenciamento de contas e de serviços.

Grupos e usuários do IAMUm usuário do IAM é uma identidade dentro da Conta da AWS que tem permissões específicas para umaúnica pessoa ou aplicação. Um usuário do IAM pode ter credenciais de longo prazo, como um nome deusuário e uma senha ou um conjunto de chaves de acesso. Para saber como gerar chaves de acesso,consulte Gerenciar chaves de acesso para usuários do IAM no Manual do usuário do IAM. Ao gerarchaves de acesso para um usuário do IAM, visualize e salve o par de chaves de maneira segura. Não serápossível recuperar a chave de acesso secreta futuramente. Em vez disso, você deverá gerar outro par dechaves de acesso.

Um grupo do IAM é uma identidade que especifica uma coleção de usuários do IAM. Não é possívelfazer login como um grupo. É possível usar grupos para especificar permissões para vários usuáriosde uma vez. Os grupos facilitam o gerenciamento de permissões para grandes conjuntos de usuários.Por exemplo, você pode ter um grupo chamado IAMAdmins e atribuir a esse grupo permissões paraadministrar recursos do IAM.

Usuários são diferentes de funções. Um usuário é exclusivamente associado a uma pessoa ou a umaaplicação, mas uma função pode ser assumida por qualquer pessoa que precisar dela. Os usuários têmcredenciais permanentes de longo prazo, mas as funções fornecem credenciais temporárias. Para sabermais, consulte Quando criar um usuário do IAM (em vez de uma função) no Manual do usuário do IAM.

Funções do IAMUma função do IAM é uma identidade dentro da Conta da AWS que tem permissões específicas. Ela ésemelhante a um usuário do IAM, mas não está associada a uma pessoa específica. É possível assumirtemporariamente uma função do IAM no AWS Management Console alternando funções. É possívelassumir uma função chamando uma operação de API da AWS CLI ou da AWS, ou usando um URLpersonalizado. Para mais informações sobre métodos para o uso de funções, consulte Usar funções doIAM no Manual do usuário do IAM.

As funções do IAM com credenciais temporárias são úteis nas seguintes situações:

• Permissões temporárias para usuários do IAM: um usuário do IAM pode assumir uma função do IAMpara obter temporariamente permissões diferentes para uma tarefa específica.

• Acesso de usuário federado: em vez de criar um usuário do IAM, você poderá usar identidades deusuários existentes no AWS Directory Service, em seu diretório de usuários corporativos ou em umprovedor de identidades da Web. Eles são conhecidos como usuários federados. A AWS atribui umafunção a um usuário federado quando o acesso é solicitado por meio de um provedor de identidades.Para obter mais informações sobre usuários federados, consulte Usuários federados e funções noManual do usuário do IAM.

• Acesso entre contas: é possível usar uma função do IAM para permitir que alguém (um principalconfiável) em outra conta acesse recursos em sua conta. As funções são a principal forma de concederacesso entre contas. No entanto, alguns Serviços da AWS permitem que você anexe uma políticadiretamente a um recurso (em vez de usar uma função como proxy). Para saber a diferença entrefunções e políticas baseadas em recurso para acesso entre contas, consulte Como as funções do IAMdiferem das políticas baseadas em recurso no Manual do usuário do IAM.

• Acesso entre serviços: alguns Serviços da AWS usam recursos em outros Serviços da AWS. Porexemplo, quando você faz uma chamada em um serviço, é comum que esse serviço execute aplicaçõesno Amazon EC2 ou armazene objetos no Amazon S3. Um serviço pode fazer isso usando as permissõesdo principal de chamada, usando uma função de serviço ou uma função vinculada ao serviço.• Permissões de principal: ao usar um usuário ou uma função do IAM para executar ações na AWS,

você é considerado um principal. As políticas concedem permissões a uma entidade principal. Quandovocê usa alguns serviços, pode executar uma ação que, em seguida, aciona outra ação em outro

203

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Gerenciamento do acesso usando políticas

serviço. Nesse caso, você deve ter permissões para executar ambas as ações. Para ver se uma açãorequer ações dependentes adicionais em uma política, consulteAções, recursos e chaves de condiçãopara o Amazon Keyspaces (para Apache Cassandra)noReferência de autorização do serviço.

• Função de serviço: uma função de serviço é uma função do IAM que um serviço assume para realizarações em seu nome. Um administrador do IAM pode criar, modificar e excluir uma função de serviçodo IAM. Para obter mais informações, consulte Criar uma função para delegar permissões a um AWSservice (Serviço da AWS) no Guia do usuário do IAM.

• Função vinculada a serviço: uma função vinculada a serviço é um tipo de função de serviço vinculadaa um AWS service (Serviço da AWS). O serviço pode assumir a função de executar uma ação emseu nome. As funções vinculadas ao serviço aparecem em sua conta do IAM e são de propriedade doserviço. Um administrador do IAM pode visualizar, mas não pode editar as permissões para funçõesvinculadas ao serviço.

• Aplicações em execução no Amazon EC2: é possível usar uma função do IAM para gerenciarcredenciais temporárias para aplicações em execução em uma instância do EC2 e fazer solicitaçõesda AWS CLI ou da AWS API. É preferível fazer isso a armazenar chaves de acesso na instância doEC2. Para atribuir uma função da AWS a uma instância do EC2 e disponibilizá-la para todas as suasaplicações, crie um perfil de instância que esteja anexado a ela. Um perfil de instância contém a funçãoe permite que os programas em execução na instância do EC2 obtenham credenciais temporárias.Para mais informações, consulte Usar uma função do IAM para conceder permissões a aplicações emexecução nas instâncias do Amazon EC2 no Manual do usuário do IAM.

Para saber se deseja usar as funções do IAM, consulte Quando criar uma função do IAM (em vez de umusuário) no Manual do usuário do IAM.

Gerenciamento do acesso usando políticasVocê controla o acesso na AWS criando e anexando políticas às identidades do IAM ou aos recursos daAWS. Uma política é um objeto na AWS que, quando associado a uma identidade ou recurso, define suaspermissões. Você pode fazer login como o usuário raiz ou um usuário do IAM ou assumir uma função doIAM. Quando você faz uma solicitação, a AWS avalia as políticas relacionadas baseadas em identidade oubaseadas em recursos. As permissões nas políticas determinam se a solicitação será permitida ou negada.A maioria das políticas são armazenadas na AWS como documentos JSON. Para obter mais informaçõessobre a estrutura e o conteúdo de documentos de políticas JSON, consulte Visão geral das políticas JSONno Manual do usuário do IAM.

Os administradores podem usar as políticas JSON da AWS para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

Cada entidade do IAM (usuário ou função) começa sem permissões. Em outras palavras, por padrão, osusuários não podem fazer nada, nem mesmo alterar sua própria senha. Para dar permissão a um usuáriopara fazer algo, um administrador deve anexar uma política de permissões ao usuário. Ou o administradorpode adicionar o usuário a um grupo que tenha as permissões pretendidas. Quando um administradorconcede permissões a um grupo, todos os usuários desse grupo recebem essas permissões.

As políticas do IAM definem permissões para uma ação, independentemente do método usadopara executar a operação. Por exemplo, suponha que você tenha uma política que permite a açãoiam:GetRole. Um usuário com essa política pode obter informações de funções do AWS ManagementConsole, da AWS CLI ou da API da AWS.

Políticas baseadas em identidadeAs políticas baseadas em identidade são documentos de políticas de permissões JSON que você podeanexar a uma identidade, como usuário, grupo de usuários ou função do IAM. Essas políticas controlamquais ações os usuários e funções podem realizar, em quais recursos e em que condições. Para sabercomo criar uma política baseada em identidade, consulte Criar políticas do IAM no Manual do usuário doIAM.

204

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Gerenciamento do acesso usando políticas

As políticas baseadas em identidade podem ser categorizadas ainda mais como políticas em linha oupolíticas gerenciadas. As políticas em linha são anexadas diretamente a um único usuário, grupo oufunção. As políticas gerenciadas são políticas independentes que podem ser anexadas a vários usuários,grupos e funções na Conta da AWS. As políticas gerenciadas incluem políticas gerenciadas pela AWS epolíticas gerenciadas pelo cliente. Para saber como escolher entre uma política gerenciada ou uma políticaem linha, consulte Escolher entre políticas gerenciadas e políticas em linha no Manual do usuário do IAM.

Políticas baseadas em recursosPolíticas baseadas em recurso são documentos de políticas JSON que você anexa a um recurso. Sãoexemplos de políticas baseadas em recursos as políticas de confiança de função do IAM e as políticas debucket do Amazon S3. Em serviços compatíveis com políticas baseadas em recursos, os administradoresde serviço podem usá-las para controlar o acesso a um recurso específico. Para o recurso ao qual apolítica está anexada, a política define quais ações um principal especificado pode executar nesse recursoe em que condições. Você deve especificar um principal em uma política baseada em recursos. Asentidades principais podem incluir contas, usuários, funções, usuários federados ou Serviços da AWS.

Políticas baseadas em recursos são políticas em linha que estão localizadas nesse serviço. Não é possívelusar as políticas gerenciadas da AWS do IAM em uma política baseada em recursos.

Listas de controle de acesso (ACLs)As listas de controle de acesso (ACLs) controlam quais principais (membros, usuários ou funções daconta) têm permissões para acessar um recurso. As ACLs são semelhantes às políticas baseadas emrecursos, embora não usem o formato de documento de política JSON.

Amazon S3, AWS WAF e Amazon VPC são exemplos de serviços que oferecem suporte a ACLs.Para saber mais sobre ACLs, consulte Visão geral da lista de controle de acesso (ACL) no Guia dodesenvolvedor do Amazon Simple Storage Service.

Outros tipos de políticaA AWS oferece suporte a tipos de política menos comuns. Esses tipos de política podem definir o máximode permissões concedidas a você pelos tipos de política mais comuns.

• Limites de permissões: um limite de permissões é um recurso avançado no qual você define o máximode permissões que uma política baseada em identidade pode conceder a uma entidade do IAM (usuárioou função do IAM). É possível definir um limite de permissões para uma entidade. As permissõesresultantes são a interseção das políticas baseadas em identidade da entidade e seus limites depermissões. As políticas baseadas em recurso que especificam o usuário ou a função no campoPrincipal não são limitadas pelo limite de permissões. Uma negação explícita em qualquer umadessas políticas substitui a permissão. Para obter mais informações sobre limites de permissões,consulte Limites de permissões para identidades do IAM no Manual do usuário do IAM.

• Políticas de controle de serviço (SCPs): SCPs são políticas JSON que especificam as permissõesmáximas para uma organização ou unidade organizacional (UO) no AWS Organizations. O AWSOrganizations é um serviço para agrupar e gerenciar centralmente várias Contas da AWS pertencentesà sua empresa. Se você habilitar todos os recursos em uma organização, poderá aplicar políticas decontrole de serviço (SCPs) a qualquer uma ou a todas as contas. Uma SCP limita as permissões paraentidades em contas-membro, incluindo cadaConta da AWSusuário raiz. Para obter mais informaçõessobre o Organizations e SCPs, consulte Como os SCPs funcionam no Manual do usuário do AWSOrganizations.

• Políticas de sessão: são políticas avançadas que você transmite como um parâmetro quando cria deforma programática uma sessão temporária para uma função ou um usuário federado. As permissõesda sessão resultante são a interseção das políticas baseadas em identidade do usuário ou da função edas políticas de sessão. As permissões também podem ser provenientes de uma política baseada emrecurso. Uma negação explícita em qualquer uma dessas políticas substitui a permissão. Para obtermais informações, consulte Políticas de sessão no Manual do usuário do IAM.

205

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como o Amazon Keyspaces funciona com o IAM

Vários tipos de políticaQuando vários tipos de política são aplicáveis a uma solicitação, é mais complicado compreender aspermissões resultantes. Para saber como a AWS determina se deve permitir uma solicitação quando hávários tipos de política envolvidos, consulte Lógica da avaliação de políticas no Manual do usuário do IAM.

Como o Amazon Keyspaces funciona com o IAMAntes de usar o IAM para gerenciar o acesso ao Amazon Keyspaces, você deve entender quais recursosdo IAM estão disponíveis para uso com o Amazon Keyspaces. Para obter uma visão detalhada de comoo Amazon Keyspaces e outrosAWSOs serviços funcionam com o IAM, consulteAWSserviços compatíveiscom o IAMnoManual do usuário do IAM.

Tópicos• Políticas baseadas em identidade do Amazon Keyspaces (p. 206)• Políticas baseadas em recursos do Amazon Keyspaces (p. 208)• Autorização baseada em tags do Amazon Keyspaces (p. 208)• Funções do IAM do Amazon Keyspaces (p. 209)

Políticas baseadas em identidade do Amazon KeyspacesCom as políticas baseadas em identidade do IAM, é possível especificar ações ou recursos permitidosou negados, bem como as condições sob as quais as ações são permitidas ou negadas. O AmazonKeyspaces oferece suporte a ações e chaves de condição específicos. Para saber mais sobre todos oselementos usados em uma política JSON, consulte Referência de elementos de política JSON do IAM noManual do usuário do IAM.

Para ver os recursos e ações específicos do serviço do Amazon Keyspaces e as chaves de contexto decondição que podem ser usadas para políticas de permissões do IAM, consulte aAções, recursos e chavesde condição para o Amazon Keyspaces (para Apache Cassandra)noReferência de autorização do serviço.

AçõesOs administradores podem usar AWS as políticas JSON da para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

O elemento Action de uma política JSON descreve as ações que você pode usar para permitir ou negaracesso em uma política. As ações de política geralmente têm o mesmo nome que a operação de APIda AWS associada. Existem algumas exceções, como ações somente de permissão, que não têm umaoperação de API correspondente. Há também algumas operações que exigem várias ações em umapolítica. Essas ações adicionais são chamadas de ações dependentes.

Inclua ações em uma política para conceder permissões para executar a operação associada.

As ações de políticas no Amazon Keyspaces usam o seguinte prefixo antes da ação: cassandra:. Porexemplo, para conceder a alguém permissão para criar um espaço chave do Amazon Keyspaces com oAmazon KeyspacesCREATEInstrução CQL, você inclui ocassandra:Createação em sua política. Asinstruções de política devem incluir um elemento Action ou NotAction. O Amazon Keyspaces defineseu próprio conjunto de ações que descrevem as tarefas que você pode executar com esse serviço.

Para especificar várias ações em uma única declaração, separe-as com vírgulas, conforme o seguinte:

"Action": [ "cassandra:CREATE", "cassandra:MODIFY" ]

206

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como o Amazon Keyspaces funciona com o IAM

Para ver uma lista das ações do Amazon Keyspaces, consulteAções definidas pelo Amazon Keyspaces(para Apache Cassandra)noReferência de autorização do serviço.

RecursosOs administradores podem usar AWS as políticas JSON da para especificar quem tem acesso a quê. Ouseja, qual principal pode executar ações em quais recursos, e em que condições.

O elemento Resource de política JSON especifica o objeto ou os objetos aos quais a ação se aplica.As instruções devem incluir um elemento Resource ou um elemento NotResource. Como práticarecomendada, especifique um recurso usando seu Nome de recurso da Amazon (ARN). Isso pode ser feitopara ações que oferecem suporte a um tipo de recurso específico, conhecido como permissões em nívelde recurso.

Para ações que não oferecem suporte a permissões em nível de recurso, como operações de listagem,use um curinga (*) para indicar que a instrução se aplica a todos os recursos.

"Resource": "*"

No Amazon Keyspaces, os espaços de chaves e tabelas podem ser usados noResourceelemento depermissões do IAM.

O recurso de espaço chave do Amazon Keyspaces tem o seguinte ARN:

arn:${Partition}:cassandra:${Region}:${Account}:/keyspace/${KeyspaceName}

O recurso de tabela do Amazon Keyspaces tem o seguinte ARN:

arn:${Partition}:cassandra:${Region}:${Account}:/keyspace/${KeyspaceName}/table/${tableName}

Para obter mais informações sobre o formato de ARNs, consulte Nomes de recursos da Amazon (ARNs) enamespaces de serviços da AWS.

Por exemplo, para especificar omykeyspaceKeyspace em sua instrução, use o seguinte ARN:

"Resource": "arn:aws:cassandra:us-east-1:123456789012:/keyspace/mykeyspace"

Para especificar todos os espaços de chave que pertencem a uma conta específica, use o caracterecuringa (*):

"Resource": "arn:aws:cassandra:us-east-1:123456789012:/keyspace/*"

Algumas ações do Amazon Keyspaces, como as de criação de recursos, não podem ser executadas emum recurso específico. Nesses casos, você deve usar o caractere curinga (*).

"Resource": "*"

Para se conectar ao Amazon Keyspaces programaticamente com um driver padrão, um usuáriodeve ter acesso SELECT às tabelas do sistema, pois a maioria dos drivers lê os espaços/tabelasde chave-chave do sistema na conexão. Por exemplo, para concederSELECTPermissões para umusuáriomytableemmykeyspace, o usuário do IAM deve ter permissões para ler os dois,mytableO easystem keyspace. Para especificar vários recursos em uma única instrução, separe os ARNs comvírgulas.

"Resource": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"

207

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Como o Amazon Keyspaces funciona com o IAM

Para ver uma lista de tipos de recursos do Amazon Keyspaces e seus ARNs, consulteRecursos definidospelo Amazon Keyspaces (para Apache Cassandra)noReferência de autorização do serviço. Para sabercom quais ações você pode especificar o ARN de cada recurso, consulteAções definidas pelo AmazonKeyspaces (para Apache Cassandra).

Chaves de condiçãoOs administradores podem usar AWS as políticas JSON da para especificar quem tem acesso a quê. Ouseja, qual entidade principal pode executar ações em quais recursos e em que condições.

O elemento Condition (ou bloco de Condition) permite que você especifique condições nas quais umainstrução está em vigor. O elemento Condition é opcional. É possível criar expressões condicionais queusam agentes de condição, como “igual a” ou “menor que”, para fazer a condição da política corresponderaos valores na solicitação.

Se você especificar vários elementos Condition em uma instrução ou várias chaves em um únicoelemento Condition, a AWS os avaliará usando uma operação lógica AND. Se você especificar váriosvalores para uma única chave de condição, a AWS avaliará a condição usando uma operação lógica OR.Todas as condições devem ser atendidas para que as permissões da instrução sejam concedidas.

Você também pode usar variáveis de espaço reservado ao especificar as condições. Por exemplo, épossível conceder a um usuário do IAM permissão para acessar um recurso somente se ele estivermarcado com seu nome de usuário do IAM. Para obter mais informações, consulte Elementos de políticado IAM: variáveis e tags no Manual do usuário do IAM.

A AWS oferece suporte a chaves de condição globais e chaves de condição específicas do serviço. Paraver todas as chaves de condição globais da AWS, consulte Chaves de contexto de condição globais daAWS no Manual do usuário do IAM.

O Amazon Keyspaces define seu próprio conjunto de chaves de condição e também oferece suporte aouso de algumas chaves de condição globais. Para ver todas AWS as chaves de condição globais, consulteAWS Chaves de contexto de condição globais no Manual do usuário do IAM.

Todas as ações do Amazon Keyspaces oferecem suporte aoaws:RequestTag/${TagKey},oaws:ResourceTag/${TagKey}, e oaws:TagKeysChaves de condição. Para obter mais informações,consulte the section called “ Acesso a recursos do Amazon Keyspaces com base em tags” (p. 214).

Para ver uma lista das chaves de condição do Amazon Keyspaces, consulteChaves de condição para oAmazon Keyspaces (para Apache Cassandra)noReferência de autorização do serviço. Para saber comquais ações e recursos uma chave de condição pode ser usada uma chave de condição, consulteAçõesdefinidas pelo Amazon Keyspaces (para Apache Cassandra).

ExemplosPara visualizar exemplos de políticas baseadas em identidade do Amazon Keyspaces, consulteExemplosde políticas baseadas em identidade do Amazon Keyspaces (p. 209).

Políticas baseadas em recursos do Amazon KeyspacesO Amazon Keyspaces não oferece suporte a políticas baseadas em recursos. Para visualizar um exemplode uma política baseada em recurso detalhada, consulte https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html.

Autorização baseada em tags do Amazon KeyspacesVocê pode gerenciar o acesso aos recursos do Amazon Keyspaces usando tags. Para gerenciar oacesso a recursos com base em tags, forneça informações sobre a tag noElemento de condiçãode

208

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

uma política do usando ocassandra:ResourceTag/key-name,aws:RequestTag/key-name,ouaws:TagKeysChaves de condição. Para obter mais informações sobre recursos de marcação doAmazon Keyspaces, consulteMarcar recursos do (p. 179).

Para visualizar exemplos de políticas baseadas em identidade para limitar o acesso a um recurso baseadoem tags desse recurso, consulte Acesso a recursos do Amazon Keyspaces com base em tags (p. 214).

Funções do IAM do Amazon KeyspacesUma função do IAM é uma entidade dentro da sua Conta da AWS que tem permissões específicas.

Usar credenciais temporárias com o Amazon Keyspaces

É possível usar credenciais temporárias para fazer login com federação, assumir uma função do IAM ouassumir uma função entre contas. Você obtém credenciais de segurança temporárias chamandoAWSSTSOperações de API do, comoAssumeRoleouGetFederationFicha.

A Amazon Keyspaces oferece suporte ao uso de credenciais temporárias com aPlug-in de autenticaçãodo Amazon Keyspaces (p. 37). Para ver um exemplo de como usar o plugin de autenticação para acessaruma tabela programaticamente, consultethe section called “Acessando o Amazon Keyspaces usando oplugin de autenticação” (p. 212).

Funções vinculadas ao serviço

Funções vinculadas ao serviço permitem que os serviços da AWS acessem recursos em outros serviçospara concluir uma ação em seu nome. As funções vinculadas ao serviço aparecem em sua conta doIAM e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não pode editar aspermissões para funções vinculadas ao serviço.

Para obter detalhes sobre como criar ou gerenciar funções vinculadas ao serviço do Amazon Keyspaces,consultethe section called “Uso de funções vinculadas a serviço” (p. 223).

Funções de serviço

O Amazon Keyspaces não oferece suporte a funções de serviço.

Exemplos de políticas baseadas em identidade doAmazon KeyspacesPor padrão, os usuários e as funções do IAM não têm permissão para criar ou modificar recursos doAmazon Keyspaces. Eles também não podem executar tarefas usando o console, o CQLSH,AWS CLI,ouAWSAPI. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e funçõespermissão para executarem operações de API específicas nos recursos especificados de que precisam. Oadministrador deve anexar essas políticas aos usuários ou grupos do IAM que exigem essas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos dedocumentos de política JSON, consulte Criar políticas na guia JSON no Manual do usuário do IAM.

Tópicos• Práticas recomendadas de políticas (p. 210)• Usando o console do Amazon Keyspaces (p. 210)• Permitir que os usuários visualizem suas próprias permissões (p. 210)• Acessar tabelas do Amazon Keyspaces (p. 211)• Acessando o Amazon Keyspaces usando o plugin de autenticação (p. 212)• Acesso a recursos do Amazon Keyspaces com base em tags (p. 214)

209

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

Práticas recomendadas de políticasAs políticas baseadas em identidade são muito eficientes. Elas determinam se alguém pode criar,acessar ou excluir recursos do Amazon Keyspaces em sua conta da. Essas ações podem incorrer emcustos para a Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes erecomendações:

• Comece a usar oAWSpolíticas gerenciadas— Para começar a usar o Amazon Keyspaces rapidamente,useAWSPolíticas gerenciadas para conceder a seus funcionários as permissões de que precisam. Essaspolíticas já estão disponíveis em sua conta e são mantidas e atualizadas pela AWS. Para obter maisinformações, consulte Começar a usar permissões com políticas gerenciadas da AWS no Manual dousuário do IAM.

• Conceder privilégio mínimo: ao criar políticas personalizadas, conceda apenas as permissõesnecessárias para executar uma tarefa. Comece com um conjunto mínimo de permissões e concedapermissões adicionais conforme necessário. Fazer isso é mais seguro do que começar com permissõesque são muito lenientes e tentar restringi-las superiormente. Para obter mais informações, consulteConceder privilégio mínimo no Manual do usuário do IAM.

• Habilitar MFA para operações confidenciais: para aumentar a segurança, exija que os usuários do IAMusem Multi-Factor Authentication (MFA) para acessar recursos ou operações de API confidenciais. Paraobter mais informações, consulte Usar autenticação multifator (MFA) AWS no Guia do usuário do IAM.

• Usar condições de política para segurança adicional: na medida do possível, defina as condiçõessob as quais suas políticas baseadas em identidade permitem o acesso a um recurso. Por exemplo,você pode gravar condições para especificar um intervalo de endereços IP permitidos do qual asolicitação deve partir. Você também pode escrever condições para permitir somente solicitações emuma data especificada ou período ou para exigir o uso de SSL ou MFA. Para obter mais informações,consulteElementos de política JSON do IAM: CondiçãonoManual do usuário do IAM.

Usando o console do Amazon KeyspacesO Amazon Keyspaces não requer permissões específicas para acessar o console do Amazon Keyspaces(para Apache Cassandra). Você precisa de pelo menos permissões somente leitura para listar e visualizardetalhes sobre os recursos do Amazon Keyspaces em seuConta da AWS. Se você criar uma políticabaseada em identidade que seja mais restritiva que as permissões mínimas necessárias, o console nãofuncionará como pretendido para entidades (usuários ou funções do IAM) com essa política.

Permitir que os usuários visualizem suas próprias permissõesEste exemplo mostra como você pode criar uma política que permite que os usuários do IAM visualizemas políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissõespara concluir essa ação no console ou de forma programática usando a AWS CLI ou a API da AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, {

210

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

"Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ]}

Acessar tabelas do Amazon KeyspacesVeja a seguir uma política de exemplo que concede somente leitura (SELECT) acesso às tabelas dosistema. Para todos os exemplos, substitua a região e o ID da conta no Nome de recurso da Amazon(ARN) pelo do serviço do.

Note

Para se conectar com um driver padrão, um usuário deve ter pelo menosSELECTacesso àstabelas do sistema, porque a maioria dos drivers lê os espaços/tabelas de chaves do sistema naconexão.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

A seguinte política de amostra adiciona acesso somente leitura a uma tabela de usuários.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

211

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

A política de exemplo a seguir atribui acesso de leitura/gravação a uma tabela de usuários e acesso deleitura às tabelas do sistema.

Note

As tabelas do sistema são somente leitura.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Select", "cassandra:Modify" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

A política de amostra a seguir permite que um usuário crie tabelas no espaço de chavemykeyspace.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Create", "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

Acessando o Amazon Keyspaces usando o plugin deautenticaçãoNo seguinte exemplo, você executa um aplicativo que usa aPlug-in de autenticação do AmazonKeyspaces (p. 37)para acessar o Amazon Keyspaces a partir de uma instância do EC2 associada a umafunção do IAM para consultar sua tabela do Amazon Keyspaces. O aplicativo retorna todos os pedidos deuma tabela chamadaordersPara uma determinada ID do cliente.

O exemplo inclui as seguintes etapas:

1. Crie um espaço de chave e uma tabela do Amazon Keyspaces e insira registros.2. Execute uma instância do EC2 e associe-a a uma função do IAM.

Defina a política do IAM que dá permissões de instância do EC2 para sua tabela do AmazonKeyspaces.

3. Implante e execute o código de exemplo na instância do EC2 para consultar sua tabela do AmazonKeyspaces.

212

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

Criar uma tabela de amostraPara começar, crie um espaço de chave e uma tabela e insira alguns registros. Para criar oorders, vocêpode usar o Editor CQL no console do Amazon Keyspaces ou usar cqlsh. Para obter mais informações,consulte the section called “Instalar e usar ocqlsh” (p. 27).

Primeiro, crie um espaço de chave e uma tabela com o esquema de tabela a seguir.

create keyspace acme with replication = {'class': 'SimpleStrategy', 'replication_factor' : 1 };create table acme.orders ( customer_id text, order_timestamp timestamp, order_id uuid, primary key (customer_id, order_timestamp)) with clustering order by (order_timestamp desc);

Em seguida, insira alguns registros de pedidos na tabela.

insert into acme.orders (customer_id, order_timestamp, order_id) values ('1234', toTimestamp(now()), uuid()); insert into acme.orders (customer_id, order_timestamp, order_id) values ('1234', toTimestamp(now()), uuid()); insert into acme.orders (customer_id, order_timestamp, order_id) values ('1234', toTimestamp(now()), uuid()); insert into acme.orders (customer_id, order_timestamp, order_id) values ('1234', toTimestamp(now()), uuid());

Execute uma instância do EC2 associada à função do IAMCrie a função do IAM que será associada à instância do EC2 que executará o aplicativo.

Salve o seguinte documento em um arquivo chamadoiam-keyspaces-ec2-role.json.

{ "Version":"2012-10-17", "Statement":{ "Effect":"Allow", "Principal":{ "Service":"ec2.amazonaws.com" }, "Action":"sts:AssumeRole" }}

Para dar acesso somente leitura à instância do EC2 aoorders, crie a seguinte política do IAM. Substitua aregião e a ID da conta no Nome de recurso da Amazon (ARN) pelo nome da conta do Amazon Keyspaces.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"cassandra:Select", "Resource":[ "arn:aws:cassandra:us-east-2:111122223333:/keyspace/acme/table/orders", "arn:aws:cassandra:us-east-2:111122223333:/keyspace/system*" ] } ]}

213

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

Salve o seguinte documento em um arquivo chamadoiam-keyspaces-ec2-policy.json.Note

Você deve incluir permissões para osystemkeyspace na política porque o driver precisa acessaresse espaço de chave para recuperar metadados do cluster.

Para executar uma instância do EC2 e associar a função do IAM criada à instância, siga as etapasemExecutar uma instância com uma função do IAM. Para associar a função a uma instância do EC2existente, consulteAnexar uma função do IAM.

Note

Escolha um Amazon Linux AMI com Java pré-instalado para este exemplo. Se você estiverusando uma instância existente do Amazon Linux, confirme se você tem o Java instalado ouconclua esta etapa usando o comandosudo yum install java-11-amazon-corretto-headless.

Implantar e executar o códigoPara implantar e executar o código para consultar sua tabela do Amazon Keyspaces, use as seguintesetapas:

1. Faça download do código de exemplo doGitHub.2. Compile o código de exemplo usando o Apache Maven.3. Copie o arquivo JAR para a instância do EC2 e execute o aplicativo.

Este exemplo usa um aplicativo de amostra que implementa oPlug-in de autenticação do AmazonKeyspaces (p. 37)para acessar a tabela usando a função do IAM. Em seu próprio código, você deveprimeiro integrar o plugin seguindo as etapas emthe section called “Plugin de autenticação para Java4.x” (p. 37).

Depois de baixar a amostra doGitHubrepositório, compile o código usando o Apache Maven versão 3.6.3ou superior usando o seguinte comando.

mvn package

Isso cria o seguinte arquivo JAR com todas as dependências incluídas natargetdiretório.

aws-sigv4-auth-cassandra-java-driver-examples-1.0.0.jar

Copie este arquivo JAR junto com ocassandra_truststore.jkslocalizado no diretório de código deexemplo para a instância do EC2. Em seguida, execute o aplicativo usando o comando a seguir. Substituaa região da AWSus-east-2Com a região da que você está usando.

java -Djavax.net.ssl.trustStore=./cassandra_truststore.jks \ -Djavax.net.ssl.trustStorePassword=amazon -jar \ aws-sigv4-auth-cassandra-java-driver-examples-1.0.0.jar \ us-east-2 cassandra.us-east-2.amazonaws.com 1234

Esse comando resulta nos registros inseridos na tabela anteriormente. O aplicativo acessou a tabelausando credenciais temporárias atribuídas à sessão de função do IAM e com as permissões somenteleitura definidas na política do IAM.

Acesso a recursos do Amazon Keyspaces com base em tagsVocê pode usar condições em sua política baseada em identidade para controlar o acesso aos recursosdo Amazon Keyspaces com base em tags. Essas políticas controlam a visibilidade dos espaços de

214

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Exemplos de políticas baseadas em identidade

chave e das tabelas na conta. Observe que as permissões baseadas em tags para tabelas do sistemase comportam de forma diferente quando as solicitações são feitas usando oAWSSDK comparado àschamadas da API Cassandra Query Language (CQL) por meio de drivers Cassandra e ferramentas dedesenvolvedor.

• Para fazerListeGetsolicitações de recursos com oAWSSDK ao usar o acesso baseado em tag, ochamador precisa ter acesso de leitura às tabelas do sistema. Por exemplo,Selectpermissões deação são necessárias para ler dados das tabelas do sistema por meio doGetTableoperação. Se ochamador tiver apenas acesso baseado em tag a uma tabela específica, uma operação que requeracesso adicional a uma tabela do sistema falhará.

• Para compatibilidade com o comportamento estabelecido do driver Cassandra, as políticas deautorização baseadas em tags não são aplicadas ao executar operações em tabelas do sistema usandochamadas de API Cassandra Query Language (CQL) por meio de drivers Cassandra e ferramentas dedesenvolvedor.

O exemplo a seguir mostra como você pode criar uma política que concede permissões a um usuário paraexibir uma tabela se a tabelaOwnerEle contém o valor do nome do usuário. Neste exemplo, você tambémdá acesso de leitura às tabelas do sistema.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ReadOnlyAccessTaggedTables", "Effect":"Allow", "Action":"cassandra:Select", "Resource":[ "arn:aws:cassandra:us-east-2:111122223333:/keyspace/myKeyspace/table/*", "arn:aws:cassandra:us-east-2:111122223333:/keyspace/myKeyspace/system*" ], "Condition":{ "StringEquals":{ "aws:ResourceTag/Owner":"${aws:username}" } } } ]}

É possível anexar essa política aos usuários do IAM na sua conta. Se um usuário chamadorichard-roetenta visualizar uma tabela do Amazon Keyspaces, a tabela deve ser marcadaOwner=richard-roeouowner=richard-roe. Caso contrário, ele terá o acesso negado. A chave da tag de condiçãoOwner corresponde a Owner e a owner porque os nomes de chaves de condição não fazem distinçãoentre maiúsculas e minúsculas. Para obter mais informações, consulteElementos de política JSON do IAM:CondiçãonoManual do usuário do IAM.

A seguinte política concede permissões a um usuário para criar tabelas com tags se a tabela forOwnerElecontém o valor do nome do usuário.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateTagTableUser", "Effect": "Allow", "Action": ["cassandra:Create", "cassandra:TagResource"], "Resource": "arn:aws:cassandra:us-east-2:111122223333:/keyspace/mykeyspace/table/*", "Condition": { "ForAnyValue:StringEquals" : {"aws:RequestTag/Owner": "${aws:username}"}

215

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Políticas gerenciadas pela AWS

} ]}

AWSpolíticas gerenciadas para Amazon Keyspaces

Para adicionar permissões a usuários, grupos e funções, é mais fácil usar políticas gerenciadas pelaAWS do que gravar políticas por conta própria. É necessário tempo e experiência para criar políticasgerenciadas pelo cliente do IAM que fornecem à sua equipe apenas as permissões de que precisam. Paracomeçar rapidamente, você pode usar nossas políticas gerenciadas pela AWS. Essas políticas abrangemcasos de uso comuns e estão disponíveis na sua Conta da AWS. Para obter mais informações sobre aspolíticas gerenciadas da AWS, consulte Políticas gerenciadas da AWS no Guia do usuário do IAM.

Os Serviços da AWS mantêm e atualizam políticas gerenciadas pela AWS. Não é possível alterar aspermissões em políticas gerenciadas pela AWS. Os serviços ocasionalmente acrescentam permissõesadicionais a uma política gerenciada pela AWS para oferecer suporte a novos recursos. Esse tipo deatualização afeta todas as identidades (usuários, grupos e funções) em que a política está anexada. Émais provável que os serviços atualizem uma política gerenciada pela AWS quando um novo recursofor iniciado ou novas operações se tornarem disponíveis. Os serviços não removem permissões de umapolítica gerenciada pela AWS, portanto, as atualizações de políticas não suspendem suas permissõesexistentes.

Além disso, a AWS oferece suporte a políticas gerenciadas para funções de trabalho que abrangemvários serviços. Por exemplo, a política gerenciada pela AWS ViewOnlyAccess fornece acesso somentede leitura a muitos Serviços da AWS e recursos. Quando um serviço executa um novo recurso, a AWSadiciona permissões somente leitura para novas operações e recursos. Para obter uma lista e descriçõesdas políticas de funções de trabalho, consulte Políticas gerenciadas pela AWS para funções de trabalho noGuia do usuário do IAM.

AWSpolítica gerenciada: AmazonKeyspacesReadOnlyAccess

É possível anexar a política AmazonKeyspacesReadOnlyAccess a suas identidades do IAM.

Esta política concede acesso somente para leitura ao Amazon Keyspaces.

Detalhes da permissão

Esta política inclui as seguintes permissões.

• Amazon Keyspaces— fornece acesso somente de leitura ao Amazon Keyspaces.• Application Auto Scaling— permite que as entidades principais visualizem as configurações

do Application Auto Scaling. Isso é necessário para que os usuários possam visualizar as políticas deescalabilidade automática anexadas a uma tabela.

• CloudWatch— Permite que os principais visualizem dados métricos e alarmes configurados noCloudWatch. Isso é necessário para que os usuários possam visualizar o tamanho da tabela faturável eCloudWatch alarmes da que foram configurados para uma tabela.

216

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Políticas gerenciadas pela AWS

• AWS KMS— Permite que as entidades principais visualizem as chaves configuradas noAWS KMS. Issoé necessário para que os usuários possam visualizarAWS KMSchaves que eles criam e gerenciam emsua conta para confirmar que a chave atribuída ao Amazon Keyspaces é uma chave de criptografiasimétrica habilitada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cassandra:Select" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "kms:DescribeKey", "kms:ListAliases" ], "Resource": "*" } ]}

Política gerenciada da AWS: AmazonKeyspacesFullAccess

É possível anexar a política AmazonKeyspacesFullAccess a suas identidades do IAM.

Esta política concede permissões administrativas que oferecem acesso irrestrito aos Amazon Keyspaces.

Detalhes da permissão

Esta política inclui as seguintes permissões.

• Amazon Keyspaces— Permite que os princípios acessem qualquer recurso do Amazon Keyspaces eexecutem todas as ações.

• Application Auto Scaling— Permite que as entidades principais criem, visualizem e excluampolíticas de escalabilidade automática para tabelas do Amazon Keyspaces. Isso é necessário para queos administradores possam gerenciar políticas de escalabilidade automática para tabelas do AmazonKeyspaces.

• CloudWatch— Permite que os principais vejam o tamanho da tabela faturável, bem como criem,visualizem e excluam CloudWatch alarmes para as políticas de escalabilidade automática do AmazonKeyspaces. Isso é necessário para que os administradores possam visualizar o tamanho da tabelafaturável e criar um CloudWatch Painel do.

217

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Políticas gerenciadas pela AWS

• IAM— Permite que o Amazon Keyspaces crie uma função vinculada ao serviço com o IAMautomaticamente quando um administrador habilita o Application Auto Scaling para uma tabela. Isso énecessário para que o Amazon Keyspaces possa realizar ações de escalabilidade automática em seunome.

• AWS KMS— Permite que as entidades principais visualizem as chaves configuradas noAWS KMS. Issoé necessário para que os usuários possam visualizarAWS KMSchaves que eles criam e gerenciam emsua conta para confirmar que a chave atribuída ao Amazon Keyspaces é uma chave de criptografiasimétrica habilitada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cassandra:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeleteScheduledAction", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "application-autoscaling:PutScheduledAction", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "kms:DescribeKey", "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "cloudwatch:PutMetricAlarm" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/cassandra.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_CassandraTable", "Condition": { "StringLike": { "iam:AWSServiceName": "cassandra.application-autoscaling.amazonaws.com" } } } ]}

218

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Políticas gerenciadas pela AWS

Atualizações do Amazon Keyspaces para oAWSpolíticasgerenciadas

Visualize detalhes sobre atualizações para oAWSpolíticas gerenciadas pela para o Amazon Keyspacesdesde que este serviço começou a monitorar essas alterações. Para obter alertas automáticos sobrealterações feitas nesta página, inscreva-se no feed RSS na página Histórico do documento (p. 276).

Alteração Descrição Data

AmazonKeyspacesReadOnlyAccess (p. 216):atualizar para uma políticaexistente

O Amazon Keyspaces adicionounovas permissões para permitirque os usuários visualizem otamanho faturável de uma tabelausando CloudWatch.

O Amazon Keyspaces se integraà Amazon CloudWatch parapermitir que você monitore otamanho da tabela faturável.Para obter mais informações,consulte the section called“Métricas e dimensões doAmazon Keyspaces” (p. 228).

7 de julho de 2022

AmazonKeyspacesFullAccess (p. 217):atualizar para uma políticaexistente

O Amazon Keyspaces adicionounovas permissões para permitirque os usuários visualizem otamanho faturável de uma tabelausando CloudWatch.

O Amazon Keyspaces se integraà Amazon CloudWatch parapermitir que você monitore otamanho da tabela faturável.Para obter mais informações,consulte the section called“Métricas e dimensões doAmazon Keyspaces” (p. 228).

7 de julho de 2022

AmazonKeyspacesReadOnlyAccess (p. 216):atualizar para uma políticaexistente

O Amazon Keyspaces adicionounovas permissões para permitirque os usuários visualizemAWSKMSchaves que foramconfiguradas para a criptografiado Amazon Keyspaces emrepouso.

A criptografia do AmazonKeyspaces em repouso seintegra comAWS KMSparaproteger e gerenciar as chavesde criptografia usadas paracriptografar dados em repouso.Para visualizar oAWS KMSchaveconfigurada para Amazon

1º de junho de 2021

219

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

Alteração Descrição DataKeyspaces, permissões somenteleitura foram adicionadas.

AmazonKeyspacesFullAccess (p. 217):atualizar para uma políticaexistente

O Amazon Keyspaces adicionounovas permissões para permitirque os usuários visualizemAWSKMSchaves que foramconfiguradas para a criptografiado Amazon Keyspaces emrepouso.

A criptografia do AmazonKeyspaces em repouso seintegra comAWS KMSparaproteger e gerenciar as chavesde criptografia usadas paracriptografar dados em repouso.Para visualizar oAWS KMSchaveconfigurada para AmazonKeyspaces, permissões somenteleitura foram adicionadas.

1º de junho de 2021

O Amazon Keyspaces começoua monitorar alterações

O Amazon Keyspaces começoua monitorar alterações paraoAWSpolíticas gerenciadas.

1º de junho de 2021

Solução de problemas de identidade e acesso doAmazon KeyspacesUse as seguintes informações para ajudar a diagnosticar e corrigir problemas comuns que podem serencontrados ao trabalhar com o Amazon Keyspaces e o IAM.

Tópicos• Não estou autorizado a realizar uma ação no Amazon Keyspaces (p. 220)• Modifiquei um usuário ou função do IAM e as alterações não entraram em vigor

imediatamente (p. 221)• Não consigo restaurar uma tabela usando o Amazon Keyspacespoint-in-timerecuperação

(PITR) (p. 221)• Não estou autorizado a executar o IAM:PassRole (p. 221)• Quero visualizar minhas chaves de acesso (p. 222)• Sou administrador e desejo permitir que outras pessoas tenham acesso ao Amazon

Keyspaces (p. 222)• Quero permitir pessoas fora da minhaConta da AWSpara acessar meus recursos do Amazon

Keyspaces (p. 222)

Não estou autorizado a realizar uma ação no Amazon KeyspacesSe o AWS Management Console informar que você não está autorizado a executar uma ação, você deveráentrar em contato com o administrador para obter assistência. O administrador é a pessoa que forneceu avocê o seu nome de usuário e senha.

220

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

O exemplo a seguir ocorre quando omateojacksonO usuário do IAM tenta usar o console para visualizardetalhes sobre umamesamas não temcassandra:Selectpermissões para a tabela.

User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: cassandra:Select on resource: mytable

Neste caso, Mateo pede ao administrador para atualizar suas políticas para permitir a ele o acesso aorecurso mytable usando a ação cassandra:Select.

Modifiquei um usuário ou função do IAM e as alterações nãoentraram em vigor imediatamenteAs alterações na política do IAM podem levar até 10 minutos para entrar em vigor para aplicativos comconexões existentes e estabelecidas com o Amazon Keyspaces. As alterações na política do IAM entramem vigor imediatamente quando os aplicativos estabelecem uma nova conexão. Se você tiver feitomodificações em um usuário ou função do IAM existente e isso não tiver entrado em vigor imediato,aguarde 10 minutos ou desconecte e reconecte ao Amazon Keyspaces.

Não consigo restaurar uma tabela usando o AmazonKeyspacespoint-in-timerecuperação (PITR)Se você estiver tentando restaurar uma tabela do Amazon Keyspaces compoint-in-timerecuperação(PITR), e você vê o processo de restauração começar, mas não concluído com êxito, talvez você nãotenha configurado todas as permissões necessárias necessárias para o processo de restauração. Vocêdeve entrar em contato com o administrador para obter assistência e pedir a essa pessoa para atualizarsuas políticas para permitir que você restaure uma tabela no Amazon Keyspaces.

Além das permissões do usuário, o Amazon Keyspaces pode exigir permissões para executar açõesdurante o processo de restauração em nome do diretor. Esse é o caso se a tabela for criptografada comuma chave gerenciada pelo cliente ou se você estiver usando políticas do IAM que restringem o tráfego deentrada. Por exemplo, se você estiver usando chaves de condição em sua política do IAM para restringiro tráfego de origem a endpoints específicos ou intervalos de IP, a operação de restauração falhará. Parapermitir que o Amazon Keyspaces execute a operação de restauração de tabela em nome do seu principal,você deve adicionar umaws:ViaAWSServicechave de condição global na política do IAM.

Para obter mais informações sobre permissões para restaurar tabelas, consultethe section called“Restaurar permissões” (p. 160).

Não estou autorizado a executar o IAM:PassRoleSe você receber uma mensagem de erro informando que você não está autorizado a executar a açãoiam:PassRole, entre em contato com o administrador para obter assistência. O administrador é a pessoaque forneceu a você o seu nome de usuário e senha. Peça a essa pessoa para atualizar suas políticaspara permitir que você transmita uma função para o Amazon Keyspaces.

Alguns Serviços da AWS permitem que você transmita uma função existente para o serviço, em vez decriar uma função de serviço ou uma função vinculada ao serviço. Para fazer isso, um usuário deve terpermissões para passar a função para o serviço.

O erro de exemplo a seguir ocorre quando uma usuária do IAM chamadamarymajorTente usar o consolepara executar uma ação no Amazon Keyspaces. No entanto, a ação exige que o serviço tenha permissõesconcedidas por uma função de serviço. Mary não tem permissões para passar a função para o serviço.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

Neste caso, Mary pede ao administrador para atualizar suas políticas para permitir que ela execute a açãoiam:PassRole.

221

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Solução de problemas

Quero visualizar minhas chaves de acessoDepois de criar suas chaves de acesso de usuário do IAM, é possível visualizar seu ID da chave de acessoa qualquer momento. No entanto, você não pode visualizar sua chave de acesso secreta novamente. Sevocê perder sua chave secreta, crie um novo par de chaves de acesso.

As chaves de acesso consistem em duas partes: um ID de chave de acesso (por exemplo,AKIAIOSFODNN7EXAMPLE) e uma chave de acesso secreta (por exemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). Como um nome de usuário e uma senha, você deve usar o ID da chave deacesso e a chave de acesso secreta em conjunto para autenticar suas solicitações. Gerencie suas chavesde acesso de forma tão segura quanto você gerencia seu nome de usuário e sua senha.

Important

Não forneça as chaves de acesso a terceiros, mesmo que seja para ajudar a encontrar o ID deusuário canônico. Ao fazer isso, você pode dar a alguém acesso permanente à sua conta.

Ao criar um par de chaves de acesso, você é solicitado a guardar o ID da chave de acesso e a chavede acesso secreta em um local seguro. A chave de acesso secreta só está disponível no momento emque é criada. Se você perder sua chave de acesso secreta, será necessário adicionar novas chaves deacesso para seu usuário do IAM. Você pode ter no máximo duas chaves de acesso. Se você já tiver duas,você deverá excluir um par de chaves para poder criar um novo. Para visualizar as instruções, consulteGerenciar chaves de acesso no Manual do usuário do IAM.

Sou administrador e desejo permitir que outras pessoas tenhamacesso ao Amazon KeyspacesPara permitir que outras pessoas tenham acesso ao Amazon Keyspaces, é necessário criar umaentidade do IAM (usuário ou função) para a pessoa ou a aplicação que precisa do acesso. Elas usarão ascredenciais dessa entidade para acessar a AWS. Você deve anexar uma política à entidade que concede aeles as permissões corretas no Amazon Keyspaces.

Para começar a usar imediatamente, consulte Criar os primeiros usuário e grupo delegados do IAM noManual do usuário do IAM.

Quero permitir pessoas fora da minhaConta da AWSpara acessarmeus recursos do Amazon KeyspacesVocê pode criar uma função que os usuários de outras contas ou pessoas fora da sua organização podemusar para acessar seus recursos. Você pode especificar quem é confiável para assumir a função. Paraserviços que oferecem suporte a políticas baseadas em recursos ou listas de controle de acesso (ACLs),você pode usar essas políticas para conceder às pessoas acesso aos seus recursos.

Para saber mais, consulte o seguinte:

• Para saber se o Amazon Keyspaces oferece suporte a esses recursos, consulteComo o AmazonKeyspaces funciona com o IAM (p. 206).

• Para saber como conceder acesso a seus recursos em todas as Contas da AWS pertencentes a você,consulte Fornecimento de acesso a um usuário do IAM em outra Conta da AWS pertencente a você noGuia de usuário do IAM.

• Para saber como conceder acesso a seus recursos para terceiros Contas da AWS, consulteFornecimento de acesso a Contas da AWS pertencentes a terceiros no Guia do usuário do IAM.

• Para saber como conceder acesso por meio da federação de identidades, consulte Conceder acesso ausuários autenticados externamente (federação de identidades) no Manual do usuário do IAM.

• Para saber a diferença entre usar funções e políticas baseadas em recursos para acesso entre contas,consulte Como as funções do IAM diferem de políticas baseadas em recursos no Manual do usuário doIAM.

222

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUso de funções vinculadas a serviço

Uso de funções vinculadas ao serviço para o AmazonKeyspacesUso do Amazon Keyspaces (para Apache Cassandra)AWS Identity and Access Management(IAM)funçõesvinculadas ao serviço. Uma função vinculada ao serviço é um tipo exclusivo de função do IAM vinculadadiretamente ao Amazon Keyspaces. As funções vinculadas ao serviço são predefinidas pelo AmazonKeyspaces e incluem todas as permissões exigidas pelo serviço para chamar outrasAWSServiços em seunome.

Uma função vinculada ao serviço facilita a configuração do escalabilidade automática do AmazonKeyspaces porque você não precisa adicionar manualmente as permissões necessárias para o ApplicationAuto Scaling. O Amazon Keyspaces define as permissões das funções vinculadas ao serviço. Aspermissões definidas incluem a política de confiança e a política de permissões, e essa política não podeser anexada a nenhuma outra entidade do IAM.

Para obter informações sobre outros serviços compatíveis com funções vinculadas a serviços, consulteServiços da AWS compatíveis com o IAM e procure os serviços que contenham Yes (Sim) na colunaService-Linked Role (Função vinculada a serviço). Escolha um Sim com um link para visualizar adocumentação da função vinculada a serviço desse serviço.

Permissões de função vinculada ao serviço para o AmazonKeyspacesA escalabilidade automática do Amazon Keyspaces usa a função vinculada ao serviçochamadaAWSServiceRoleForApplicationAutoScaling_CassandraTablepara permitir que o Application AutoScaling chame o Amazon Keyspaces e a AmazonCloudWatchEm seu nome.

A função vinculada ao serviço AWSServiceRoleForApplicationAutoScaling_CassandraTable confia noseguinte serviço para assumir a função:

• cassandra.application-autoscaling.amazonaws.com

A política de permissões da função permite que o Application Auto Scaling conclua as seguintes ações nosrecursos especificados do Amazon Keyspaces:

• Ação: cassandra:Select no recurso arn:*:cassandra:*:*:/keyspace/system/table/*• Ação: cassandra:Select no recurso arn:*:cassandra:*:*:/keyspace/system_schema/table/*

• Ação: cassandra:Select no recurso arn:*:cassandra:*:*:/keyspace/system_schema_mcs/table/*

• Ação: cassandra:Alter no recurso arn:*:cassandra:*:*:"*"

Criar uma função vinculada ao serviço para o AmazonKeyspacesVocê não precisa criar manualmente uma função vinculada ao serviço para o escalabilidade automática doAmazon Keyspaces. Quando você habilita o dimensionamento automático do Amazon Keyspaces em umatabela com oAWS Management Console, oAWS CLI, ou oAWSA API e Application Auto Scaling criará afunção vinculada ao serviço para você.

Se você excluir essa função vinculada ao serviço e precisar criá-la novamente, poderá usar esse mesmoprocesso para recriar a função em sua conta. Quando você habilita a escalabilidade automática do

223

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro em log e monitoramento

Amazon Keyspaces para uma tabela, o Application Auto Scaling criará a função vinculada ao serviçonovamente.

Editar uma função vinculada ao serviço para o AmazonKeyspacesO Amazon Keyspaces não permite editar AWSServiceRoleForApplicationAutoScaling_CassandraTablevinculada ao serviço. Depois que criar uma função vinculada ao serviço, você não poderá alterar o nomeda função, pois várias entidades podem fazer referência a ela. No entanto, você poderá editar a descriçãoda função usando o IAM. Para obter mais informações, consulte Editar uma função vinculada ao serviço noGuia do usuário do IAM.

Excluir uma função vinculada ao serviço para o AmazonKeyspacesSe você não precisar mais usar um recurso ou serviço que requer uma função vinculada a serviço, érecomendável excluí-la. Dessa forma, você não terá uma entidade não utilizada que não seja monitoradaativamente ou mantida. Contudo, você deve primeiro desativar a escalabilidade automática em todas astabelas da conta em todas as Regiões antes de poder excluir a função vinculada ao serviço manualmente.Para desativar o dimensionamento automático em tabelas do Amazon Keyspaces, consulte??? (p. 110).

Note

Se o escalabilidade automática do Amazon Keyspaces estiver usando a função quando vocêtentar modificar os recursos, o cancelamento do registro poderá falhar. Se isso acontecer, esperealguns minutos e tente a operação novamente.

Como excluir manualmente a função vinculada ao serviço usando o IAM

Use o console do IAM, a AWS CLI ou a API da AWS para excluir a função vinculada ao serviçoAWSServiceRoleForApplicationAutoScaling_CassandraTable. Para obter mais informações, consulteExcluir uma função vinculada ao serviço no Guia do usuário do IAM.

Note

Para excluir a função vinculada ao serviço usada pelo escalabilidade automática do AmazonKeyspaces, você deve primeiro desativar a escalabilidade automática em todas as tabelas daconta.

CompatívelRegiões da AWSPara funções vinculadas ao serviçodo Amazon KeyspacesO escalabilidade automática do Amazon Keyspaces e a função vinculada ao serviço Application AutoScaling estão disponíveis em todos osRegiões da AWSEm que o Amazon Keyspaces está disponível. Paraobter mais informações, consulteEndpoints de serviço para Amazon Keyspaces.

Log e monitoramento no Amazon Keyspaces (forApache Cassandra)

Monitoramento é uma parte importante da manutenção da confiabilidade, da disponibilidade e dodesempenho do Amazon Keyspaces e doAWSSoluções. Você deve coletar dados de monitoramento de

224

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Ferramentas de monitoramento

todas as partes de sua solução da AWS, para facilitar a depuração de uma falha multipontos, caso ocorra.No entanto, antes de começar a monitorar o Amazon Keyspaces, crie um plano de monitoramento queinclua respostas às seguintes perguntas:

• Quais são seus objetivos de monitoramento?• Quais recursos você vai monitorar?• Com que frequência você vai monitorar esses recursos?• Quais ferramentas de monitoramento você usará?• Quem realizará o monitoramento das tarefas?• Quem deve ser notificado quando algo der errado?

Para fornecer uma visão geral, oAWS Management Consolefor Amazon Keyspaces oferece um painelpré-configurado mostrando a latência e os erros agregados em todas as tabelas em uma conta. Apróxima etapa é configurar um CloudWatch painel de controle para recursos individuais do AmazonKeyspaces. Comece estabelecendo uma linha de base do desempenho normal do Amazon Keyspacesno seu ambiente medindo o desempenho em vários momentos e em diferentes condições de carga. Àmedida que você monitorar o Amazon Keyspaces, armazene dados históricos de monitoramento para quepossa compará-los com os dados de desempenho atuais, identificar padrões de desempenho normais eanomalias de desempenho e elaborar métodos para solucionar problemas.

Para estabelecer uma linha de base, você deve, no mínimo, monitorar os seguintes itens:

• Erros do sistema, para que você possa determinar se alguma solicitação resultou em um erro.

Tópicos• Ferramentas de monitoramento para o Amazon Keyspaces (p. 225)• Monitorar o Amazon Keyspaces com o Amazon CloudWatch (p. 226)• Registro de chamadas de API do Amazon Keyspaces comAWS CloudTrail (p. 239)

Ferramentas de monitoramento para o AmazonKeyspacesAWSA fornece várias ferramentas que você pode usar para monitorar o Amazon Keyspaces. É possívelconfigurar algumas dessas ferramentas para fazer o monitoramento em seu lugar, e, ao mesmo tempo,algumas das ferramentas exigem intervenção manual. Recomendamos que as tarefas de monitoramentosejam automatizadas ao máximo possível.

Tópicos• Ferramentas de monitoramento automatizadas para o Amazon Keyspaces (p. 225)• Ferramentas de monitoramento manual do Amazon Keyspaces (p. 226)

Ferramentas de monitoramento automatizadas para o AmazonKeyspacesÉ possível usar as seguintes ferramentas automatizadas para monitorar o Amazon Keyspaces e gerarrelatórios quando algo estiver errado:

• Amazônia CloudWatch alarmes: observe uma única métrica ao longo de um período que vocêespecificar e realize uma ou mais ações com base no valor da métrica em relação a um determinado

225

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

limite ao longo de vários períodos. A ação é uma notificação enviada para um tópico do Amazon SimpleNotification Service (Amazon SNS) ou uma política do Amazon EC2 Auto Scaling.

Os alarmes do CloudWatch não invocam ações só porque estão em um determinado estado. O estadodeve ter sido alterado e mantido por uma quantidade especificada de períodos. Para obter maisinformações, consulteMonitorar o Amazon Keyspaces com o Amazon CloudWatch (p. 226)

Ferramentas de monitoramento manual do Amazon KeyspacesOutra parte importante do monitoramento do Amazon Keyspaces envolve o monitoramento manualdesses itens que o CloudWatch alarmes não cobrem. O Amazon Keyspaces, CloudWatch,TrustedAdvisore outrosAWS Management Consolepainéis fornecem um at-a-glance Visualização do estadodoAWSEnvironment.

• O CloudWatch A página inicial mostra o seguinte:• Alertas e status atual• Gráficos de alertas e recursos• Estado de integridade do serviço

Além disso, você pode usar CloudWatch Para fazer o seguinte:• Crie painéis personalizados para monitorar os serviços com os quais você se preocupa.• Colocar em gráfico dados de métrica para solucionar problemas e descobrir tendências• Pesquisar e procurar todas as métricas de recursos da AWS• Criar e editar alertas para ser notificado sobre problemas

Monitorar o Amazon Keyspaces com o AmazonCloudWatchÉ possível monitorar o Amazon Keyspaces usando o CloudWatch, que coleta dados brutos e os processaem métricas legíveis quase em tempo real. Essas estatísticas são mantidas por 15 meses, de maneira quevocê possa acessar informações históricas e ter uma perspectiva melhor de como o aplicativo web ou oserviço está se saindo.

Você também pode definir alarmes que observam determinados limites e enviam notificações ou realizamações quando esses limites são atingidos. Para obter mais informações, consulte o .Amazônia CloudWatchGuia do usuário do.

Note

Para começar rapidamente com um pré-configurado CloudWatch painel mostrando métricascomuns para o Amazon Keyspaces, você pode usar umAWS CloudFormationmodelo disponívelemhttps://github.com/aws-samples/amazon-keyspaces-cloudwatch-cloudformation-templates.

Tópicos• Como faço para usar métricas do Amazon Keyspaces? (p. 226)• Métricas e dimensões do Amazon Keyspaces (p. 227)• Criar CloudWatch Alarmes para monitorar o Amazon Keyspaces (p. 239)

Como faço para usar métricas do Amazon Keyspaces?As métricas informadas pelo Amazon Keyspaces fornecem informações que você pode analisar dediferentes maneiras. A lista a seguir mostra alguns usos comuns para as métricas. Essas são sugestões

226

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

para você começar, e não uma lista abrangente. Para obter mais informações sobre métricas e retenção,consulteMétricas.

Como? Métricas relevantes

Como posso determinar seocorreu algum erro do sistema?

Você pode monitorarSystemErrorspara determinar se algumasolicitação resultou em um código de erro do servidor. Normalmente,essa métrica deve ser igual a zero. Se não for o caso, talvez vocêdeva investigar.

Como posso comparar aleitura média provisionadacom a capacidade de leituraconsumida?

Para monitorar a capacidade média de leitura provisionada e acapacidade de leitura consumida

1. DefinaPeríodopeloConsumedReadCapacityUnitseProvisionedReadCapacityUnitsParao intervalo que você deseja monitorar.

2. AltereoEstatísticapeloConsumedReadCapacityUnitsdesdeAverageparaSum.

3. Criar um novo vazioExpressão matemática.4. NoDetalhesseção da nova expressão matemática, insira

oIddoConsumedReadCapacityUnitse divida a métricapelo CloudWatch PERÍODOfunção da métrica (metric_id/(PERÍODO(metric_id)).

5. DesmarqueConsumedReadCapacityUnits.

Agora você pode comparar sua capacidade de leitura consumidamédia com a capacidade provisionada. Para obter mais informaçõessobre funções aritméticas básicas e como criar uma série temporal,consulteUsar matemática métricas.

Como posso comparar agravação provisionada médiacom a capacidade de gravaçãoconsumida?

Para monitorar a capacidade média de gravação provisionada e acapacidade de gravação consumida

1. DefinaPeríodopeloConsumedWriteCapacityUnitseProvisionedWriteCapacityUnitsParao intervalo que você deseja monitorar.

2. AltereoEstatísticapeloConsumedWriteCapacityUnitsdesdeAverageparaSum.

3. Criar um novo vazioExpressão matemática.4. NoDetalhesseção da nova expressão matemática, insira

oIddoConsumedWriteCapacityUnitse divida a métricapelo CloudWatch PERÍODOfunção da métrica (metric_id/(PERÍODO(metric_id)).

5. DesmarqueConsumedWriteCapacityUnits.

Agora você pode comparar sua capacidade de gravação consumidamédia com a capacidade provisionada. Para obter mais informaçõessobre funções aritméticas básicas e como criar uma série temporal,consulteUsar matemática métricas.

Métricas e dimensões do Amazon KeyspacesQuando você interage com o Amazon Keyspaces, ele envia as seguintes métricas e dimensões para oAmazon CloudWatch. Todas as métricas são agregadas e relatadas a cada minuto. É possível usar osprocedimentos a seguir para visualizar as métricas do Amazon Keyspaces.

227

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Para visualizar métricas usando o CloudWatch console

As métricas são agrupadas primeiro pelo namespace do serviço e, em seguida, por várias combinações dedimensão dentro de cada namespace.

1. Abrir o CloudWatch Console do emhttps://console.aws.amazon.com/cloudwatch/.2. Se necessário, altere a região da . Na barra de navegação, selecione a região na qual oAWSos

recursos residem. Para mais informações, consulte Endpoints de serviço da AWS.3. No painel de navegação, escolha Metrics (Métricas).4. SobTodas as métricas, selecioneAWS/Cassandra.

Para visualizar métricas usando a CLI da AWS

• Em um prompt de comando, use o seguinte comando.

aws cloudwatch list-metrics --namespace "AWS/Cassandra"

Métricas e dimensões do Amazon KeyspacesAs métricas e as dimensões que o Amazon Keyspaces envia para a Amazon CloudWatch estão listadosaqui.

Métricas do Amazon Keyspaces

Amazônia CloudWatch Agrega métricas do Amazon Keyspaces em intervalos de um minuto.

Nem todas as estatísticas, como Average ou Sum, são aplicáveis a todas as métricas. No entanto, todosesses valores estão disponíveis por meio do console do Amazon Keyspaces ou usando o CloudWatchConsole do,AWS CLI, ouAWSSDKs para todas as métricas. Na tabela a seguir, cada métrica tem uma listade estatísticas válidas aplicáveis a essa métrica.

Métrica Descrição

AccountMaxTableLevelReads O número máximo de unidades de capacidade de leituraque podem ser usadas por uma tabela de uma conta. Paratabelas sob demanda, esse valor limita o máximo de unidadesde solicitação de leitura que uma tabela pode usar.

Unidades: Count

Estatística válida:

• Maximum: o número máximo de unidades de capacidade deleitura que podem ser usadas por uma tabela da conta.

AccountMaxTableLevelWrites O número máximo de unidades de capacidade de gravaçãoque podem ser usadas por uma tabela de uma conta. Paratabelas sob demanda, esse valor limita o máximo de unidadesde solicitação de gravação que uma tabela pode usar.

Unidades: Count

Estatística válida:

• Maximum: o número máximo de unidades de capacidade degravação que podem ser usadas por uma tabela da conta.

228

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

AccountProvisionedReadCapacityUtilizationO percentual de unidades de capacidade de leituraprovisionada utilizadas por uma conta.

Unidades: Percent

Estatística válida:

• Maximum: o percentual máximo de unidades de capacidadede leitura provisionada utilizadas pela conta.

• Minimum: o percentual mínimo de unidades de capacidadede leitura provisionada utilizadas pela conta.

• Average: o percentual médio de unidades de capacidadede leitura provisionada utilizadas pela conta. A métrica épublicada para intervalos de cinco minutos. Portanto, sevocê ajustar rapidamente as unidades de capacidade deleitura provisionada, essa estatística poderá não refletir amédia real.

AccountProvisionedWriteCapacityUtilizationO percentual de unidades de capacidade de gravaçãoprovisionada utilizadas por uma conta.

Unidades: Percent

Estatística válida:

• Maximum: o percentual máximo de unidades de capacidadede gravação provisionada utilizadas pela conta.

• Minimum: o percentual mínimo de unidades de capacidadede gravação provisionada utilizadas pela conta.

• Average: o percentual médio de unidades de capacidadede gravação provisionada utilizadas pela conta. A métricaé publicada para intervalos de cinco minutos. Portanto, sevocê ajustar rapidamente as unidades de capacidade degravação provisionada, essa estatística poderá não refletira média real.

BillableTableSizeInBytes O tamanho faturável da tabela em bytes. É a soma dotamanho codificado de todas as linhas na tabela. Essamétrica ajuda você a rastrear os custos de armazenamentode mesa ao longo do tempo.

Unidades: Bytes

Dimensões: Keyspace, TableName

Estatística válida:

• Maximum— O tamanho máximo de armazenamento databela.

• Minimum— O tamanho mínimo de armazenamento databela.

• Average— O tamanho médio de armazenamento databela. Essa métrica é calculada em intervalos de 4 a 6horas.

229

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

ConditionalCheckFailedRequests O número de solicitações de gravação de transaçãoleve com falha (LWT). As operações INSERT, UPDATE eDELETE permitem que você forneça uma condição lógicaque deve ser avaliada como true antes que a operaçãopossa prosseguir. Se essa condição for avaliada comofalsa,ConditionalCheckFailedRequestsé incrementadoem um.

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Minimum

• Maximum

• Average

• SampleCount

• Sum

230

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

ConsumedReadCapacityUnits O número de unidades de capacidade de leitura consumidasno período especificado. Para obter mais informações,consulteModo de capacidade de leitura/gravação.

Note

Para entender sua utilização média de throughputpor segundo, use oSumPara calcular a taxa detransferência consumida para o período de umminuto. Em seguida, divida a soma pelo númerode segundos em um minuto (60) para calcular amédiaConsumedReadCapacityUnitspor segundo(reconhecendo que essa média não destaca picosgrandes, mas breves, na atividade de leitura queocorreram durante esse minuto). Para obter maisinformações sobre como comparar a capacidadede leitura média consumida com a capacidade deleitura provisionada, consultethe section called “Usarmétricas do ” (p. 226)

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Minimum: o número mínimo de unidades de capacidade deleitura consumidas por qualquer solicitação individual paraa tabela.

• Maximum: o número máximo de unidades de capacidade deleitura consumidas por qualquer solicitação individual paraa tabela.

• Average: a capacidade de leitura por solicitação médiaconsumida.

Note

O valor Average é influenciado por períodos deinatividade em que o valor da amostra será zero.

• Sum: o total de unidades de capacidade de leituraconsumidas. Essa é a estatística mais útil para a métricaConsumedReadCapacityUnits.

• SampleCount: o número de solicitações ao AmazonKeyspaces, mesmo que nenhuma capacidade de leituratenha sido consumida.

Note

O valor SampleCount é influenciado por períodosde inatividade em que o valor da amostra serázero.

231

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

ConsumedWriteCapacityUnits O número de unidades de capacidade de gravaçãoconsumidas no período especificado. É possível recuperara capacidade de gravação consumida total de uma tabela.Para obter mais informações, consulteModo de capacidadede leitura/gravação.

Note

Para entender sua utilização média de throughputpor segundo, use oSumPara calcular a taxa detransferência consumida para o período de umminuto. Em seguida, divida a soma pelo númerode segundos em um minuto (60) para calculara médiaConsumedWriteCapacityUnitsporsegundo (reconhecendo que essa média nãodestaca picos grandes, mas breves, na atividadede gravação que ocorreram durante esse minuto).Para obter mais informações sobre como comparara capacidade de gravação média consumida com acapacidade de gravação provisionada, consultethesection called “Usar métricas do ” (p. 226)

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Minimum: o número mínimo de unidades de capacidadede gravação consumidas por qualquer solicitação individualpara a tabela.

• Maximum: o número máximo de unidades de capacidadede gravação consumidas por qualquer solicitação individualpara a tabela.

• Average: a capacidade de gravação por solicitação médiaconsumida.

Note

O valor Average é influenciado por períodos deinatividade em que o valor da amostra será zero.

• Sum: o total de unidades de capacidade de gravaçãoconsumidas. Essa é a estatística mais útil para a métricaConsumedWriteCapacityUnits.

• SampleCount: o número de solicitações ao AmazonKeyspaces, mesmo que nenhuma capacidade de gravaçãotenha sido consumida.

Note

O valor SampleCount é influenciado por períodosde inatividade em que o valor da amostra serázero.

232

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

MaxProvisionedTableReadCapacityUtilizationA porcentagem de unidades de capacidade de leituraprovisionada utilizadas pela tabela de leitura provisionadamais alta de uma conta.

Unidades: Percent

Estatística válida:

• Maximum: o percentual máximo de unidades de capacidadede leitura provisionada utilizadas pela tabela de leituraprovisionada mais alta da conta.

• Minimum: o percentual mínimo de unidades de capacidadede leitura provisionada utilizadas pela tabela de leituraprovisionada mais alta da conta.

• Average: o percentual médio de unidades de capacidadede leitura provisionada utilizadas pela tabela de leituraprovisionada mais alta da conta. A métrica é publicadapara intervalos de cinco minutos. Portanto, se vocêajustar rapidamente as unidades de capacidade de leituraprovisionada, essa estatística poderá não refletir a médiareal.

MaxProvisionedTableWriteCapacityUtilizationA porcentagem de capacidade de gravação provisionadautilizada pela tabela de gravação provisionada mais alta deuma conta.

Unidades: Percent

Estatística válida:

• Maximum: o percentual máximo de unidades de capacidadede gravação provisionada utilizadas pela tabela degravação provisionada mais alta da conta.

• Minimum: o percentual mínimo de unidades de capacidadede gravação provisionada utilizadas pela tabela degravação provisionada mais alta da conta.

• Average: o percentual médio de unidades de capacidadede gravação provisionada utilizadas pela tabela degravação provisionada mais alta da conta. A métrica épublicada para intervalos de cinco minutos. Portanto, sevocê ajustar rapidamente as unidades de capacidade degravação provisionada, essa estatística poderá não refletira média real.

233

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

PerConnectionRequestRateExceededSolicitações ao Amazon Keyspaces que excedem a cota detaxa de solicitação por conexão. Cada conexão de clientecom o Amazon Keyspaces pode oferecer suporte a até 3000solicitações CQL por segundo. Os clientes podem criar váriasconexões para aumentar a taxa de transferência.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• SampleCount

• Sum

ProvisionedReadCapacityUnits O número de unidades de capacidade de leitura provisionadapara uma tabela.

OTableNameDimensão retornaoProvisionedReadCapacityUnitspara a mesa.

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Minimum: a configuração mais baixa para a capacidadede leitura provisionada. Se você usar ALTER TABLE paraaumentar a capacidade de leitura, esta métrica mostraráo valor mais baixo de ReadCapacityUnits provisionadodurante esse período.

• Maximum: a configuração mais alta para a capacidade deleitura provisionada. Se você usar ALTER TABLE paradiminuir a capacidade de leitura, esta métrica mostraráo valor mais alto de ReadCapacityUnits provisionadodurante esse período.

• Average: a capacidade média de leitura provisionada. Amétrica ProvisionedReadCapacityUnits é publicadapara intervalos de cinco minutos. Portanto, se vocêajustar rapidamente as unidades de capacidade de leituraprovisionada, essa estatística poderá não refletir a médiareal.

234

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

ProvisionedWriteCapacityUnits O número de unidades de capacidade de gravaçãoprovisionada para uma tabela.

OTableNameDimensão retornaoProvisionedWriteCapacityUnitspara a mesa.

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Minimum: a configuração mais baixa para capacidade degravação provisionada. Se você usar ALTER TABLE paraaumentar a capacidade de gravação, esta métrica mostraráo valor mais baixo de WriteCapacityUnits provisionadodurante esse período.

• Maximum: a configuração mais alta para a capacidade degravação provisionada. Se você usar ALTER TABLE paradiminuir a capacidade de gravação, esta métrica mostraráo valor mais alto de WriteCapacityUnits provisionadodurante esse período.

• Average: a capacidade média de gravação provisionada. Amétrica ProvisionedWriteCapacityUnits é publicadapara intervalos de cinco minutos. Portanto, se você ajustarrapidamente as unidades de capacidade de gravaçãoprovisionada, essa estatística poderá não refletir a médiareal.

ReadThrottleEvents Solicitações ao Amazon Keyspaces que excedem acapacidade de leitura provisionada de uma tabela.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• SampleCount

• Sum

235

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

ReturnedItemCount O número de linhas retornado por váriaslinhasSELECTConsultas durante o período especificado.Várias linhasSELECTconsultas são consultas que não contêma chave primária totalmente qualificada, como varreduras detabela completas e consultas de intervalo.

O número de linhasdevolvidoNão é necessariamente omesmo que o número de linhas avaliadas. Por exemplo,suponha que você solicitou umSELECT *comALLOWFILTERINGem uma tabela que tinha 100 linhas, masespecificou umWHEREcláusula que estreitou os resultadospara que apenas 15 linhas fossem retornadas. Nesse caso,a resposta doSELECTconteria umScanCountde 100 eumCountde 15 linhas retornadas.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• Minimum

• Maximum

• Average

• SampleCount

• Sum

StoragePartitionThroughputCapacityExceededSolicitações para uma partição de armazenamento doAmazon Keyspaces que excedem a capacidade dethroughput da partição. As partições de armazenamentodo Amazon Keyspaces podem suportar até 1000 WCU/WRU por segundo ou 3000 RCU/RRU por segundo, ou umacombinação linear dos dois. Recomendamos revisar seumodelo de dados para distribuir o tráfego de leitura/gravaçãoem mais partições para mitigar essas exceções.

Note

As partições lógicas do Amazon Keyspaces podemabranger várias partições de armazenamento e sãopraticamente ilimitadas em tamanho.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• SampleCount

• Sum

236

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

SuccessfulRequestCount O número de solicitações bem-sucedidas processadas noperíodo especificado.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• SampleCount

SuccessfulRequestLatency As solicitações bem-sucedidas para oAmazon Keyspaces durante o períodoespecificado.SuccessfulRequestLatencyPode fornecerdois tipos diferentes de informações:

• O tempo decorrido para solicitações bem-sucedidas(Minimum, Maximum, Sum ou Average).

• O número de solicitações bem-sucedidas (SampleCount).

SuccessfulRequestLatencyReflete a atividade somenteno Amazon Keyspaces e não leva em consideração a latênciada rede nem a atividade no lado do cliente.

Unidades: Milliseconds

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• Minimum

• Maximum

• Average

• SampleCount

SystemErrors As solicitações para o Amazon Keyspaces que geramumServerErrorDurante o período especificado.UMAServerErrorGeralmente indica um erro interno doserviço do.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• Sum

• SampleCount

237

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Monitoramento com CloudWatch

Métrica Descrição

TTLDeletes As unidades consumidas para excluir ou atualizardados seguidos usando Time to Live (TTL).CadaTTLDeletefornece capacidade suficiente para excluirou atualizar até 1 KB de dados por linha. Por exemplo,para atualizar uma linha que armazena 2,5 KB de dadose excluir uma ou mais colunas dentro da linha ao mesmotempo, é necessário 3 exclusões TTL. Ou, para excluir umalinha inteira que contém 3,5 KB de dados, é necessário 4exclusões TTL.

Unidades: Count

Dimensões: Keyspace, TableName

Estatística válida:

• Sum— O número total de TTLDeletes consumidos em umperíodo de tempo.

UserErrors Solicitações ao Amazon Keyspaces que geramumInvalidRequestErro durante o período especificado.UmaInvalidRequestGeralmente indica um erro no ladodo cliente, como uma combinação inválida de parâmetros,uma tentativa de atualizar uma tabela inexistente ou umaassinatura de solicitação incorreta.

UserErrorsrepresenta o agregado de solicitações inválidaspara o atualRegião da AWSe o atualConta da AWS.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• Sum

• SampleCount

WriteThrottleEvents Solicitações ao Amazon Keyspaces que excedem acapacidade de gravação provisionada de uma tabela.

Unidades: Count

Dimensões: Keyspace, TableName, Operation

Estatística válida:

• SampleCount

• Sum

Dimensões para métricas do Amazon Keyspaces

As métricas do Amazon Keyspaces são qualificadas de acordo com os valores para a conta, nome databela ou operação. Você pode usar o CloudWatch Console para recuperar dados do Amazon Keyspacesao longo de qualquer uma das dimensões da tabela a seguir.

238

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro de chamadas de API do

Amazon Keyspaces comAWS CloudTrail

Dimensão Descrição

Keyspace Esta dimensão limita os dados a um espaço de chave específico.Este valor pode ser qualquer espaço de chave na região atual e naatualConta da AWS.

Operation Esta dimensão limita os dados a uma das operações CQL doAmazon Keyspaces, comoINSERTouSELECToperações.

TableName Esta dimensão limita os dados a uma tabela específica. Este valorpode ser qualquer nome de tabela na região atual e na atualContada AWS. Se o nome da tabela não for exclusivo na conta, vocêtambém deverá especificarKeyspace.

Criar CloudWatch Alarmes para monitorar o Amazon KeyspacesVocê pode criar uma Amazon CloudWatch Alarme do Amazon Keyspaces que envia uma mensagemdo Amazon Simple Notification Service (Amazon SNS) quando o alarme muda de estado. Um alarmeobserva uma única métrica por um período tempo que você especifica. Ele executa uma ou mais açõescom base no valor da métrica em relação a um limite especificado ao longo de vários períodos. A ação éuma notificação enviada para um tópico do Amazon SNS ou uma política de Auto Scaling.

Os alertas invocam ações apenas para alterações de estado mantidas. CloudWatch Os alarmes do nãoinvocam ações só porque estão em um determinado estado. O estado deve ter sido alterado e mantido poruma quantidade especificada de períodos.

Para obter mais informações sobre como criar CloudWatch alarmes, vejaUsar a Amazon CloudWatchalarmesnoAmazônia CloudWatch Guia do usuário do.

Registro de chamadas de API do Amazon KeyspacescomAWS CloudTrailO Amazon Keyspaces está integrado comAWS CloudTrail, um serviço que fornece um registro das açõesexecutadas por um usuário, uma função ou umAWSserviço no Amazon Keyspaces. CloudTrailCaptura aschamadas de API da Linguagem de Definição de Dados (DDL) para o Amazon Keyspaces como eventos.As chamadas capturadas incluem as chamadas do console do Amazon Keyspaces e as chamadas decódigo para as operações de API do Amazon Keyspaces.

Se você criar uma trilha, poderá habilitar a entrega contínua doCloudTrailEventos para um bucket doAmazon Simple Storage Service (Amazon S3), incluindo eventos do Amazon Keyspaces.

Se não configurar uma trilha, você ainda poderá visualizar os eventos mais recentes no console doCloudTrail em Event history (Histórico de eventos). Usando as informações coletadas peloCloudTrail,determine a solicitação feita ao Amazon Keyspaces, o endereço IP da solicitação, quem fez a solicitação,quem fez a solicitação, quando ela foi feita e outros detalhes.

Para saber mais sobre CloudTrail, consulte o Guia do usuário de AWS CloudTrail.

Informações do Amazon Keyspaces noCloudTrailCloudTrailO está habilitado noConta da AWSQuando você cria a conta. Quando uma atividade DDL ocorreno Amazon Keyspaces, essa atividade é registrada em umCloudTrailevento junto com outrosAWSEventosde serviço da emHistórico do evento. A tabela a seguir mostra as instruções DDL que são registradas para

239

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro de chamadas de API do

Amazon Keyspaces comAWS CloudTrailo Amazon Keyspaces. Observe que as instruções na linguagem de manipulação de dados (DML) nãoestão conectadasCloudTrail.

CloudTrail eventName Declaração Ação CQL AWSAção SDK

CreateTable DDL CreateTable CreateTable

CreateKeyspace DDL CreateKeyspace CreateKeyspace

DropKeyspace DDL DropKeyspace DeleteKeyspace

DropTable DDL DropTable DeleteTable

AlterTable DDL AlterTable UpdateTable,TagResource,UntagResource

nãoCloudTraileventos DML Select GetKeyspace,GetTable,ListKeyspaces,ListTablesListTagsForResource

Cada ação logadaCloudTrailinclui parâmetros de solicitação que são sempre expressos na linguagem deconsulta CQL.

Você pode visualizar, pesquisar e fazer download de eventos recentes em suaConta da AWS. Para obtermais informações, consulte Visualizar eventos com o histórico de eventos do CloudTrail.

Para obter um registro contínuo de eventos em suaConta da AWS, incluindo eventos do AmazonKeyspaces, crie uma trilha. UMAtrilhaativaCloudTrailPara fornecer arquivos de log a um bucket do AmazonS3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as regiões da AWS. Atrilha registra em log eventos de todas as regiões na partição da AWS e entrega os arquivos de log parao bucket do Amazon S3 especificado por você. Além disso, é possível configurar outros serviços da AWSpara analisar mais profundamente e agir sobre os dados de evento coletados nos logs do CloudTrail.

Para obter mais informações, consulte os seguintes tópicos no Guia do usuário do AWS CloudTrail:

• Visão geral da criação de uma trilha• Serviços e integrações compatíveis com o CloudTrail• Configurar notificações do Amazon SNS para o CloudTrail• Receber arquivos de log do CloudTrail de várias regiões• Receber arquivos de log do CloudTrail de várias contas

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações deidentidade ajudam a determinar:

• Se a solicitação foi feita com credenciais de usuário raiz ou do AWS Identity and Access Management(IAM)

• Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuáriofederado

• Se a solicitação foi feita por outro serviço da AWS

Para obter mais informações, consulte Elemento userIdentity do CloudTrail.

240

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro de chamadas de API do

Amazon Keyspaces comAWS CloudTrail

Noções básicas sobre entradas do arquivo de log do AmazonKeyspacesUma trilha é uma configuração que permite a entrega de eventos como arquivos de log a um bucket doAmazon S3 especificado. Os arquivos de log do CloudTrail contêm uma ou mais entradas de log. Umevento representa uma única solicitação de qualquer fonte e inclui informações sobre a ação solicitada, adata e a hora da ação, os parâmetros de solicitação e assim por diante. Os arquivos de log do CloudTrailnão são um rastreamento de pilha ordenada de chamadas de API pública. Dessa forma, eles não sãoexibidos em uma ordem específica.

O exemplo a seguir mostra umCloudTrailEntrada de log do que demonstraaCreateKeyspace,DropKeyspace,CreateTable, eDropTableações:

{

"Records": [ { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:alice", "arn": "arn:aws:sts::111122223333:assumed-role/users/alice", "accountId": "111122223333", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-01-15T18:47:56Z" } } }, "eventTime": "2020-01-15T18:53:04Z", "eventSource": "cassandra.amazonaws.com", "eventName": "CreateKeyspace", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.24.72", "userAgent": "Cassandra Client/ProtocolV4", "requestParameters": { "rawQuery": "\n\tCREATE KEYSPACE \"mykeyspace\"\n\tWITH\n\t\tREPLICATION = {'class': 'SingleRegionStrategy'}\n\t\t", "keyspaceName": "mykeyspace" }, "responseElements": null, "requestID": "bfa3e75d-bf4d-4fc0-be5e-89d15850eb41", "eventID": "d25beae8-f611-4229-877a-921557a07bb9", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::Cassandra::Keyspace", "ARN": "arn:aws:cassandra:us-east-2:111122223333:/keyspace/mykeyspace/" } ], "eventType": "AwsApiCall", "apiVersion": "3.4.4", "recipientAccountId": "111122223333"

241

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro de chamadas de API do

Amazon Keyspaces comAWS CloudTrail }, { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:alice", "arn": "arn:aws:sts::111122223333:assumed-role/users/alice", "accountId": "111122223333", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-01-15T18:47:56Z" } } }, "eventTime": "2020-01-15T19:28:39Z", "eventSource": "cassandra.amazonaws.com", "eventName": "DropKeyspace", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.24.73", "userAgent": "Cassandra Client/ProtocolV4", "requestParameters": { "rawQuery": "DROP KEYSPACE \"mykeyspace\"", "keyspaceName": "mykeyspace" }, "responseElements": null, "requestID": "66f3d86a-56ae-4c29-b46f-abcd489ed86b", "eventID": "e5aebeac-e1dd-41e3-a515-84fe6aaabd7b", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::Cassandra::Keyspace", "ARN": "arn:aws:cassandra:us-east-2:111122223333:/keyspace/mykeyspace/" } ], "eventType": "AwsApiCall", "apiVersion": "3.4.4", "recipientAccountId": "111122223333" }, { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:alice", "arn": "arn:aws:sts::111122223333:assumed-role/users/alice", "accountId": "111122223333", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false",

242

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorRegistro de chamadas de API do

Amazon Keyspaces comAWS CloudTrail "creationDate": "2020-01-15T18:47:56Z" } } }, "eventTime": "2020-01-15T18:55:24Z", "eventSource": "cassandra.amazonaws.com", "eventName": "CreateTable", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.24.72", "userAgent": "Cassandra Client/ProtocolV4", "requestParameters": { "rawQuery": "\n\tCREATE TABLE \"mykeyspace\".\"mytable\"(\n\t\t\"ID\" int,\n\t\t\"username\" text,\n\t\t\"email\" text,\n\t\t\"post_type\" text,\n\t\tPRIMARY KEY((\"ID\", \"username\", \"email\")))", "keyspaceName": "mykeyspace", "tableName": "mytable" }, "responseElements": null, "requestID": "5f845963-70ea-4988-8a7a-2e66d061aacb", "eventID": "fe0dbd2b-7b34-4675-a30c-740f9d8d73f9", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::Cassandra::Table", "ARN": "arn:aws:cassandra:us-east-2:111122223333:/keyspace/mykeyspace/table/mytable" } ], "eventType": "AwsApiCall", "apiVersion": "3.4.4", "recipientAccountId": "111122223333" }, { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:alice", "arn": "arn:aws:sts::111122223333:assumed-role/users/alice", "accountId": "111122223333", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-01-15T18:47:56Z" } } }, "eventTime": "2020-01-15T19:27:59Z", "eventSource": "cassandra.amazonaws.com", "eventName": "DropTable", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.24.66", "userAgent": "Cassandra Client/ProtocolV4", "requestParameters": { "rawQuery": "DROP TABLE \"mykeyspace\".\"mytable\"", "keyspaceName": "mykeyspace", "tableName": "mytable" },

243

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Validação de conformidade

"responseElements": null, "requestID": "025501b0-3582-437e-9d18-8939e9ef262f", "eventID": "1a5cbedc-4e38-4889-8475-3eab98de0ffd", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::Cassandra::Table", "ARN": "arn:aws:cassandra:us-east-2:111122223333:/keyspace/mykeyspace/table/mytable" } ], "eventType": "AwsApiCall", "apiVersion": "3.4.4", "recipientAccountId": "111122223333" } ]

}

Validação da conformidade para o AmazonKeyspaces (para Apache Cassandra)

Auditores terceiros avaliam a segurança e a conformidade do Amazon Keyspaces (para ApacheCassandra) como parte de váriosAWSProgramas de conformidade da. Dentre elas estão:

• ISO/IEC 27001:2013, 27017:2015, 27018:2019 e ISO/IEC 9001:2015. Para obter mais informações,consulteAWSCertificações e serviços ISO e CSA STAR.

• Controles do Sistema e da Organização (CSO)• PCI (Payment Card Industry)• Federal Risk and Authorization Management Program (FedRAMP) Moderado• Health Insurance Portability and Accountability Act (HIPAA)

Para saber se o Amazon Keyspaces ou outrosServiços da AWSestão dentro do escopo de programas deconformidade específicos, consulteAWSServiços da no escopo por programa de conformidade. Para obterinformações gerais, consulte Programas de conformidade da AWS.

É possível fazer download de relatórios de auditoria de terceiros usando o AWS Artifact. Para obter maisinformações, consulte Downloading Reports in AWS Artifact.

Sua responsabilidade de conformidade ao usar o Serviços da AWS é determinada pela confidencialidadedos seus dados, pelos objetivos de conformidade da sua empresa e pelos regulamentos e leis aplicáveis.A AWS fornece os seguintes recursos para ajudar com a conformidade:

• Guias de referência rápida de conformidade e segurança: esses guias de implantação abordam asconsiderações de arquitetura e fornecem etapas para implantação de ambientes de lista de referênciana AWS concentrados em conformidade e segurança.

• Architecting for HIPAA Security and Compliance on Amazon Web Services (Arquitetura para segurançae conformidade com HIPAA no Amazon Web Services): esse whitepaper descreve como as empresaspodem usar a AWS para criar aplicações adequadas aos padrões HIPAA.

Note

Nem todos os Serviços da AWS estão qualificados pela HIPAA. Para mais informações,consulte a Referência dos serviços qualificados pela HIPAA.

244

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Resiliência

• Recursos de conformidade da AWS: essa coleção de manuais e guias pode ser aplicada a seu setor elocal.

• Avaliar recursos com regras no AWS Config Developer Guide (Guia do desenvolvedor do CCI): o serviçoAWS Config avalia como as configurações de recursos estão em conformidade com práticas internas,diretrizes do setor e regulamentos.

• AWS Security Hub: esse AWS service (Serviço da AWS) fornece uma visão abrangente do estadode sua segurança na AWS que ajuda você a conferir sua conformidade com padrões e práticasrecomendadas de segurança do setor.

• AWS Audit Manager: esse AWS service (Serviço da AWS) ajuda a auditar continuamente seu uso daAWS para simplificar a forma como você gerencia os riscos e a conformidade com regulamentos epadrões do setor.

Resiliência e recuperação de desastres no AmazonKeyspaces

A infraestrutura global da AWS se baseia em Regiões da AWS e zonas de disponibilidade. A Regiõesda AWS oferece várias zonas de disponibilidade separadas e isoladas fisicamente que são conectadascom baixa latência, altas taxas de transferência e em redes altamente redundantes. Com as zonas dedisponibilidade, você pode projetar e operar aplicativos e bancos de dados que executam o failoverautomaticamente entre as zonas de disponibilidade sem interrupção. As zonas de disponibilidade são maisaltamente disponíveis, tolerantes a falhas e escaláveis que uma ou várias infraestruturas de data centertradicionais.

O Amazon Keyspaces replica dados automaticamente três vezes em váriosAWSZonas de disponibilidadeno mesmoRegião da AWSPara maior durabilidade e alta disponibilidade.

Para obter mais informações sobreRegiões da AWSe Zonas de disponibilidade, consulteAWSinfraestruturaglobal.

Além doAWSInfraestrutura global do, o Amazon Keyspaces oferece recuperação point-in-time (PITR) paraajudar a atender às necessidades de resiliência e backup de dados.

A PITR ajuda a proteger as tabelas do Amazon Keyspaces do de operações acidentais de gravaçãoou exclusão, fornecendo backups contínuos dos dados da tabela. Para obter mais informações,consulteRecuperação point-in-time do Amazon Keyspaces.

Segurança da infraestrutura no Amazon KeyspacesComo um serviço gerenciado, o Amazon Keyspaces (para Apache Cassandra) é protegido peloAWSOsprocedimentos de segurança de rede global da descritos noAmazon Web Services: Visão geral dosprocessos de segurançawhitepaper.

Você usaAWSAs chamadas à API publicadas pela para acessar o Amazon Keyspaces por meio da rede.Os clientes devem oferecer suporte a Transport Layer Security (TLS) 1.0 ou posterior. RecomendamosTLS 1.2 ou posterior. Os clientes também devem ter suporte a conjuntos de criptografia com perfectforward secrecy (PFS) como Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic Curve Diffie-Hellman(ECDHE). A maioria dos sistemas modernos, como Java 7 e versões posteriores, comporta esses modos.

O Amazon Keyspaces oferece suporte a dois métodos de autenticação de solicitações de clientes. Oprimeiro método usa credenciais específicas do serviço, que são credenciais baseadas em senha geradaspara um específicoAWS Identity and Access ManagementUsuário (IAM). Você pode criar e gerenciar a

245

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsar VPC endpoints da interface do

senha usando o console do IAM, oAWS CLI, ou oAWSAPI. Para obter mais informações, consulteUso doIAM com o Amazon Keyspaces.

O segundo método usa um plugin de autenticação para o código aberto DataStax Driver Java paraCassandra. Este plugin permiteUsuários do IAM, funções e identidades federadasPara adicionarinformações de autenticação às solicitações da API do Amazon Keyspaces (para Apache Cassandra)usando oAWSProcesso do Signature versão 4 (SigV4). Para obter mais informações, consulte ??? (p. 16).

Você pode usar um VPC endpoint de interface para evitar que o tráfego entre sua Amazon VPC e oAmazon Keyspaces saia da rede da Amazon. Os VPC endpoints de interface são desenvolvidos peloAWSPrivateLink, umAWStecnologia que permite a comunicação privada entreAWSServiços da usando umaelastic network interface com IPs privados em sua Amazon VPC. Para obter mais informações, consultethe section called “Usar VPC endpoints da interface do ” (p. 246).

Usar o Amazon Keyspaces com VPC endpoints deinterfaceOs VPC endpoints de interface permitem comunicação privada entre a nuvem privada virtual (VPC)em execução no Amazon VPC e no Amazon Keyspaces. Os VPC endpoints de interface sãodesenvolvidos peloAWS PrivateLink, que é umAWSserviço que permite a comunicação privada entreVPCs eAWSServiços da .

AWS PrivateLinkIsso permite isso usando uma elastic network interface com endereços IP privados emsua VPC para que o tráfego de rede não saia da rede da Amazon. VPC endpoints de interface não exigemum gateway de Internet, dispositivo NAT, conexão VPN ou conexão do AWS Direct Connect. Para obtermais informações, consulteAmazon Virtual Private CloudeVPC endpoints de interface (AWS PrivateLink).

Tópicos• Usar VPC endpoints de interface para o Amazon Keyspaces (p. 246)• Preenchersystem.peersentradas de tabela com informações de endpoint da interface VPC (p. 246)• Controlar o acesso a endpoints da VPC de interface para Amazon Keyspaces (p. 247)• Disponibilidade (p. 249)• Políticas de VPC endpoint e recuperação point-in-time do Amazon Keyspaces (PITR) (p. 249)• Erros e avisos comuns (p. 250)

Usar VPC endpoints de interface para o Amazon KeyspacesÉ possível criar um VPC endpoint de interface para que o tráfego entre o Amazon Keyspaces e osrecursos da Amazon VPC comece a fluir por meio do VPC endpoint de interface. Para começar a usar,siga as etapas paraPara criar um endpoint de interface. Em seguida, edite o security group associado aoendpoint que você criou na etapa anterior e configure uma regra de entrada para a porta 9142. Para obtermais informações, consulteAdicionar, remover e atualizar regras.

Preenchersystem.peersentradas de tabela com informaçõesde endpoint da interface VPCDrivers Apache Cassandra usam osystem.peersPara consultar informações sobre o nó sobre o cluster.Os drivers Cassandra usam as informações do nó para equilibrar a carga das conexões e repetir asoperações. O Amazon Keyspaces preenche nove entradas nosystem.peerstabela automaticamentepara clientes que se conectam por meio do endpoint público.

Para fornecer aos clientes que se conectam por meio de endpoints de interface VPC com funcionalidadesemelhante, o Amazon Keyspaces preenche osystem.peerstabela em sua conta com uma entrada para

246

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsar VPC endpoints da interface do

cada zona de disponibilidade em que um endpoint de VPC está disponível. Para pesquisar e armazenarendpoints de VPC de interface disponíveis nosystem.peers, o Amazon Keyspaces exige que vocêconceda à entidade do IAM usada para se conectar ao Amazon Keyspaces permissões de acesso paraconsultar sua VPC para obter informações de endpoint e interface de rede.

Important

Preencher osystem.peerscom sua interface disponível VPC endpoints melhora obalanceamento de carga e aumenta a taxa de transferência de leitura/gravação. É recomendadopara todos os clientes que acessam o Amazon Keyspaces usando endpoints de interface VPC e énecessário para o Apache Spark.

Para conceder à entidade do IAM usada para se conectar ao Amazon Keyspaces permissões parapesquisar as informações necessárias do VPC endpoint da interface, você pode atualizar sua função oupolítica de usuário do IAM existente ou criar uma nova política do IAM, conforme mostrado no exemplo aseguir.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"ListVPCEndpoints", "Effect":"Allow", "Action":[ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcEndpoints" ], "Resource":"*" } ]}

Para confirmar se a política foi configurada corretamente, consulte osystem.peerstabelapara ver as informações de rede. Se osystem.peersa tabela está vazia, pode indicarque a política não foi configurada com êxito ou que você excedeu a cota de taxa desolicitação paraDescribeNetworkInterfaceseDescribeVPCEndpointsAções deAPI.DescribeVPCEndpointscai noDescribe*categoria e é considerado umação nãomutante.DescribeNetworkInterfacescai no subconjunto deações não mutantes não filtradas e nãopaginadasE cotas diferentes se aplicam. Para obter mais informações, consulteSolicitar tamanhos de tokenbucket e taxas de recargaNa Referência de API do Amazon EC2.

Se você vir uma tabela vazia, tente novamente alguns minutos depois para descartar problemas de cota detaxa de solicitação. Se a consulta retornar resultados da tabela, sua política foi configurada corretamente.

Controlar o acesso a endpoints da VPC de interface paraAmazon KeyspacesCom as políticas de VPC endpoint, você pode controlar o acesso aos recursos de duas maneiras:

• Política do IAM— É possível controlar as solicitações, os usuários ou os grupos com permissão paraacessar o Amazon Keyspaces por meio de um VPC endpoint específico. Você pode fazer isso usandoumChave de condiçãoNa política anexada a um usuário, grupo ou função do IAM.

• Política de VPC— É possível controlar quais VPC endpoints têm acesso aos recursos do AmazonKeyspaces anexando políticas a eles. Para restringir o acesso a um espaço de chave ou tabelaespecífico para permitir somente o tráfego que vem por meio de um endpoint VPC específico, edite apolítica do IAM existente que restringe o acesso a recursos e adicione esse endpoint da VPC.

247

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsar VPC endpoints da interface do

Veja a seguir exemplos de políticas de endpoint para acessar os recursos do Amazon Keyspaces.

• Exemplo de política do IAM: Restrinja todo o acesso a uma tabela específica do Amazon Keyspaces, amenos que o tráfego venha do endpoint VPC especificado— Esse exemplo de política pode ser anexadoa um usuário, a uma função ou a um grupo do IAM. Ele restringe o acesso a uma tabela especificada doAmazon Keyspaces, a menos que o tráfego de entrada seja originado de um VPC endpoint especificado.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UserOrRolePolicyToDenyAccess", "Action": "cassandra:*", "Effect": "Deny", "Resource": [ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ], "Condition": { "StringNotEquals" : { "aws:sourceVpce": "vpce-abc123" } } } ]}

Note

Para restringir o acesso a uma tabela específica, você também deve incluir o acesso às tabelasdo sistema. As tabelas do sistema são somente leitura.

• Exemplo de política de VPC: Acesso somente leitura— Esse exemplo de política pode ser anexado aum VPC endpoint. (Para obter mais informações, consulteControlar o acesso aos recursos da AmazonVPC). Ele restringe as ações ao acesso somente leitura aos recursos do Amazon Keyspaces por meiodo endpoint da VPC ao qual ele está conectado.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnly", "Principal": "*", "Action": [ "cassandra:Select" ], "Effect": "Allow", "Resource": "*" } ]}

• Exemplo de política de VPC: Restringir acesso a uma tabela específica do Amazon Keyspaces—Esse exemplo de política pode ser anexado a um VPC endpoint. Ele restringe o acesso a uma tabelaespecífica por meio do VPC endpoint ao qual está anexado.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictAccessToTable", "Principal": "*", "Action": "cassandra:*", "Effect": "Allow",

248

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedorUsar VPC endpoints da interface do

"Resource": [ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ]}

Note

Para restringir o acesso a uma tabela específica, você também deve incluir o acesso às tabelasdo sistema. As tabelas do sistema são somente leitura.

DisponibilidadeO Amazon Keyspaces oferece suporte ao uso de endpoints de VPC de interface em todos osRegiões daAWSonde o serviço está disponível. Para obter mais informações, consulte ??? (p. 24).

Políticas de VPC endpoint e recuperação point-in-time doAmazon Keyspaces (PITR)Se você estiver usando políticas do IAM comChaves de condição dopara restringir o tráfego de entrada,a operação de restauração da tabela pode falhar. Por exemplo, se você restringir o tráfego de origem aendpoints de VPC específicos usandoaws:SourceVpcechaves de condição, a operação de restauraçãoda tabela falha. Para permitir que o Amazon Keyspaces execute uma operação de restauração em nomedo diretor, você deve adicionar umaws:ViaAWSServicechave de condição para sua política do IAM.Oaws:ViaAWSServicechave de condição permite acesso quando qualquerAWSO serviço faz umasolicitação usando as credenciais do principal. Para obter mais informações, consulteElementos de políticaJSON do IAM: Chave de condiçãonoManual do usuário do IAM. A política a seguir é um exemplo disso.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CassandraAccessForVPCE", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"false" }, "StringEquals":{ "aws:SourceVpce":[ "vpce-12345678901234567" ] } } }, { "Sid":"CassandraAccessForAwsService", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"true" }

249

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Análise de configuração e vulnerabilidadepara o Amazon Keyspaces

} } ]}

Erros e avisos comunsSe você estiver usando o Amazon Virtual Private Cloud e se conectar ao Amazon Keyspaces, talvez veja oseguinte aviso.

Control node cassandra.us-east-1.amazonaws.com/1.111.111.111:9142 has an entry for itself in system.peers: this entry will be ignored. This is likely due to a misconfiguration; please verify your rpc_address configuration in cassandra.yaml on all nodes in your cluster.

Esse aviso ocorre porque osystem.peersa tabela contém entradas para todos os endpoints da AmazonVPC que o Amazon Keyspaces tem permissões para visualizar, incluindo o endpoint da Amazon VPC peloqual você está conectado. Você pode ignorar isso com segurança.

Análise de configuração e vulnerabilidade para oAmazon Keyspaces

A AWS se encarrega das tarefas básicas de segurança, como aplicação de patches a bancos de dadose sistemas operacionais (SOs) convidados, configuração de firewalls e recuperação de desastres. Essesprocedimentos foram revisados e certificados por terceiros certificados. Para obter mais detalhes, consulteos seguintes recursos da :

• Modelo de responsabilidade compartilhada• Amazon Web Services: Visão geral dos processos de segurança(whitepaper)

Práticas recomendadas de segurança para oAmazon Keyspaces

O Amazon Keyspaces (para o Apache Cassandra) fornece uma série de recursos de segurança a seremconsiderados no desenvolvimento e na implementação das suas próprias políticas de segurança. Asmelhores práticas a seguir são diretrizes gerais e não representam uma solução completa de segurança.Como essas práticas recomendadas podem não ser adequadas ou suficientes no seu ambiente, trate-ascomo considerações úteis em vez de requisitos.

Tópicos• Práticas recomendadas de segurança preventiva para o Amazon Keyspaces (p. 250)• Práticas recomendadas de segurança de Detective para o Amazon Keyspaces (p. 252)

Práticas recomendadas de segurança preventiva parao Amazon KeyspacesAs seguintes práticas recomendadas de segurança são consideradas preventivas porque podem ajudar aantecipar e evitar incidentes de segurança no Amazon Keyspaces.

250

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Práticas recomendadas de segurança preventiva

Usar criptografia em repouso

O Amazon Keyspaces criptografa em repouso todos os dados de usuário armazenados em tabelasusando chaves de criptografia armazenadas noAWS Key Management Service(AWS KMS). Issooferece uma camada de proteção de dados adicional ao proteger seus dados contra acesso nãoautorizado ao armazenamento subjacente.

Por padrão, o Amazon Keyspaces usa umChave pertencente à AWSpara criptografar todas as suastabelas. Se essa chave não existir, ela é criada para você. As chaves padrão do serviço não podemser desabilitadas.

Como alternativa, você pode usar umChave gerenciada pelo clientePara criptografia em repouso. Paraobter mais informações, consulteCriptografia do Amazon Keyspaces em repouso.

Usar funções do IAM para autenticar o acesso ao Amazon Keyspaces

Para usuários, aplicativos e outrosAWSserviços para acessar o Amazon Keyspaces, eles devemincluir válidoAWSCredenciais em suasAWSSolicitações de API. Você não deve armazenar credenciaisda AWS diretamente na aplicação ou na instância do EC2. Essas são credenciais de longo prazo quenão são automaticamente alternadas e, portanto, podem ter impacto comercial significativo se foremcomprometidas. Uma função do IAM permite obter chaves de acesso temporárias que podem serusadas para acessar os serviços e recursos da AWS.

Para obter mais informações, consulte Funções do IAM.Usar políticas o IAM para autorizações de base do Amazon Keyspaces

Ao conceder permissões, você decide quem as recebe, a quais APIs do Amazon Keyspaces aspermissões se referem e as ações específicas que deseja permitir nesses recursos. A implementaçãodo privilégio mínimo é fundamental para reduzir os riscos de segurança e o impacto que pode resultarde erros ou intenções mal-intencionadas.

Anexe políticas de permissões para identidades do IAM (ou seja, usuários, grupos e funções) e, dessaforma, dê permissões para eles executarem operações em recursos do Amazon Keyspaces.

Para isso, você pode usar o seguinte:• AWSpolíticas gerenciadas (predefinidas)• Políticas gerenciadas pelo cliente

Uso de condições de política do IAM para controle de acesso refinado

Ao conceder permissões no Amazon Keyspaces, você pode especificar as condições que determinamcomo uma política de permissões entra em vigor. A implementação do privilégio mínimo é fundamentalpara reduzir os riscos de segurança e o impacto que pode resultar de erros ou intenções mal-intencionadas.

É possível especificar as condições ao conceder permissões usando uma política do IAM. Porexemplo, você pode fazer o seguinte:• Conceder permissões para permitir acesso somente leitura aos usuários para espaços de chaves ou

tabelas específicos.• Conceder permissões para permitir acesso de gravação a uma determinada tabela com base na

identidade desse usuário.

Para obter mais informações, consulteExemplos de políticas baseadas em identidade do.Considere utilizar a criptografia do lado do cliente

Se você armazena dados confidenciais e sensíveis no Amazon Keyspaces, talvez seja melhorcriptografar os dados o mais próximo possível da origem para que eles permaneçam protegidos

251

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Práticas recomendadas de segurança de detecção

durante todo o ciclo de vida. A criptografia dos seus dados confidenciais em trânsito e em repousoajuda você a garantir que os dados em texto simples não estejam disponíveis a terceiros.

Práticas recomendadas de segurança de Detectivepara o Amazon KeyspacesAs práticas recomendadas de segurança a seguir são consideradas detetive porque podem ajudar adetectar pontos fracos e incidentes potenciais de segurança.

Usar oAWS CloudTrailmonitorarAWS Key Management Service(AWS KMS)AWS KMSUso da chave de

Se você estiver usando umgerenciada pelo clienteAWS KMSchavePara criptografia em repouso,o uso dessa chave é registrado em log noAWS CloudTrail. O CloudTrail fornece visibilidade daatividade do usuário ao registrar ações realizadas em sua conta. O CloudTrail registra informaçõesimportantes sobre cada ação, incluindo quem fez a solicitação, os serviços usados, as açõesrealizadas, os parâmetros das ações e os elementos de resposta retornados pelo serviço da AWS.Essas informações ajudam você a rastrear as alterações feitas em seus recursos da AWS e solucionarproblemas operacionais. O CloudTrail facilita garantir a conformidade com as políticas internas e ospadrões regulatórios.

Use o CloudTrail para auditar o uso de chaves. O CloudTrail cria arquivos de log que contêmum histórico de chamadas da AWS API e eventos relacionados da sua conta. Esses arquivos delog incluem todosAWS KMSSolicitações de API que foram feitas usando o console,AWSSDKs eferramentas de linha de comando, além das feitas por meio de integradasAWSServiços da . Vocêpode usar esses arquivos de log para obter informações sobre quando oAWS KMSA chave foi usada,a operação solicitada, a identidade do solicitante, o endereço IP de origem da solicitação e assimpor diante. Para obter mais informações, consulte Como registrar chamadas de API do AWS KeyManagement Service com o AWS CloudTrail no Guia do usuário do AWS CloudTrail.

Usar o CloudTrail para monitorar as operações de linguagem de definição de dados do AmazonKeyspaces (DDL)

O CloudTrail fornece visibilidade da atividade do usuário ao registrar ações realizadas em suaconta. O CloudTrail registra informações importantes sobre cada ação, incluindo quem fez asolicitação, os serviços usados, as ações realizadas, os parâmetros das ações e os elementos deresposta retornados pelo serviço da AWS. Essas informações ajudam você a rastrear as alteraçõesfeitas noAWSrecursos e para solucionar problemas operacionais. O CloudTrail facilita garantir aconformidade com as políticas internas e os padrões regulatórios.

Todos os Amazon KeyspacesOperações DDL (p. 259)São registrados em log no CloudTrailautomaticamente. As operações DDL permitem que você crie e gerencie os espaços de chaves e astabelas do Amazon Keyspaces.

Quando ocorre atividade no Amazon Keyspaces, essa atividade é registrada em um evento doCloudTrail junto com outrosAWSeventos de serviço no histórico de eventos. Para obter maisinformações, consulteRegistro de operações do Amazon Keyspaces usandoAWS CloudTrail. Vocêpode visualizar, pesquisar e fazer download de eventos recentes em suaConta da AWS. Para obtermais informações, consulte Visualizar eventos com o histórico de eventos CloudTrail no Guia doUsuário do AWS CloudTrail.

Para obter um registro contínuo de eventos em suaConta da AWS, incluindo eventos para o AmazonKeyspaces, crie umtrilha. Uma trilha permite que o CloudTrail entregue arquivos de log a um bucket doAmazon Simple Storage Service (Amazon S3). Por padrão, quando você cria uma trilha no console,ela é aplicada a todosRegiões da AWS. A trilha registra eventos de todas as regiões na partição daAWS e fornece os arquivos de log ao bucket do S3 que você especificar. Além disso, você podeconfigurar outros serviços da AWS para analisar mais ainda mais e agir com base nos dados deeventos coletados nos logs do CloudTrail.

252

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Práticas recomendadas de segurança de detecção

Marcar seus recursos do Amazon Keyspaces para identificação e automação

Você pode atribuir metadados aoAWSRecursos da na forma de tags. Cada tag é um rótulosimples que consiste em uma chave definida pelo cliente e um valor opcional que pode facilitar ogerenciamento, a pesquisa e o filtro de recursos.

A atribuição de tags (tagging) permite a implementação de controles agrupados. Embora não hajatipos de tags inerentes, elas permitem categorizar recursos por finalidade, proprietário, ambiente ououtros critérios. Veja os seguintes exemplos:• Acesso: usado para controlar o acesso aos recursos do Amazon Keyspaces com base em tags.

Para obter mais informações, consulte the section called “Autorização baseada em tags do AmazonKeyspaces” (p. 208).

• Segurança: usada para determinar requisitos como configurações de proteção de dados.• Confidencialidade: um identificador para o nível de confidencialidade de dados específico

compatível com um recurso.• Ambiente: usado para distinguir entre as infraestruturas de desenvolvimento, teste e produção.

Para obter mais informações, consulteAWSEstratégias de marcaçãoeAdicionando tags e rótulos arecursos.

253

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Elementos de linguagem

Referência de linguagem CQL parao Amazon Keyspaces (para ApacheCassandra)

Depois de se conectar a um endpoint do Amazon Keyspaces (para Apache Cassandra), você usa oCassandra Query Language (CQL) para trabalhar com seu banco de dados. A CQL é semelhante emmuitos aspectos à Structured Query Language (SQL).

Tópicos• Elementos Cassandra Query Language (CQL) no Amazon Keyspaces (p. 254)• Instruções DDL (linguagem de definição de dados) no Amazon Keyspaces (p. 259)• Declarações DML (linguagem de manipulação de dados) no Amazon Keyspaces (p. 266)• Funções embutidas no Amazon Keyspaces (p. 270)

Elementos Cassandra Query Language (CQL) noAmazon Keyspaces

Saiba mais sobre os elementos do Cassandra Query Language (CQL) que são compatíveis com o AmazonKeyspaces, incluindo identificadores, constantes, termos e tipos de dados.

Tópicos• Identificadores (p. 254)• Constantes (p. 254)• Termos (p. 255)• Tipos de dados (p. 255)• Codificação JSON dos tipos de dados Amazon Keyspaces (p. 257)

IdentificadoresIdentificadores (ou nomes) são usados para identificar tabelas, colunas e outros objetos. Um identificadorpode ser citado ou não citado. O seguinte se aplica.

identifier ::= unquoted_identifier | quoted_identifierunquoted_identifier ::= re('[a-zA-Z][a-zA-Z0-9_]*')quoted_identifier ::= '"' (any character where " can appear if doubled)+ '"'

ConstantesAs constantes a seguir são definidas.

constant ::= string | integer | float | boolean | uuid | blob | NULLstring ::= '\'' (any character where ' can appear if doubled)+ '\''

254

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Termos

'$$' (any character other than '$$') '$$'integer ::= re('-?[0-9]+')float ::= re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITYboolean ::= TRUE | FALSEuuid ::= hex{8}-hex{4}-hex{4}-hex{4}-hex{12}hex ::= re("[0-9a-fA-F]")blob ::= '0' ('x' | 'X') hex+

TermosUm termo denota o tipo de valores que são suportados. Os termos são definidos pelo seguinte.

term ::= constant | literal | function_call | arithmetic_operation | type_hint | bind_markerliteral ::= collection_literal | tuple_literalfunction_call ::= identifier '(' [ term (',' term)* ] ')'arithmetic_operation ::= '-' term | term ('+' | '-' | '*' | '/' | '%') term

Tipos de dadosO Amazon Keyspaces é compatível com os seguintes tipos de dados:

Tipos de string

Tipo de dados Descrição

ascii Representa uma cadeia de caracteres ASCII.

text Representa uma string codificada UTF-8

varchar Representa uma string codificada UTF-8varcharéum alias paratext).

Tipos numéricos

Tipo de dados Descrição

bigint Representa um sinal de 64 bits.

counter Representa um contador inteiro e com sinal de64 bits Para obter mais informações, consulte thesection called “Contadores” (p. 256).

decimal Representa um decimal de precisão variável.

double Representa um ponto flutuante de 64 bits IEEE 754

float Representa um ponto flutuante de 32 bits IEEE 754

int Representa um int e com sinal de 32 bits

varint Representa um número inteiro de precisãoarbitrária.

255

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tipos de dados

Contadores

UMAcountercontém um número inteiro e com sinal de 64 bits. O valor do contador é incrementadoou diminuído usando othe section called “UPDATE” (p. 269)e não pode ser definido diretamente. Issofazcountercolunas úteis para rastrear contagens. Por exemplo, você pode usar contadores para rastrearo número de entradas em um arquivo de log ou o número de vezes que uma postagem foi visualizada emuma rede social. As seguintes restrições se aplicam àscountercolunas:

• Uma coluna do tipocounternão pode fazer parte doprimary keyde uma tabela.• Em uma tabela que contém uma ou mais colunas do tipocounter, todas as colunas dessa tabela

devem ser do tipocounter.

Nos casos em que uma atualização do contador falha (por exemplo, devido a tempos limite ou perdade conexão com o Amazon Keyspaces), o cliente não sabe se o valor do contador foi atualizado. Se aatualização for repetida, a atualização do valor do contador poderá ser aplicada uma segunda vez.

Tipo de blob

Tipo de dados Descrição

blob Representa bytes arbitrários.

Tipo booliano

Tipo de dados Descrição

boolean Representatrueoufalse.

Tipos relacionados ao tempo

Tipo de dados Descrição

timestamp Representa um timestamp.

timeuuid Representa umversão 1 UUID.

Tipos de coleção

Tipo de dados Descrição

list Representa uma coleção ordenada de elementosliterais.

map Representa uma coleção não ordenada de paresde chave-valor.

set Representa uma coleção não ordenada de um oumais elementos literais.

256

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Codificação JSON dos tipos de dados Amazon Keyspaces

Tipo de dados Descrição

tuple Representa um grupo limitado de elementosliterais.

Outros tipos

Tipo de dados Descrição

inet Uma string que representa um endereço IP, noformato IPv4 ou IPv6.

Codificação JSON dos tipos de dados AmazonKeyspacesO Amazon Keyspaces oferece os mesmos mapeamentos de tipo de dados JSON que o ApacheCassandra. A tabela a seguir descreve os tipos de dados que o Amazon Keyspaces aceita noINSERTJSONinstruções e os tipos de dados que o Amazon Keyspaces usa ao retornar dados com oSELECTJSONinstrução.

Para tipos de dados de campo único, comofloat,int,UUID, edate, você também pode inserir dadoscomostring. Para tipos de dados compostos e coleções, comotuple,map, elist, você também podeinserir dados como umJSON string.

Tipo de dados do JSON Tipos de dadosaceitos emINSERTJSONdeclarações

Tipos de dadosretornados emSELECTJSONdeclarações

Observações

ascii string string Usa escape decaractere JSON\u.

bigint integer, string integer A string deve ser uminteiro válido de 64 bits.

blob string string String deve começarcom0xseguido por umnúmero par de dígitoshexadecimais.

boolean boolean, string boolean A string devesertrueoufalse.

date string string Data no formatoYYYY-MM-DD, fuso horárioUTC.

decimal integer, float,string

float Pode exceder aprecisão do pontoflutuante IEEE-754de 32 ou 64 bits nodecodificador do lado docliente.

257

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Codificação JSON dos tipos de dados Amazon Keyspaces

Tipo de dados do JSON Tipos de dadosaceitos emINSERTJSONdeclarações

Tipos de dadosretornados emSELECTJSONdeclarações

Observações

double integer, float,string

float A string deve ser umnúmero inteiro ouflutuante.

float integer, float,string

float A string deve ser umnúmero inteiro ouflutuante.

inet string string Endereço IPv4 ou IPv6.

int integer, string integer A string deve ser umnúmero inteiro de 32bits.

list list, string list Usa a representaçãonativa da lista JSON.

map map, string map Usa a representaçãonativa do mapa JSON.

smallint integer, string integer String deve ser uminteiro de 16 bits válido.

set list, string list Usa a representaçãonativa da lista JSON.

text string string Usa escape decaractere JSON\u.

time string string Hora do dia noformatoHH-MM-SS[.fffffffff].

timestamp integer, string string Um timestamp. Asconstantes de stringpermitem armazenarcarimbos de data/hora como datas.Carimbos de data comformatoYYYY-MM-DDHH:MM:SS.SSSsãoretornado.

timeuuid string string Digite 1 UUID.Consulteconstants (p. 254)parao formato UUID.

tinyint integer, string integer String deve ser uminteiro de 8 bits válido.

tuple list, string list Usa a representaçãonativa da lista JSON.

uuid string string Consulteconstants (p. 254)parao formato UUID.

258

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Instruções DDL

Tipo de dados do JSON Tipos de dadosaceitos emINSERTJSONdeclarações

Tipos de dadosretornados emSELECTJSONdeclarações

Observações

varchar string string Usa escape decaractere JSON\u.

varint integer, string integer Comprimento variável;pode estourar inteirosde 32 bits ou 64 bits nodecodificador do lado docliente.

Instruções DDL (linguagem de definição de dados)no Amazon Keyspaces

linguagem de definição de dados(DDL) é o conjunto de instruções Cassandra Query Language (CQL)que você usa para gerenciar estruturas de dados no Amazon Keyspaces (para Apache Cassandra), comokeyspaces e tabelas. Você usa DDL para criar essas estruturas de dados, modificá-las depois de criadas eremovê-las quando não estiverem mais em uso. O Amazon Keyspaces executa operações DDL de formaassíncrona. Para obter mais informações sobre como confirmar se uma operação assíncrona foi concluída,consultethe section called “Criação e exclusão assíncronas de espaços de chave e tabelas” (p. 7).

As seguintes instruções DDL são aceitas:

• CRIAR KEYSPACE (p. 260)• ALTER KEYSPACE (p. 260)• DROP KEYSPACE (p. 261)• CRIAR TABELA (p. 261)• TABELA (p. 263)• TABELA DE RESTAURAÇÃO (p. 265)• DROP TABELA (p. 266)

Tópicos• Keyspaces (p. 259)• Tabelas (p. 261)

KeyspacesUMAKeyspaceagrupa tabelas relacionadas que são relevantes para um ou mais aplicativos. Em termos deum Relational Database Management System (RDBMS — Sistema de gerenciamento de banco de dadosrelacional), os espaços de chave são aproximadamente semelhantes a bancos de dados, tablespaces ouconstruções semelhantes.

Note

No Apache Cassandra, os keyspaces determinam como os dados são replicados entre vários nósde armazenamento. No entanto, o Amazon Keyspaces é um serviço totalmente gerenciado: Osdetalhes de sua camada de armazenamento são gerenciados em seu nome. Por esse motivo, oskeyspaces no Amazon Keyspaces são apenas construções lógicas e não estão relacionados aoarmazenamento físico subjacente.

259

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Keyspaces

Para obter informações sobre limites de cota e restrições para keyspaces do Amazon Keyspaces,consulteCotas (p. 272).

A seguir está a única estratégia de replicação disponível para keyspaces:

SingleRegionStrategy— replica dados em três zonas de disponibilidade em sua região.

CRIAR KEYSPACEUsar aCREATE KEYSPACEpara criar um novo keyspace.

Sintaxe

create_keyspace_statement ::= CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name WITH options

Onde:

• keyspace_nameé o nome do espaço de chaves a ser criado.• opçõessão um ou mais itens a seguir:

• REPLICATION— Um mapa que indica a estratégia de replicação para o keyspace(SingleRegionStrategy), com valores adicionais conforme necessário. (Obrigatório)

• DURABLE_WRITES— As gravações nos Amazon Keyspaces são sempre duráveis, portanto, essaopção não é necessária. No entanto, se especificado, o valor deve sertrue.

• TAGS— Uma lista de tags de pares de chave-valor a serem anexadas ao recurso na criação.

Exemplo

Crie um keyspace da seguinte forma.

CREATE KEYSPACE "myGSGKeyspace" WITH REPLICATION = {'class': 'SingleRegionStrategy'} and TAGS ={'key1':'val1', 'key2':'val2'} ;

ALTER KEYSPACEUsar aALTER KEYSPACEpara adicionar ou remover tags de um espaço de chaves.

Sintaxe

alter_keyspace_statement ::= ALTER KEYSPACE keyspace_name [[ADD | DROP] TAGS

Onde:

• keyspace_nameé o nome do espaço de chaves a ser alterado.• TAGS— Uma lista de tags de pares de chave-valor a serem adicionadas ou removidas do keyspace.

Exemplo

Altere um keyspace da seguinte forma.

ALTER KEYSPACE "myGSGKeyspace" ADD TAGS {'key1':'val1', 'key2':'val2'};

260

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas

DROP KEYSPACEUsar aDROP KEYSPACEpara remover um keyspace — incluindo todo o seu conteúdo, como tabelas.

Sintaxe

drop_keyspace_statement ::= DROP KEYSPACE [ IF EXISTS ] keyspace_name

Onde:

• nome_do_espaço da chaveé o nome do espaço de chaves a ser removido.

Exemplo

DROP KEYSPACE "myGSGKeyspace";

TabelasTabelassão as principais estruturas de dados no Amazon Keyspaces. Os dados em uma tabelasão organizados em linhas e colunas. Um subconjunto dessas colunas é usado para determinar oparticionamento (e, finalmente, o posicionamento dos dados) por meio da especificação de uma chave departição.

Outro conjunto de colunas pode ser definido em colunas de cluster, o que significa que elas podemparticipar como predicados na execução da consulta.

Por padrão, novas tabelas são criadas comsob demandacapacidade de produção. É possível alterar omodo de capacidade para tabelas novas e existentes. Para obter mais informações sobre os modos detaxa de transferência de capacidade de leitura/gravação, consultethe section called “Modo de capacidadede leitura/gravação” (p. 100).

Para obter informações sobre limites de cota e restrições para tabelas do Amazon Keyspaces,consulteCotas (p. 272).

CREATE TABLEUsar aCREATE TABLEpara criar uma nova tabela.

Sintaxe

create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] table_name '(' column_definition ( ',' column_definition )* [ ',' PRIMARY KEY '(' primary_key ')' ] ')' [ WITH table_options ]

column_definition ::= column_name cql_type [ STATIC ][ PRIMARY KEY]

primary_key ::= partition_key [ ',' clustering_columns ]

partition_key ::= column_name | '(' column_name ( ',' column_name )* ')'

clustering_columns ::= column_name ( ',' column_name )*

table_options ::= [table_options]

261

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas

| CLUSTERING ORDER BY '(' clustering_order ')' [ AND table_options ] | options | CUSTOM_PROPERTIES | WITH TAGS | WITH default_time_to_live

clustering_order ::= column_name (ASC | DESC) ( ',' column_name (ASC | DESC) )*

Onde:

• table_nameé o nome da tabela a ser criada.• column_definitionconsiste no seguinte:

• column_name— O nome da coluna.• cql_type— Um tipo de dados Amazon Keyspaces (consulteTipos de dados (p. 255)).• STATIC— Designa essa coluna como estática. As colunas estáticas armazenam valores que são

compartilhados por todas as linhas na mesma partição.• PRIMARY KEY— Designa essa coluna como a chave primária da tabela.

• primary_keyconsiste no seguinte:• partition_key

• clustering_columns

• partition_key:• A chave de partição pode ser uma única coluna ou um valor composto composto por duas ou mais

colunas. A parte da chave de partição da chave primária é necessária e determina como o AmazonKeyspaces armazena seus dados.

• clustering_columns:• A parte opcional da coluna de cluster da chave primária determina como os dados são agrupados e

classificados em cada partição.• table_optionssão compostos de:

• CLUSTERING ORDER BY— A ORDEM DE AGRUPAMENTO padrão em uma tabela é composta desuas chaves de agrupamento naASC(crescente) direção de classificação. Especifique-o para substituiro comportamento de classificação padrão.

• CUSTOM_PROPERTIES— Um mapa de configurações específicas para Amazon Keyspaces.• capacity_mode: especifica o modo de capacidade de taxa de transferência de leitura/

gravação para a tabela. As opções são throughput_mode:PAY_PER_REQUESTe throughput_mode:PROVISIONED. O modo de capacidade provisionadarequerread_capacity_unitsewrite_capacity_unitscomo entradas. O padrão éthroughput_mode:PAY_PER_REQUEST.

• encryption_specification: especifica as opções de criptografia para criptografia emrepouso. Se não especificado, o padrão seráencryption_type:AWS_OWNED_KMS_KEY. A chavegerenciada pelo cliente da opção de criptografia requer oAWS KMSchave no formato do nome ARNrecurso da Amazon (kms_key_identifier:ARN:kms_key_identifier:ARN.

• point_in_time_recovery: especifica se point-in-time restore está ativada ou desativada paraa tabela. As opções são status:enabled e status:disabled. Se não especificado, o padrãoserástatus:disabled.

• ttl: ativa as configurações personalizadas de tempo de vida para a tabela. Para habilitar,usestatus:enabled. O padrão é status:disabled. Depoisttlestá ativado, você não podedesabilitá-lo para a tabela.

• TAGS— Uma lista de tags de pares de chave-valor a serem anexadas ao recurso quando ele é criado.• default_time_to_live— A configuração padrão Time to Live em segundos para a mesa.

• clustering_orderconsiste no seguinte:• column_name— O nome da coluna.

262

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas

• ASC | DESC— Define o ascendente (ASC) ou descendente (DESC) modificador de pedido. Se não forespecificado, a ordem padrão é ASC.

Exemplo

CREATE TABLE IF NOT EXISTS "my_keyspace".my_table ( id text, name text, region text, division text, project text, role text, pay_scale int, vacation_hrs float, manager_id text, PRIMARY KEY (id,division)) WITH CUSTOM_PROPERTIES={ 'capacity_mode':{ 'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20 }, 'point_in_time_recovery':{'status': 'enabled'}, 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } } AND CLUSTERING ORDER BY (division ASC) AND TAGS={'key1':'val1', 'key2':'val2'} AND default_time_to_live = 3024000;

Em uma tabela que usa colunas de agrupamento, as colunas sem agrupamento podem ser declaradascomo estáticas na definição da tabela. Para obter mais informações sobre colunas estáticas, consultethesection called “Colunas estáticas” (p. 118).

Exemplo

CREATE TABLE "my_keyspace".my_table ( id int, name text, region text, division text, project text STATIC, PRIMARY KEY (id,division));

ALTER TABLEUsar aALTER TABLEpara adicionar novas colunas, adicionar tags ou alterar as propriedadespersonalizadas da tabela.

Sintaxe

alter_table_statement ::= ALTER TABLE table_name [ ADD ( column_definition | column_definition_list) ] [[ADD | DROP] TAGS {'key1':'val1', 'key2':'val2'}]

263

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas

[ WITH table_options [ , ... ] ] ; column_definition ::= column_name cql_type

Onde:

• table_nameé o nome da tabela a ser alterada.• column_definitioné o nome da coluna e do tipo de dados a serem adicionados.• column_definition_listé uma lista de colunas separadas por vírgulas, colocadas entre

parênteses.• TAGSé uma lista de tags de pares de chave-valor a serem anexadas ao recurso.• default_time_to_live: a configuração padrão Time to Live em segundos para a mesa.• table_optionsconsiste no seguinte:

• CUSTOM_PROPERTIES— Um mapa de configurações específicas para Amazon Keyspaces.• capacity_mode: especifica o modo de capacidade de taxa de transferência de leitura/

gravação para a tabela. As opções são throughput_mode:PAY_PER_REQUESTe throughput_mode:PROVISIONED. O modo de capacidade provisionadarequerread_capacity_unitsewrite_capacity_unitscomo entradas. O padrão éthroughput_mode:PAY_PER_REQUEST.

• encryption_specification: especifica a opção de criptografia para criptografiaem repouso. As opções são encryption_type:AWS_OWNED_KMS_KEY eencryption_type:CUSTOMER_MANAGED_KMS_KEY. A chave gerenciada pelo cliente daopção de criptografia requer oAWS KMSchave no formato do nome ARN recurso da Amazon(kms_key_identifier:ARN.

• point_in_time_recovery: especifica se point-in-time restore está ativada ou desativada para atabela. As opções são status:enabled e status:disabled. O padrão é status:disabled.

• ttl: ativa as configurações personalizadas de tempo de vida para a tabela. Para habilitar,usestatus:enabled. O padrão é status:disabled. Depoisttlestá ativado, você não podedesabilitá-lo para a tabela.

Note

Com ALTER TABLE, você só pode alterar uma única propriedade personalizada. Você não podecombinar mais de um comando ALTER TABLE na mesma instrução.

Exemplos

A instrução a seguir mostra como adicionar uma coluna a uma tabela existente.

ALTER TABLE mykeyspace.mytable ADD (ID int);

Para alterar o modo de capacidade de uma tabela e especificar unidades de capacidade de leitura egravação, você pode usar a seguinte instrução.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}};

A instrução a seguir especifica uma chave KMS gerenciada pelo cliente para a tabela.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={ 'encryption_specification':{ 'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY',

264

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Tabelas

'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111' } };

Para habilitar o point-in-time restore para uma tabela, você pode usar a seguinte instrução.

ALTER TABLE mykeyspace.mytable WITH CUSTOM_PROPERTIES={'point_in_time_recovery': {'status': 'enabled'}};

Para definir um valor de Vida útil padrão em segundos para uma tabela, você pode usar a seguinteinstrução.

ALTER TABLE my_table WITH default_time_to_live = 2592000;

Essa instrução habilita configurações personalizadas de Tempo de Vida Útil para uma tabela.

ALTER TABLE mytable WITH CUSTOM_PROPERTIES={'ttl':{'status': 'enabled'}};

TABELA DE RESTAURAÇÃOUsar aRESTORE TABLEpara restaurar uma tabela para um ponto no tempo. Esta declaração requer point-in-time recuperação a ser habilitada em uma tabela. Para obter mais informações, consulte Recuperaçãopoint-in-time (p. 157).

Sintaxe

restore_table_statement ::= RESTORE TABLE table_name FROM TABLE table_name [ WITH table_options [ , ... ] ];

Onde:

• restored_table_nameé o nome da tabela restaurada.• source_table_nameé o nome da tabela de origem.• table_optionsconsiste no seguinte:

• restore_timestampé o tempo do ponto de restauração no formato ISO 8601. Se não forespecificado, o carimbo de data/hora atual será usado.

• CUSTOM_PROPERTIES— Um mapa de configurações específicas para Amazon Keyspaces.• capacity_mode: especifica o modo de capacidade de taxa de transferência de leitura/

gravação para a tabela. As opções são throughput_mode:PAY_PER_REQUESTe throughput_mode:PROVISIONED. O modo de capacidade provisionadarequerread_capacity_unitsewrite_capacity_unitscomo entradas. O padrão é aconfiguração atual da tabela de origem.

• encryption_specification: especifica a opção de criptografia para criptografiaem repouso. As opções são encryption_type:AWS_OWNED_KMS_KEY eencryption_type:CUSTOMER_MANAGED_KMS_KEY. A chave gerenciada pelo cliente daopção de criptografia requer oAWS KMSchave no formato do nome ARN recurso da Amazon (kms_key_identifier:ARN. Para restaurar uma tabela criptografada com uma chave gerenciadapelo cliente em uma tabela criptografada com umChave pertencente à AWS, o Amazon Keyspacesrequer acesso aoAWS KMSchave da tabela de origem.

• point_in_time_recovery: especifica se point-in-time restore está ativada ou desativadapara a tabela. As opções são status:enabled e status:disabled. Ao contrário de quando

265

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Instruções DML

você cria novas tabelas, o status padrão para tabelas restauradas éstatus:enabledporque aconfiguração é herdada da tabela de origem. Para desativar o PITR para tabelas restauradas, vocêdeve definirstatus:disabledexplicitamente.

• TAGSé uma lista de tags de pares de chave-valor a serem anexadas ao recurso.

Note

As tabelas excluídas só podem ser restauradas no momento da exclusão.

Exemplo

RESTORE TABLE mykeyspace.mytable_restored from table mykeyspace.my_table WITH restore_timestamp = '2020-06-30T04:05:00+0000'AND custom_properties = {'point_in_time_recovery':{'status':'disabled'}, 'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 10, 'write_capacity_units': 20}}AND TAGS={'key1':'val1', 'key2':'val2'};

DROP TABLEUsar aDROP TABLEpara remover uma tabela do espaço de chaves.

Sintaxe

drop_table_statement ::= DROP TABLE [ IF EXISTS ] table_name

Onde:

• IF EXISTSprevineDROP TABLEde falhar se a tabela não existir. (Optional)• table_nameé o nome da tabela a ser descartada.

Exemplo

DROP TABLE "myGSGKeyspace".employees_tbl;

Declarações DML (linguagem de manipulação dedados) no Amazon Keyspaces

Linguagem de manipulação de dados(DML) é o conjunto de instruções do Cassandra Query Language(CQL) que você usa para gerenciar dados em tabelas do Amazon Keyspaces (para Apache Cassandra).Você usa instruções DML para adicionar, modificar ou excluir dados em uma tabela.

Você também usa instruções DML para consultar dados em uma tabela. (Observe que a CQL não oferecesuporte a junções ou subconsultas.)

Tópicos• SELECT (p. 267)• INSERT (p. 268)• UPDATE (p. 269)• DELETE (p. 269)

266

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

SELECT

SELECTUse uma instrução SELECT para consultar os dados.

Sintaxe

select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE where_clause ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ]select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] )selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')'where_clause ::= relation ( AND relation )*relation ::= column_name operator term TOKENoperator ::= '=' | '<' | '>' | '<=' | '>=' | CONTAINS | CONTAINS KEYordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*

Exemplos

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

Para obter uma tabela que mapeia tipos de dados codificados em JSON para tipos de dados doAmazon Keyspaces, consultethe section called “Codificação JSON dos tipos de dados AmazonKeyspaces” (p. 257).

FICHA

Você pode aplicar aTOKENfunção para aPARTITION KEYcoluna emSELECTeWHEREcláusulas.Com aTOKEN, o Amazon Keyspaces retorna linhas com base no valor do token mapeadodoPARTITION_KEYem vez do valor doPARTITION KEY.

Exemplos

SELECT TOKEN(id) from myTable;

SELECT TOKEN(id) from myTable where TOKEN(id) > 100 and TOKEN(id) < 10000;

Resultados do pedido

OORDER BYcláusula especifica a ordem de classificação dos resultados retornados. Ele usa comoargumento uma lista de nomes de coluna junto com a ordem de classificação de cada coluna. Vocêsó pode especificar colunas de agrupamento nas cláusulas de ordenação. Colunas sem agrupamentonão são permitidas. As opções de ordem de classificação sãoASCpara ascendente eDESCpara a ordemde classificação descendente. Se a ordem de classificação for omitida, a ordem padrão da coluna deagrupamento será usada. Para possíveis ordens de classificação, consultethe section called “Resultadosdo pedido” (p. 123).

Exemplo

SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;

267

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

INSERT

Note

Para compatibilidade com o comportamento estabelecido do driver Cassandra, as diretivas deautorização baseadas em tag não são aplicadas quando você executa operações em tabelasdo sistema usando chamadas de API do Cassandra Query Language (CQL) por meio de driversCassandra e ferramentas de desenvolvedor. Para obter mais informações, consulte the sectioncalled “ Acesso a recursos do Amazon Keyspaces com base em tags” (p. 214).

INSERTUsar aINSERTpara adicionar uma linha a uma tabela.

Sintaxe

insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ]names_values ::= names VALUES tuple_literaljson_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'

Exemplo

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id)VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;

Suporte para JSON

Para obter uma tabela que mapeia tipos de dados codificados em JSON para tipos de dados doAmazon Keyspaces, consultethe section called “Codificação JSON dos tipos de dados AmazonKeyspaces” (p. 257).

Você pode usar oJSONpalavra-chave para inserir umJSON- mapa codificado como uma única linha. Paracolunas que existem na tabela, mas são omitidas na instrução insert do JSON, useDEFAULT UNSETparapreservar os valores existentes. Usar oDEFAULT NULLpara gravar um valor NULL em cada linha decolunas omitidas e substituir os valores existentes (cobranças de gravação padrão se aplicam).DEFAULTNULLé a opção padrão.

Exemplo

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';

Se os dados JSON contiverem chaves duplicadas, o Amazon Keyspaces armazenará o último valorda chave (semelhante ao Apache Cassandra). No exemplo a seguir, em que a chave duplicada éid, ovalor234-56-7890é usado.

Exemplo

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678",

268

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

UPDATE

"name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';

UPDATEUsar aUPDATEinstrução para modificar uma linha em uma tabela.

Sintaxe

uupdate_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ]update_parameter ::= ( integer | bind_marker )assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_namesimple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_namecondition ::= simple_selection operator term

Exemplo

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;

Para incrementar umcounter, use a seguinte sintaxe: Para obter mais informações, consulte the sectioncalled “Contadores” (p. 256).

UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';

DELETEUsar aDELETEpara remover uma linha de uma tabela.

Sintaxe

delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name

WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ]

simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name

condition ::= simple_selection operator term

269

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Funções incorporadas

Onde:

• table_nameé a tabela que contém a linha a ser excluída.

Exemplo

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;

Funções embutidas no Amazon KeyspacesO Amazon Keyspaces (para Apache Cassandra) oferece suporte a uma variedade de funções integradasque você pode usar em declarações Cassandra Query Language (CQL).

Tópicos• Funções escalares (p. 270)

Funções escalaresUMAfunção escalarexecuta um cálculo em um único valor e retorna o resultado como um único valor. OAmazon Keyspaces é compatível com as seguintes funções escalares.

Função Descrição

blobAsType Retorna um valor do tipo de dados especificado.

cast Converte um tipo de dados nativo em outro tipo dedados nativo.

currentDate Retorna a data/hora atual como uma data.

currentTime Retorna a data/hora atual como hora.

currentTimestamp Retorna a data/hora atual como um carimbo dedata/hora.

currentTimeUUID Retorna a data/hora atual como umtimeuuid.

fromJson Converte a string JSON no tipo de dados da colunaselecionada.

maxTimeuuid Retorna o maior possíveltimeuuidpara carimbode data/hora ou string de data.

minTimeuuid Retorna o menor possíveltimeuuidpara carimbode data/hora ou string de data.

now Retorna um novo exclusivotimeuuid.Compatível comINSERT,UPDATE,eDELETEdeclarações, e como partedoWHERECláusula emSELECTInstruções .

toDate Converte umtimeuuidou um carimbo de data/hora para um tipo de data.

270

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Funções escalares

Função Descrição

toJson Retorna o valor da coluna selecionada no formatoJSON.

token Retorna o valor hash da chave de partição.

toTimestamp Converte umtimeuuidou uma data para umcarimbo de data/hora.

typeAsBlob Converte o tipo de dados especificado emumblob.

toUnixTimestamp Converte umtimeuuidou um carimbo de data/hora em umbigInt.

uuid Retorna um UUID aleatório da versão4. Compatível comINSERT,UPDATE,eDELETEdeclarações, e como partedoWHERECláusula emSELECTInstruções .

dateOf (Preterido)Extrai o carimbo de data/hora deumtimeuuide retorna o valor como data.

unixTimestampOf (Preterido)Extrai o carimbo de data/hora deumtimeuuide retorna o valor como um carimbode data/hora inteiro bruto de 64 bits.

271

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Cotas de serviço do Amazon Keyspaces

Cotas para o Amazon Keyspaces(para Apache Cassandra)

Esta seção descreve as cotas atuais e os valores padrão para o Amazon Keyspaces (para ApacheCassandra).

Tópicos• Cotas de serviço do Amazon Keyspaces (p. 272)• Aumentar ou diminuir a taxa de transferência (para tabelas provisionadas) (p. 274)• Criptografia do Amazon Keyspaces em repouso (p. 275)

Cotas de serviço do Amazon KeyspacesA tabela a seguir contém as cotas do Amazon Keyspaces (para Apache Cassandra) e os valores padrão.Informações sobre quais cotas podem ser ajustadas estão disponíveis noCotas de serviço doconsole,onde você também pode solicitar aumentos de cotas. Para obter mais informações sobre cotas, entre emcontato com oAWS Support.

Quota Descrição Amazon Keyspaces padrão

Máx. de espaços chaveporRegião da AWS

O número máximo de espaçosde chave para este assinantepor Região. Esse valor padrãoé ajustável naAWSCotas deserviço doconsole do .

256

Tabelas máx. porRegião da AWS O número máximo de tabelasem todos os espaços de chavepara este assinante por região.Esse valor padrão é ajustávelnaAWSCotas de serviçodoconsole do .

256

Tamanho máximo de esquemade tabela

O tamanho máximo de umesquema de tabela.

350 KB

Máximo de operações DDLsimultâneas

O número máximo de operaçõesDDL simultâneas permitidas paraeste assinante por Região.

50

Máx. de consultas por conexão O número máximo de consultasCQL que podem ser processadaspor uma única conexão TCP decliente por segundo.

3000

Tamanho máximo de linha O tamanho máximo de umalinha, excluindo dados decoluna estática. Para obter maisdetalhes, consulte the sectioncalled “Calculando o tamanho dalinha” (p. 121).

1 MB

272

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Cotas de serviço do Amazon Keyspaces

Quota Descrição Amazon Keyspaces padrão

Máximo de dados estáticos porpartição lógica

O tamanho agregado máximode dados estáticos em umapartição lógica. Para obter maisdetalhes, consulte the sectioncalled “Cálculo do tamanho dacoluna estática por partiçãológica” (p. 119).

1 MB

Taxa de transferência máxima deleitura por segundo

A taxa de transferência máximade leitura por segundo —unidades de solicitação deleitura (RRUs) ou unidades decapacidade de leitura (RCUs)— que pode ser alocada parauma tabela por região. Esse valorpadrão é ajustável naAWSCotasde serviço doconsole do .

40.000

Taxa de transferência máxima degravação por segundo

A taxa de transferência máximade gravação por segundo —unidades de solicitação degravação (WCUs) ou unidadesde capacidade de gravação(WCUs) — que podem seralocadas para uma tabela porregião. Esse valor padrão éajustável naAWSCotas deserviço doconsole do .

40.000

Taxa de transferência de leiturano nível da conta (provisionada)

O número máximo de unidadesde capacidade de leituraagregada (RCUs) alocadaspara a conta por Região;aplicável somente para tabelasno modo de capacidade deleitura/gravação provisionada.Esse valor padrão é ajustávelnaAWSCotas de serviçodoconsole do .

80.000

Taxa de transferência degravação no nível da conta(provisionada)

O número máximo de unidadesde capacidade de gravaçãoagregada (WCU) alocadaspara a conta por Região;aplicável somente para tabelasno modo de capacidade deleitura/gravação provisionada.Esse valor padrão é ajustávelnaAWSCotas de serviçodoconsole do .

80.000

273

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Aumentar ou diminuir a taxa detransferência (para tabelas provisionadas)

Quota Descrição Amazon Keyspaces padrão

Tamanho máximo da chave departição

O tamanho máximo da chave departição composta. Até 3 bytesde armazenamento adicional sãoadicionados ao tamanho bruto decada coluna incluída na chave departição para metadados.

2048 bytes

Tamanho máximo de chave deagrupamento

O tamanho máximo combinadode todas as colunas deagrupamento. Até 4 bytes dearmazenamento adicional sãoadicionados ao tamanho brutode cada coluna de agrupamentopara metadados.

850 bytes

Máx. de restaurações databela simultânea usando arecuperação point-in-time (PITR)

O número máximo derestaurações de tabelassimultâneas usando PITR porassinante é 4. Esse valor padrãoé ajustável naAWSCotas deserviço doconsole do .

4

Quantidade máxima de dadosrestaurada usando point-in-timerecuperação (PITR)

O tamanho máximo de dadosque pode ser restaurado usandoPITR em 24 horas. Esse valorpadrão é ajustável naAWSCotasde serviço doconsole do .

5 TB

Aumentar ou diminuir a taxa de transferência (paratabelas provisionadas)

Aumentar a taxa de transferência provisionadaVocê pode aumentarReadCapacityUnitsouWriteCapacityUnitsSempre que necessário, usando oconsole ou oALTER TABLEinstrução. As novas configurações não têm efeito até que a operação ALTERTABLE esteja concluída.

Você não pode exceder as cotas por conta ao adicionar a capacidade provisionada e aumentar acapacidade provisionada para as tabelas o quanto necessário. Para mais informações sobre cotas porconta, consulte a seção anterior, the section called “Cotas de serviço do Amazon Keyspaces” (p. 272).

Diminuição do throughput provisionadoPara cada mesa em umALTER TABLEdeclaração, você podediminuirReadCapacityUnitsouWriteCapacityUnits(ou ambos). As novas configurações não têmefeito até que a operação ALTER TABLE seja concluída. É permitido diminuir até quatro vezes a qualquermomento por dia. Um dia é definido pelo Tempo Universal Coordenado (UTC). Além disso, se não houverredução na última hora, será permitido fazer uma redução adicional. Isso leva o número máximo dediminuições em um dia para 27 (4 diminuições na primeira hora e 1 diminuição para cada uma das janelasde 1 hora subsequentes em um dia).

274

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Criptografia do Amazon Keyspaces em repouso

Criptografia do Amazon Keyspaces em repousoVocê pode alterar as opções de criptografia entre umAWSde propriedadeAWS KMSKey e um clientegerenciadoAWS KMSAté quatro vezes dentro de uma janela de 24 horas, por tabela, a partir da criação databela. Se não houve mudança nas últimas seis horas, uma alteração adicional será permitida. Isso levao número máximo de alterações em um dia para oito vezes (quatro alterações nas primeiras seis horas euma alteração para cada uma das janelas de seis horas subsequentes em um dia).

É possível alterar a opção de criptografia para usar umAWSde propriedadeAWS KMSA chave sempre quenecessário, mesmo que a cota anterior tenha sido esgotada.

Estas são as cotas, a menos que você solicite uma quantidade maior. Para solicitar um aumento da cotade serviço, consulte https://aws.amazon.com/support.

275

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Histórico de documentos para oAmazon Keyspaces (para ApacheCassandra)

A tabela a seguir descreve as alterações importantes na documentação desde a última versão do AmazonKeyspaces (para Apache Cassandra). Para receber notificações sobre atualizações dessa documentação,você pode se inscrever em um feed RSS.

• Última atualização de documentação: 14 de junho de 2022

update-history-change update-history-description update-history-date

Monitore os custos dearmazenamento de tabela doAmazon Keyspaces com AmazonCloudWatch

O Amazon Keyspaces agoraajuda você a monitorar e rastrearos custos de armazenamento detabelas ao longo do tempo comoBillableTableSizeInBytesCloudWatch Métrica do.

14 de junho de 2022

O Amazon Keyspaces agoraoferece suporte ao Terraform

Agora você pode usar oTerraform para executaroperações de linguagem dedefinição de dados (DDL) noAmazon Keyspaces.

9 de junho de 2022

AmazonKeyspacestokensuporte defunção

O Amazon Keyspacesagora ajuda você a otimizarconsultas de aplicativos usandootokenfunção.

19 de abril de 2022

Integração com o AmazonKeyspaces com o Apache Spark

O Amazon Keyspaces agoraajuda você a ler e gravar dadosno Apache Spark com maisfacilidade usando o códigoabertoConector do SparkCassandra.

19 de abril de 2022

Referência da API do AmazonKeyspaces

O Amazon Keyspaces oferecesuporte a operações de plano decontrole para gerenciar espaçosde chave e tabelas usandooAWSSDK eAWS CLI. O guia dereferência da API descreve asoperações do plano de controlesuportadas em detalhes.

2 de março de 2022

Como solucionar problemas deconfiguração comuns ao usar oAmazon Keyspaces.

Saiba mais sobre como resolverproblemas de configuraçãocomuns que você pode encontrarao usar o Amazon Keyspaces.

22 de novembro de 2021

276

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Suporte para o AmazonKeyspaces para tempo de vidaútil (TTL).

O Amazon Keyspaces Time toLive (TTL) ajuda a simplificar alógica do aplicativo e otimizaro preço do armazenamentoexpirando dados das tabelasautomaticamente.

18 de outubro de 2021

Migrar dados para o AmazonKeyspaces usando o DSBulk.

Tutorial passo a passo paramigrar dados do ApacheCassandra para o AmazonKeyspaces usando o DataStaxCarregador em massa (DSBulk).

9 de agosto de 2021

Suporte ao Amazon Keyspacespara entradas do VPC Endpointnasystem.peersTABLE.

O Amazon Keyspacespermite que você preenchaosystem.peerstabela cominformações de endpoint deVPC da interface disponívelpara melhorar o balanceamentode carga e aumentar a taxa detransferência de leitura/gravação.

29 de julho de 2021

Atualização para políticasgerenciadas do IAM para darsuporte ao gerenciado peloclienteAWS KMSchaves.

As políticas gerenciadas doIAM para o Amazon Keyspacesagora incluem permissões paralistar e visualizar o gerenciadopelo cliente disponívelAWSKMSArmazenadas emchavesAWS KMS.

1º de junho de 2021

Suporte para o AmazonKeyspaces para gerenciamentode clientesAWS KMSchaves.

O Amazon Keyspacespermite que você assuma ocontrole do gerenciado peloclienteAWS KMSArmazenadasem chavesAWS KMSParacriptografia em repouso.

1º de junho de 2021

Suporte ao Amazon Keyspacespara sintaxe JSON

O Amazon Keyspaces ajuda vocêa ler e gravar documentos JSONcom mais facilidade, oferecendosuporte à sintaxe JSON paraoperações INSERT e SELECT.

21 de janeiro de 2021

Suporte ao Amazon Keyspacespara colunas estáticas

O Amazon Keyspaces agoraajuda você a atualizar earmazenar dados comuns entrevárias linhas de forma eficienteusando colunas estáticas.

9 de novembro de 2020

Versão GA do suporte ao NoSQLWorkbench para AmazonKeyspaces

O NoSQL Workbench é umaplicativo do lado do clienteque ajuda você a projetare visualizar modelos dedados não relacionais para oAmazon Keyspaces com maisfacilidade. Os clientes do NoSQLWorkbench estão disponíveispara Windows, macOS e Linux.

28 de outubro de 2020

277

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Versão prévia do suporte aoNoSQL Workbench para AmazonKeyspaces

O NoSQL Workbench é umaplicativo do lado do clienteque ajuda você a projetare visualizar modelos dedados não relacionais para oAmazon Keyspaces com maisfacilidade. Os clientes do NoSQLWorkbench estão disponíveispara Windows, macOS e Linux.

5 de outubro de 2020

Novos exemplos de código paraacesso programático ao AmazonKeyspaces

Continuamos adicionandoexemplos de código paraacesso programático ao AmazonKeyspaces. Agora, os exemplosestão disponíveis para driversJava, Python, Go, C# e PerlCassandra que suportam ApacheCassandra versão 3.11.2.

17 de julho de 2020

Amazon Keyspaces point-in-timerecuperação (PITR)

Agora o Amazon Keyspacespoint-in-time A PITR (recovery)para ajudar a proteger astabelas de operações acidentaisde gravação ou exclusão,fornecendo backups contínuosdos dados de tabela.

9 de julho de 2020

Disponibilidade geral do AmazonKeyspaces

Com o Amazon Keyspaces,anteriormente conhecido durantea visualização como AmazonManaged Apache CassandraService (MCS), você pode usaro código Cassandra QueryLanguage (CQL), os driversCassandra licenciados peloApache 2.0 e as ferramentas dedesenvolvedor que você já usahoje.

23 de abril de 2020

Escalabilidade automática doAmazon Keyspaces

O Amazon Keyspaces (paraApache Cassandra) integra-se ao Application Auto Scalingpara ajudá-lo a provisionar acapacidade de throughput deforma eficiente para cargas detrabalho variáveis em respostaao tráfego real de aplicativos,ajustando a capacidade dethroughput automaticamente.

23 de abril de 2020

Interface endpoints da nuvemprivada virtual (VPC) para oAmazon Keyspaces

O Amazon Keyspaces oferececomunicação privada entre oserviço e a VPC para que otráfego de rede não saia da rededa Amazon.

16 de abril de 2020

278

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

Políticas de acesso baseadas emtags

Agora você pode usar tags derecurso nas políticas do IAM paragerenciar o acesso aos AmazonKeyspaces.

8 de abril de 2020

Tipo de dados do contador O Amazon Keyspaces agoraajuda você a coordenarincrementos e decrementospara valores de coluna usandocontadores.

7 de abril de 2020

Marcação de recursos O Amazon Keyspaces agorapermite rotular e categorizarrecursos usando tags.

31 de março de 2020

Suporte do AWS CloudFormation Agora, o Amazon Keyspacesajuda a automatizar a criaçãoe o gerenciamento de recursosusandoAWS CloudFormation.

25 de março de 2020

Support para funções e políticasdo IAM e autenticação Sigv4

Adicionadas informações sobrecomo usarAWS Identity andAccess Management(IAM)Paragerenciar as permissões deacesso e implementar políticasde segurança para o AmazonKeyspaces e como usar o plug-inde autenticação para o DataStaxJava Driver for Cassandra paraacessar programaticamente oAmazon Keyspaces usandofunções do IAM e identidadesfederadas.

17 de março de 2020

Modo de capacidade de leitura/gravação

O Amazon Keyspaces agoraoferece suporte a dois modosde capacidade de throughputde leitura/gravação. O modo decapacidade de leitura/gravaçãocontrola como você é cobradopor taxa de rendimento de leiturae gravação e como a capacidadede rendimento da tabela égerenciada.

20 de fevereiro de 2020

Versão inicial Esta documentação cobrea versão inicial do AmazonKeyspaces (para ApacheCassandra).

3 de dezembro de 2019

279

Amazon Keyspaces (for ApacheCassandra) Guia do desenvolvedor

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

cclxxx