Amazon Redshift é um knowledge warehouse em nuvem rápido, escalável, seguro e totalmente gerenciado que torna simples e econômico analisar todos os seus dados usando SQL padrão e suas ferramentas existentes de extração, transformação e carga (ETL); inteligência empresarial (BI); e relatórios. Dezenas de milhares de clientes usam o Amazon Redshift para processar exabytes de dados por dia e cargas de trabalho de análise de energia, como BI, análise preditiva e análise de streaming em tempo actual.
HashiCorp Terraform é uma ferramenta de infraestrutura como código (IaC) que permite que você defina recursos de nuvem em arquivos de configuração legíveis por humanos que você pode versionar, reutilizar e compartilhar. Você pode então usar um fluxo de trabalho consistente para provisionar e gerenciar sua infraestrutura durante todo o seu ciclo de vida.
Nesta postagem, demonstramos como usar o Terraform para gerenciar operações comuns de cluster Redshift, como:
- Criando um novo cluster Redshift provisionado usando o código Terraform e adicionando um Gerenciamento de identidade e acesso da AWS (IAM) papel para isso
- Agendamento de operações de pausa, retomada e redimensionamento para o cluster Redshift
Visão geral da solução
O diagrama a seguir ilustra a arquitetura da solução para provisionar um cluster Redshift usando o Terraform.
Além do Amazon Redshift, a solução utiliza os seguintes serviços da AWS:
- Nuvem de computação elástica da Amazon (Amazon EC2) oferece a plataforma de computação mais ampla e profunda, com mais de 750 instâncias e escolha dos mais recentes processadores, armazenamento, rede, sistema operacional (SO) e modelo de compra para ajudar você a atender melhor às necessidades da sua carga de trabalho. Para esta publicação, usamos uma instância m5.xlarge com o Home windows Server 2022 Datacenter Version. A escolha do tipo de instância e do SO Home windows é flexível; você pode escolher uma configuração que se adapte ao seu caso de uso.
- O IAM permite que você gerencie identidades e acessos com segurança a serviços e recursos da AWS. Usamos funções e políticas do IAM para acessar serviços com segurança e executar operações relevantes. Uma função do IAM é uma identidade da AWS que você pode assumir para obter acesso temporário a serviços e recursos da AWS. Cada função do IAM tem um conjunto de permissões definidas por políticas do IAM. Essas políticas determinam as ações e os recursos que a função pode acessar.
- Gerenciador de segredos da AWS permite que você armazene com segurança o nome de usuário e a senha necessários para efetuar login no Amazon Redshift.
Nesta postagem, demonstramos como configurar um ambiente que conecta AWS e Terraform. A seguir estão as tarefas de alto nível envolvidas:
- Configurar uma instância EC2 com sistema operacional Home windows na AWS.
- Instale o Terraform na instância.
- Configure suas variáveis de ambiente (sistema operacional Home windows).
- Definir uma política de IAM ter acesso mínimo para executar atividades em um cluster Redshift, incluindo pausar, retomar e redimensionar.
- Estabelecer uma função IAM usando a política que você criou.
- Crie um cluster Redshift provisionado usando o código Terraform.
- Anexe a função do IAM que você criou ao cluster Redshift.
- Escreva o código do Terraform para agendar operações de cluster, como pausar, retomar e redimensionar.
Pré-requisitos
Para concluir as atividades descritas neste publish, você precisa de uma AWS conta e privilégios de administrador na conta para usar os principais serviços da AWS e criar as funções do IAM necessárias.
Criar uma instância EC2
Começamos criando uma instância EC2. Conclua as seguintes etapas para criar uma instância EC2 do Home windows OS:
- No console do Amazon EC2, escolha Instância de lançamento.
- Escolha uma Amazon Machine Picture (AMI) do Home windows Server que atenda às suas necessidades.
- Selecione um tipo de instância apropriado para seu caso de uso.
- Configure os detalhes da instância:
- Escolha a VPC e a sub-rede onde você deseja iniciar a instância.
- Habilitar Atribuição automática de IP público.
- Para Adicionar armazenamentoconfigure as opções de armazenamento desejadas para sua instância.
- Adicione quaisquer tags necessárias à instância.
- Para Configurar grupo de segurançaselecione ou crie um grupo de segurança que permita o tráfego de entrada e saída necessário para sua instância.
- Revise a configuração da instância e escolha Lançar para iniciar o processo de criação da instância.
- Para Selecione um par de chaves existente ou crie um novo par de chavesescolha um par de chaves existente ou crie um novo.
- Escolher Instância de lançamento.
- Quando a instância estiver em execução, você poderá se conectar a ela usando o Protocolo de Área de Trabalho Remota (RDP) e a senha do administrador obtida no Obter senha do Home windows
Instalar o Terraform na instância EC2
Instale o Terraform na instância do Home windows EC2 usando as seguintes etapas:
- RDP na instância EC2 que você criou.
- Instalar Terraform na instância EC2.
Você precisa atualizar as variáveis de ambiente para apontar para o diretório onde o executável do Terraform está disponível.
- Sob Propriedades do sistemano Avançado aba, escolha variáveis ambientais.
- Escolha a variável de caminho.
- Escolher Novo e insira o caminho onde o Terraform está instalado. Para este publish, está no
C:
diretório.
- Confirme se o Terraform está instalado digitando o seguinte comando:
terraform -v
Opcionalmente, você pode usar um editor como o Visible Studio Code (VS Code) e adicionar a extensão Terraform a ele.
Crie um usuário para acessar a AWS por meio de código (AWS CLI e Terraform)
Em seguida, criamos um usuário administrador no IAM, que realiza as operações na AWS por meio do Terraform e do Interface de linha de comando da AWS (AWS CLI). Conclua as seguintes etapas:
- Criar um novo usuário do IAM.
- No console do IAM, baixe e salve a chave de acesso e a chave de usuário.
- Instalar a AWS CLI.
- Inicie a AWS CLI e execute
aws configure
e passe o ID da chave de acesso, a chave de acesso secreta e a região padrão da AWS.
Isso evita que o nome de usuário e a senha da AWS fiquem visíveis em texto simples no código do Terraform e evita o compartilhamento acidental quando o código é confirmado em um repositório de código.
Crie um usuário para acessar o Redshift por meio de código (Terraform)
Como estamos criando um cluster Redshift e operações subsequentes, o nome de usuário e a senha do administrador necessários para esses processos (diferente da função de administrador que criamos anteriormente para efetuar login no Console de gerenciamento da AWS) precisa ser invocado no código. Para fazer isso com segurança, usamos o Secrets and techniques Supervisor para armazenar o nome de usuário e a senha. Escrevemos código no Terraform para acessar essas credenciais durante a operação de criação do cluster. Conclua as seguintes etapas:
- No console do Secrets and techniques Supervisor, escolha Segredos no painel de navegação.
- Escolher Armazene um novo segredo.
- Para Tipo secretoselecione Credenciais para o knowledge warehouse do Amazon Redshift.
- Insira suas credenciais.
Configurar Terraform
Conclua as seguintes etapas para configurar o Terraform:
- Crie uma pasta ou diretório para armazenar todo o seu código do Terraform.
- Abra o editor do VS Code e navegue até sua pasta.
- Escolher Novo arquivo e digite um nome para o arquivo usando a extensão .tf
Agora estamos prontos para começar a escrever nosso código começando com a definição de provedores. A definição de provedores é uma maneira do Terraform obter as APIs necessárias para interagir com a AWS.
- Configurar um provedor para o Terraform:
- Acesse as credenciais de administrador do usuário administrador do Amazon Redshift:
Criar um cluster Redshift
Para criar um cluster Redshift, use o aws_redshift_cluster
recurso:
Neste exemplo, criamos um cluster Redshift chamado tf-example-redshift-cluster
usando o cluster de nó tipo 2 do nó ra3.xlplus. Usamos as credenciais do Secrets and techniques Supervisor e jsondecode para acessar esses valores. Isso garante que o nome de usuário e a senha não sejam passados em texto simples.
Adicionar uma função do IAM ao cluster
Como não tínhamos a opção de associar uma função do IAM durante a criação do cluster, fazemos isso agora com o seguinte código:
Habilitar operações de cluster Redshift
Executar operações no cluster Redshift, como redimensionar, pausar e retomar em um cronograma, oferece um uso mais prático dessas operações. Portanto, criamos duas políticas: uma que permite o serviço do planejador do Amazon Redshift e uma que permite as operações de pausa, retomada e redimensionamento do cluster. Em seguida, criamos uma função que tem ambas as políticas anexadas a ela.
Você pode executar essas etapas diretamente do console e, em seguida, referenciadas no código do Terraform. O exemplo a seguir demonstra os snippets de código para criar políticas e uma função e, em seguida, anexar a política à função.
- Crie o documento de política do agendador do Amazon Redshift e crie a função que assume esta política:
- Crie um documento de política e uma política para operações do Amazon Redshift:
- Anexe a política à função do IAM:
- Pausar o cluster Redshift:
No exemplo anterior, criamos uma ação agendada chamada tf-redshift-scheduled-action-pause
que pausa o cluster às 22h todos os dias como uma ação de economia de custos.
- Retomar o cluster Redshift:
No exemplo anterior, criamos uma ação agendada chamada tf-redshift-scheduled-action-resume
que retoma o cluster às 7h15 todos os dias, a tempo para que as operações comerciais comecem a usar o cluster Redshift.
- Redimensione o cluster Redshift:
No exemplo anterior, criamos uma ação agendada chamada tf-redshift-scheduled-action-resize
que aumenta os nós de 2 para 4. Você pode fazer outras operações como alterar o tipo de nó também. Por padrão, o redimensionamento elástico será usado, mas se você quiser usar o redimensionamento clássico, você tem que passar o parâmetro basic = true
conforme mostrado no código anterior. Esta pode ser uma ação programada para antecipar as necessidades de períodos de pico e redimensionar apropriadamente para essa duração. Você pode então reduzir o tamanho usando código semelhante durante os períodos de menor movimento.
Teste a solução
Aplicamos o seguinte código para testar a solução. Altere os detalhes do recurso de acordo, como ID da conta e nome da região.
Correr terraform plan
para ver uma lista de alterações que serão feitas, conforme mostrado na captura de tela a seguir.
Depois de revisar as alterações, use terraform apply
para criar os recursos que você definiu.
Você será solicitado a entrar sure
ou no
antes que o Terraform comece a criar os recursos.
Você pode confirmar que o cluster está sendo criado no console do Amazon Redshift.
Após a criação do cluster, as funções e programações do IAM para operações de pausa, retomada e redimensionamento são adicionadas, conforme mostrado na captura de tela a seguir.
Você também pode visualizar essas operações agendadas no console do Amazon Redshift.
Limpar
Se você implantou recursos como o cluster Redshift e as funções do IAM, ou qualquer outro recurso associado executando terraform apply
para evitar incorrer em cobranças em sua conta AWS, execute terraform destroy
para destruir esses recursos e limpar seu ambiente.
Conclusão
O Terraform oferece uma solução poderosa e flexível para gerenciar sua infraestrutura como código usando uma abordagem declarativa, com uma natureza agnóstica de nuvem, capacidades de orquestração de recursos e forte suporte da comunidade. Esta publicação forneceu um guia abrangente para usar o Terraform para implantar um cluster Redshift e executar operações importantes, como redimensionar, retomar e pausar no cluster. Adotar o IaC e usar as ferramentas certas, como Workflow Studio, VS Code e Terraform, permitirá que você crie aplicativos distribuídos escaláveis e sustentáveis, e automatize processos.
sobre os autores
Amit Ghodke é um Arquiteto de Soluções Especialista em Análise baseado em Austin. Ele trabalhou com bancos de dados, knowledge warehouses e aplicativos analíticos nos últimos 16 anos. Ele adora ajudar os clientes a implementar soluções analíticas em escala para obter o máximo valor comercial.
Ritesh Kumar Sinha é um Arquiteto de Soluções Especialista em Análise baseado em São Francisco. Ele ajudou clientes a construir soluções de knowledge warehousing e huge knowledge escaláveis por mais de 16 anos. Ele adora projetar e construir soluções ponta a ponta eficientes na AWS. Em seu tempo livre, ele adora ler, caminhar e fazer ioga.