Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Programas    

AWS API Tools – Instalando e usando (Java)


Comentários  0
Visualizações  
512.171

A Amazon Web Services é um serviço de computação em nuvem que, entre muitas funcionalidades, disponibiliza uma API para consultar e controlar todos os recursos de uma conta. O próprio AWS Management Console (a interface deles) usa a API para funcionar. Apesar dessa interface web ser funcional e bem prática, às vezes queremos usar a API em outros lugares, como: aplicações, shell scripts, terminal… Para estes casos, os desenvolvedores da AWS disponibilizam diversas ferramentas para a API, dentre elas um conjunto de programas feitos em Java, que se chamam comumente de AWS API Tools (ou AWS CLI Tools).

Esta dica cobre, como exemplo, as ferramentas Java para gerenciar os seguintes serviços AWS:

  • EC2 – Gerenciamento de maquinas e EC2 em geral
  • Cloud Watch – Monitoramento
  • Elastic Load Balancing – Balanceamento entre servidores
  • AMI Tools – Ferramentas para imagens de máquinas amazon (AMI)
  • Auto Scaling Tools – Escala de servidores automática com métricas
  • IAM – Gerenciamento de segurança, usuários e policies

Baixando

Não existe uma página central para o download de todas as ferramentas juntas, mas cada serviço tem sua página de ferramenta para download separado:

Neste link, siga os links para as ferramentas que vocẽ quer baixar. Geralmente todas as ferramentas estão compactadas em formato zip. Para este tutorial, eu baixei os seguintes arquivos:

(Atenção! Os links podem mudar com o tempo, para versões mais novas! prefira ir pelo link anterior):

Instalação

Antes de mais nada, crie um diretório chamado .ec2 em seu HOME:

mkdir -p $HOME/.ec2/

Com os arquivos baixados, vamos supor aqui nessas instruções, que foi baixado no diretório $HOME/Downloads, sugiro descompactar esses arquivos no diretório .ec2 e fazer links simbólicos para quando você precisar atualizar a versão, atualizar apenas o link simbólico, assim:

cd $HOME/.ec2

unzip $HOME/Downloads/ec2-api-tools.zip
ln -s ec2-api-tools-1.6.7.1 ec2-api-tools

unzip $HOME/Downloads/ec2-ami-tools.zip
ln -s ec2-ami-tools-1.4.0.9 ec2-ami-tools

unzip $HOME/Downloads/CloudWatch-2010-08-01.zip
ln -s CloudWatch-1.0.13.4/ mon-tools

unzip $HOME/Downloads/ElasticLoadBalancing.zip
ln -s ElasticLoadBalancing-1.0.17.0 elb-tools

unzip $HOME/Downloads/AutoScaling-2011-01-01.zip
ln -s AutoScaling-1.0.61.2/ asg-tools

unzip $HOME/Downloads/IAMCli.zip
ln -s IAMCli-1.5.0/ iam-tools

Como as aplicações são em JAVA, não é preciso compilar nem fazer passos adicionais. As aplicações em si já estão instaladas, mas agora falta configurar.

Credenciais

Antes de começar a configurar, você vai precisar das credenciais Amazon para usar as ferramentas. Quando eu falo credenciais, não quer dizer usuário/senha, e sim as chaves de acesso que a Amazon fornece à cada usuário, via IAM (um dos serviços deles). Chamadas de AWS Access Key e AWS Secret Key, é uma espécie de chaves públicas e privadas que são associadas diretamente ao seu usuário, como se você estivesse colocando usuário e senha na interface de gerenciamento web.

Acesse a parte de usuários do IAM e veja se você já tem algum usuário ou não. Caso não tenha um usuário, crie um. Na hora de informar os nomes dos usuários, existe um checkbox falando para “Criar uma access key para cada usuário”. É exatamente dessa access key que precisamos, então deixe o checkbox marcado. Logo após criar o usuário, uma caixa de informação com as chaves deve aparecer. Atenção: anote essas chaves pois só vai aparecer agora.

AWS New User

Se você já tem o usuário criado, selecione-o, vá na aba Security Credentials e clique em Manage Access Keys. Nessa tela você consegue criar novas chaves e visualizar a pública das já criadas.

AWS User Credentials

Com as chaves em mãos, crie um arquivo de credenciais com elas:

Atenção! nos comandos à seguir, substitua o >usuario< pelo nome do seu usuário, >access key< e >secret key< pelas respectivas chaves obtidas quando você criou o usuário.

cat <<EOF > $HOME/.ec2/<usuario>.cred
AWSAccessKeyId=<access key>
AWSSecretKey=<secret key>
EOF

# Permissão apenas pro usuário
chmod 600 $HOME/.ec2/<usuario>.cred

Este novo arquivo ($HOME/.ec2/usuario.cred) será lido pelas ferramentas e utilizado para se autenticar nos serviços AWS.

Certificado

Atualmente, o método padrão de autenticação para as ferramentas são as chaves de acesso. Porém, alguns poucos comandos legados ainda utilizam um certificado para fazer a autenticação. Sendo assim, para não deixar nenhuma brecha, vamos usar esse certificado também. Comece gerando o certificado:

Atenção! nos comandos à seguir, substitua o >usuario< pelo nome do seu usuário, Alguns comandos são interativos, então é necessário que vocẽ execute um de cada vez. Você vai precisar colocar uma senha, e opcionalmente dar algumas informações de localização. Na maioria das vezes você só vai precisar apertar ENTER para usar os valores padrões.

cd $HOME/.ec2

openssl genrsa -des3 -out <usuario>.key 2048
openssl req -new -key <usuario>.key -out <usuario>.csr
openssl rsa -in <usuario>.key -out <usuario>.key.semsenha
mv <usuario>.key.semsenha <usuario>.key
openssl x509 -req -days 1025 -in <usuario>.csr -signkey <usuario>.key -out <usuario>.crt
openssl pkcs8 -topk8 -in <usuario>.key -nocrypt > <usuario>-pkcs8.key

Estes comandos criam uma chave privada de 2048 bits e geram um certificado. Como vamos usar isso de forma automática, tiramos a senha da chave privada – o arquivo com extensão .key – por isso guarde esses arquivos com cuidado. O último comando transforma o formato de chave em pkcs8, que algumas ferramentas exigem.

No final das contas, você terá os seguintes arquivos no seu diretório $HOME/.ec2:

  • usuario.key: a chave privada
  • usuario-pkcs8.key: a chave privada em formato pkcs8
  • usariuo.crt: o certificado
  • usuario.csr: a requisição para assinar o certificado (não é utilizado)

Agora novamente na interface web, no mesmo lugar onde você vê as chaves do usuário, clique em Manage Signing Certificates e você poderá ver e associar certificados ao usuário. Como ainda não temos nenhum certificado associado, basta fazer upload de um, copiando o conteúdo do arquivo usuario.crt na caixa e pronto!

AWS User Certificate

Configurando

Com as credenciais (e certificado) na mão, é hora de configurar as ferramentas. Para facilitar as coisas, vamos criar um shell script que configura todas as variáveis de ambiente para usar as ferramentas. Comece criando um arquivo chamado env.sh com o seguinte conteúdo:

Atenção! nos comandos à seguir, substitua o >usuario< pelo nome do seu usuário.

#!/bin/bash
#
# Substitua pelo seu PATH java
export JAVA_HOME="/opt/jre1.7.0_11-x64"

export AWS_HOME=$HOME/.ec2
export EC2_HOME=$AWS_HOME/ec2-api-tools
export EC2_AMITOOL_HOME=$AWS_HOME/ec2-ami-tools
export AWS_CLOUDWATCH_HOME=$AWS_HOME/mon-tools
export AWS_ELB_HOME=$AWS_HOME/elb-tools
export AWS_AUTO_SCALING_HOME=$AWS_HOME/asg-tools
export AWS_IAM_HOME=$AWS_HOME/iam-tools

export AWS_CREDENTIAL_FILE=$AWS_HOME/<usuario>.cred
export EC2_PRIVATE_KEY=$AWS_HOME/<usuario>-pkcs8.key
export EC2_CERT=$AWS_HOME/<usuario>.crt

PATH="$PATH:$EC2_HOME/bin:$EC2_AMITOOL_HOME/bin:$AWS_CLOUDWATCH_HOME/bin:$AWS_ELB_HOME/bin:$AWS_AUTO_SCALING_HOME/bin:$AWS_IAM_HOME/bin"
export PATH
  • Na linha 4, substitua pelo PATH do Java instalado em sua máquina. Pode ser o Java da Oracle ou o OpenJDK;
  • As linhas 6-12 definem um “HOME” para cada uma das ferramentas que instalamos. Se vocẽ instalar outra ferramenta, provavelmente vai ter que adicionar uma linha parecida (geralmente a linha tem em algum readme.txt que vem com o pacote;
  • As linhas 14-16 especificam as credenciais e certificado que criamos anteriormente;
  • As últimas duas linhas definem o PATH para a shell do Linux procurar os comandos de forma correta. Se você instalar outra ferramenta, vai ter que adicionar o “HOME” dela no PATH também.

Coloque este arquivo para ser carregado toda vez que você iniciar uma shell bash (bashrc):

cat <<EOF >> $HOME/.bashrc
# Carrega o ambiente Amazon AWS
. \$HOME/.ec2/env.sh
EOF

Pronto! Todo shell novo vai ter as configurações de variáveis de ambiente e PATH necessários para as API Tools funcionarem.

Usando

Alguns exemplos de uso rápido para você testar:

# Lista as regiões disponíveis do EC2
ec2-describe-regions

# Lista as instâncias no EC2 formato comum na regiao padrão (N. Virginia)
ec2-describe-instances

# Mesma lista, só que na região Sao Paulo (parâmetro --region sempre muda a região em todos os comandos)
ec2-describe-instances --region sa-east-1

# Criar uma maquina m1.large no security group ssh
ec2-run-instances <AMI ID> -t m1.large -k <keypair> -g ssh

# Parar uma ou mais maquinas
ec2-stop-instances <instance ID> [instance ID 2] [...]

# Iniciar uma ou mais maquinas
ec2-start-instances <instance ID> [instance ID 2] [...]

# Listar os balanceadores criados
elb-describe-lbs

# Cria um usuário novo e com chaves, chamado bruce-dickinson
iam-usercreate -u bruce-dickinson -k

# Lista os alarmes de monitoração (usado muito pelo Auto Scaling Groups
mon-list-alarms

# Lista os Auto Scaling Groups
as-describe-auto-scaling-groups

Referências

512.171

Comentários  0
Visualizações  
512.171


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *