Usar as interfaces de gerenciamento do Amazon Redshift para clusters provisionados - Amazon Redshift

Usar as interfaces de gerenciamento do Amazon Redshift para clusters provisionados

nota

Este tópico aborda as interfaces de gerenciamento do Amazon Redshift para clusters provisionados. Existem interfaces de gerenciamento semelhantes para o Amazon Redshift sem servidor e a API de dados do Amazon Redshift.

O Amazon Redshift dá suporte a diversas interfaces de gerenciamento que você pode usar para criar, gerenciar e excluir clusters do Amazon Redshift: as SDKs do AWS, o AWS Command Line Interface (AWS CLI) e a API de gerenciamento do Amazon Redshift.

A API do Amazon Redshift — Você pode chamar essa API de gerenciamento do Amazon Redshift enviando uma solicitação. Elas são solicitações HTTP ou HTTPS que usam os verbos HTTP GET ou POST com um parâmetro chamado Action. Chamar a API do Amazon Redshift é a maneira mais direta de acessar o serviço Amazon Redshift. No entanto, isso exige que seu aplicativo manipule detalhes de baixo nível, como gerenciamento de erros e geração de um hash para assinar a solicitação.

SDKs da AWS – Você pode usar os SDKs da AWS para executar as operações relacionadas ao cluster do Amazon Redshift. Várias das bibliotecas do SDK envolvem a API do Amazon Redshift subjacente. Elas integram a funcionalidade de API na linguagem de programação específica e processam muitos dos detalhes de nível inferior, como calcular assinaturas, processar novas tentativas de solicitação e tratamento de erros. Chamar as funções wrapper nas bibliotecas do SDK pode simplificar muito o processo de escrever uma aplicação para gerenciar um cluster do Amazon Redshift.

  • O Amazon Redshift é compatível com os AWS SDKs for Java, .NET, PHP, Python, Ruby e Node.js. As funções wrapper para Amazon Redshift estão documentadas no manual de referência de cada SDK. Para obter uma lista dos SDKs da AWS e links para a documentação, consulte Ferramentas para Amazon Web Services.

  • Este guia fornece exemplos de como trabalhar com o Amazon Redshift usando o Java SDK. Para obter exemplos mais gerais de código de SDK da AWS, consulte Exemplos de código para o Amazon Redshift usando SDKs da AWS.

AWS CLI – A CLI fornece um conjunto de ferramentas da linha de comando que você pode usar para gerenciar serviços da AWS em computadores com Windows, Mac e Linux. A AWS CLI inclui comandos baseados nas ações da API do Amazon Redshift.

  • Para obter informações sobre como instalar e configurar a CLI do Amazon Redshift, consulte Configurar a CLI do Amazon Redshift.

  • Para obter material de referência sobre os comandos da CLI do Amazon Redshift, consulte Amazon Redshift no Referência da AWS CLI.

Assinatura de uma solicitação HTTP

O Amazon Redshift exige que todas as solicitações que você envia para a API de gerenciamento sejam autenticadas com uma assinatura. Este tópico explica como assinar suas solicitações.

Se você estiver usando um dos Kits de Desenvolvimento de Software (SDKs) da AWS ou a AWS Command Line Interface, a assinatura da solicitação é tratada automaticamente e você pode pular esta seção. Para obter mais informações sobre como usar os SDKs da AWS, consulte Usar as interfaces de gerenciamento do Amazon Redshift para clusters provisionados. Para obter mais informações sobre como usar a interface da linha de comando do Amazon Redshift, acesse Referência da linha de comando do Amazon Redshift.

Para assinar uma solicitação, calcule uma assinatura digital usando a função de hash criptográfico. Um hash criptográfico é uma função que retorna um valor de hash exclusivo que é baseado na entrada. A entrada da função de hash inclui o texto da solicitação e a chave de acesso secreta que é possível obter nas credenciais temporárias. A função de hash retorna um valor de hash que você inclui na solicitação como sua assinatura. A assinatura é parte do cabeçalho Authorization de sua solicitação.

nota

Os usuários precisam de acesso programático se quiserem interagir com a AWS de fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando a AWS.

Para conceder acesso programático aos usuários, selecione uma das seguintes opções:

Qual usuário precisa de acesso programático? Para Por

Identificação da força de trabalho

(Usuários gerenciados no Centro de Identidade do IAM)

Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS.

Siga as instruções da interface que deseja utilizar.

IAM Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. Siga as instruções em Como usar credenciais temporárias com recursos da AWS no Guia do usuário do IAM.
IAM

(Não recomendado)

Use credenciais de longo prazo para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS.

Siga as instruções da interface que deseja utilizar.

Depois que o Amazon Redshift recebe a solicitação, ele recalcula a assinatura usando a mesma função de hash e a mesma entrada que você usou para assinar a solicitação. Se a assinatura resultante corresponde à assinatura na solicitação, o Amazon Redshift processa a solicitação; caso contrário, a solicitação é rejeitada.

O Amazon Redshift oferece suporte à autenticação usando a assinatura versão 4 da AWS. O processo para cálculo de uma assinatura é composto de três tarefas. Essas tarefas são ilustradas no exemplo a seguir.

  • Tarefa 1: Criar uma solicitação canônica

    Reorganize sua solicitação HTTP em um formato canônico. O uso de um formulário canônico é necessário porque o Amazon Redshift usa o mesmo formulário canônico para calcular a assinatura que compara com a que você enviou.

  • Tarefa 2: Criar uma string para assinar

    Crie uma string que será usada como um dos valores de entrada para sua função hash criptográfica. A string, chamada string-to-sign, é uma concatenação do nome do algoritmo hash, da data da solicitação, de uma string do escopo da credencial e da solicitação canonizada da tarefa anterior. A string do escopo credencial em si é uma concatenação da data, da região e de informações do serviço.

  • Tarefa 3: calcular uma assinatura

    Calcule uma assinatura para sua solicitação usando uma função hash criptográfica que aceite duas strings de entrada, sua string para assinar e uma chave derivada. A chave derivada é calculada começando com sua chave de acesso secreta e usando a string do escopo da credencial para criar uma série de códigos de autenticação de mensagem baseados em hash (HMAC-SHA256).

Exemplo de cálculo de assinatura

O exemplo a seguir mostra os detalhes da criação de uma assinatura para a solicitação CreateCluster. Você pode usar este exemplo como uma referência para verificar seu próprio método de cálculo de assinatura. Outros cálculos de referência estão incluídos na seção Exemplos de assinatura de solicitação do Guia do usuário do IAM.

Você pode usar uma solicitação GET ou POST para enviar solicitações ao Amazon Redshift. A diferença entre as duas é que, para a solicitação GET, seus parâmetros são enviados como parâmetros de string de consulta. Para a solicitação POST, eles são incluídos no corpo da solicitação. O exemplo abaixo mostra uma solicitação POST.

O exemplo supõe o seguinte:

  • O timestamp da solicitação é Fri, 07 Dec 2012 00:00:00 GMT.

  • O endpoint é a região Leste dos EUA (Norte da Virgínia), us-east-1.

A sintaxe geral da solicitação é:

https://redshift.us-east-1.amazonaws.com/ ?Action=CreateCluster &ClusterIdentifier=examplecluster &MasterUsername=masteruser &MasterUserPassword=12345678Aa &NumberOfNode=2 &NodeType=ds2.xlarge &Version=2012-12-01 &x-amz-algorithm=AWS4-HMAC-SHA256 &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request &x-amz-date=20121207T000000Z &x-amz-signedheaders=content-type;host;x-amz-date

O formato canônico da solicitação calculada para Tarefa 1: Crie uma solicitação canônica é:

POST / content-type:application/x-www-form-urlencoded; charset=utf-8 host:redshift.us-east-1.amazonaws.com x-amz-date:20121207T000000Z content-type;host;x-amz-date 55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d

A última linha da solicitação canônica é o hash do corpo da solicitação. A terceira linha na solicitação canônica está vazia, pois não há parâmetros de consulta para esta API.

A string-to-sign para Tarefa 2: Crie uma string-to-sign é:

AWS4-HMAC-SHA256 20121207T000000Z 20121207/us-east-1/redshift/aws4_request 06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714

A primeira linha da string-to-sign é o algoritmo, a segunda linha é a time stamp, a terceira linha é o escopo da credencial e a última linha é o hash da solicitação canônica da Tarefa 1: Crie uma solicitação canônica. O nome do serviço a usar no escopo da credencial é redshift.

Para a Tarefa 3: calcular uma assinatura, a chave derivada pode ser representada como:

derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")

A chave derivada é calculada como uma série de funções de hash. Partindo de instrução interna de HMAC na fórmula acima, você concatena a frase AWS4 com sua chave de acesso secreta e a utiliza como a chave para fazer hash dos dados “us-east-1”. O resultado desse hash se torna a chave para a próxima função de hash.

Após o cálculo da chave derivada, você a utiliza em uma função de hash que aceita duas strings de entrada, a sua string-to-sign e a chave derivada. Por exemplo, se você usar a chave de acesso secreta wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY e a string-to-sign fornecida anteriormente, a assinatura calculada será como se segue:

9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

A etapa final é construir o cabeçalho Authorization. Para a chave de acesso de demonstração AKIAIOSFODNN7EXAMPLE, o cabeçalho (com quebras de linha adicionadas por motivo de legibilidade) é:

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920

Configurar a CLI do Amazon Redshift

Esta seção explica como configurar e executar as ferramentas da linha de comando AWS CLI para uso no gerenciamento do Amazon Redshift. As ferramentas da linha de comando do Amazon Redshift são executadas na AWS Command Line Interface (AWS CLI), que por sua vez usa Python (https://www.python.org/). A AWS CLI pode ser executada em qualquer sistema operacional compatível com Python.

Instruções de instalação

Para começar a usar as ferramentas da linha de comando do Amazon Redshift, primeiro configure a AWS CLI e, em seguida, adicione os arquivos de configuração que definem as opções de CLI do Amazon Redshift.

Se tiver instalado e configurado a AWS CLI para outro serviço da AWS, poderá ignorar esse procedimento.

Para instalar o AWS Command Line Interface
  1. Acesse Install or update to the latest version of the AWS CLI e siga as instruções para instalar a AWS CLI.

    Para acesso à CLI, você precisa de um ID de chave de acesso e de uma chave de acesso secreta. Use credenciais temporárias em vez de chaves de acesso de longo prazo quando possível. As credenciais temporárias incluem um ID de acesso, uma chave de acesso secreta e um token de segurança que indica quando as credenciais expiram. Para obter mais informações, consulte Usar credenciais temporárias com recursos da AWS no Guia do usuário do IAM.

  2. Crie um arquivo contendo informações de configuração, como as chaves de acesso, a região padrão e o formato de saída do comando. Em seguida, defina a variável de ambiente AWS_CONFIG_FILE para referenciar esse arquivo. Para obter instruções detalhadas, vá para Configurando a interface da linha de comando da AWS no Manual do usuário da AWS Command Line Interface.

  3. Execute um comando de teste para confirmar se a interface da AWS CLI está funcionando. Por exemplo, o seguinte comando deve exibir informações de ajuda da AWS CLI:

    aws help

    O seguinte comando deve exibir informações de ajuda para Amazon Redshift:

    aws redshift help

Para obter material de referência sobre os comandos da CLI do Amazon Redshift, acesse Amazon Redshift em Referência da AWS CLI.