OCEL001 Comércio Eletrônico Módulo 9_5: AWS Prof. Charles Christian Miers e-mail: charles.miers@udesc.br
Amazon AWS Histórico, entrevista com Jeff Bezos http://blog.b3k.us/2009/01/25/ec2-origins.html Datas importantes: Julho/2002 Lançamento AWS Março/2006 Lançamento Amazon S3 Agosto/2006 Lançamento EC2... 2
Amazon AWS É o conjunto de web services que constituem uma plataforma de computação em nuvem Desenvolvida e mantida pela Amazon Os serviços mais populares Amazon EC2 Permite a criação de servidores virtuais Amazon S3 Armazenamento escalável na nuvem 3
Amazon AWS Amazon Web Services (AWS): http://aws.amazon.com/ Permite terceirização de recursos computacionais Amazon Elastic Compute Cloud (Amazon EC2) Amazon Simple Storage Service (Amazon S3) Tarifação baseada em uso APIs (Web Services / Rest) para interação com software de provisionamento e monitoração Permitem a criação de empresas de prestação de serviços internet sem servidores
5
EC2 Elastic Compute Cloud 6
Amazon AWS - EC2 Oferece uma capacidade de computação redimensionável na nuvem A interface simples permite criar e configurar instâncias sem dificuldades No modo gratuito é possível criar instâncias T1 Micro com poucos recursos computacionais, mas suficientes para testes 7
Amazon AWS EC2 (Cont.) Permite a execução remota de várias instâncias de uma máquina virtual: Templates de hardware c/ XEN (ex.: Standard, High-Memory, High-CPU,etc.) Imagens pré-configuradas com SO e softwares Definição de zonas onde instâncias serão executadas, regras de firewall, etc. Diferentes modelos de tarifação: on-demand, reserved e spot Há diversas AMI customizadas com aplicações de fornecedores Exemplo: IBM (http://aws.amazon.com/ibm/ ) AMI com Suse Linux e aplicativos IBM (ex.: DB2, Websphere, Tivoli,etc.) Possibilidade de conversão de licenças normais para licenças EC2 8
Amazon AWS EC2 (Cont.) Preços para On-demand medium Instance (por hora de execução USD) US East South (North America Virginia) (SP/Brasil) Linux/Unix 0.070 0.095 Windows 0.133 0.158 Linux + DB2 Express 0.365 0.375 Small Instance (default): 1.7 GB memory 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit) 160 GB instance storage (150 GB plus 10 GB root partition) 32-bit platform I/O Performance: Moderate Internet Data Transfer (out): $0.15/GB - first 10 TB/mês $0.11/GB próx. 40 TB/mês $0.01 per GB in/out para transf. entre zonas Linux + 0.795 0.805 Websphere Tarifas Reserved (Linux / US-East): Entrada ($181/1ano ou $286/3anos) + $0.022/h Fonte: http://aws.amazon.com/ec2/pricing/ 9
10
Casos de Uso Startups Ciência e pesquisa Gerenciamento e balanceamento de carga Servidores http://aws.amazon.com/solutions/case-studies/ 11
Criando uma nova instância Console de gerenciamento da Amazon Web Services (AWS), primeiro grupo de serviços, clicar em EC2 12
Criando uma nova instância Na página seguinte é exibido o painel de gerenciamento do EC2 Para criar uma nova instância, clique no botão Launch Instance 13
Criando uma nova instância Surgirá no navegador um assistente de criação de instâncias Selecione a opção Free tier only 14
Criando uma nova instância 15
Criando uma nova instância Na tela seguinte, será apresentada uma lista de imagens dos sistemas operacionais disponíveis Selecione a versão mais recente do Ubuntu Server LTS, na versão 64-bit 16
Criando uma nova Instância 17
Criando uma nova instância Selecionar a imagem e definir a arquitetura Clicar em Select 18
Criando uma nova instância Na próxima etapa é escolhido o número de instâncias a serem criadas, o tipo da instância e a localização A instância do tipo T1.Micro está disponível no modo gratuito por um ano Até 750 horas por mês Clique em Next: Configure Instance Details 19
20
Criando uma nova instância Selecione a região us-west-2a 21
Criando uma nova instância Configurar o particionamento dos discos, quando necessário> Clicar no botão Add New Volume para criar novos volumes ou mudar o tamanho e tipo do volume padrão (Root) Se não for necessário, basta clicar em Next: Tag Instance 22
Criando uma nova instância 23
24
Criando uma nova instância O próximo passo consiste em configurar o Firewall da instância Por padrão existe um grupo de segurança configurado Somente está liberado o acesso via SSH 25
26
27
28
Criando uma nova instância Clicar em Review and Launch Revisar as configurações e se tudo estiver ok clicar em Launch É necessário criar um Key Pair para acessar a instância via SSH Clicar em Create a new key pair Escolher o nome da chave Salve o arquivo gerado Clicar em Launch Instances para iniciar a instância que acabou de configurar 29
Criando uma nova instância 30
Criando uma nova instância 31
Acesso às Instâncias 32
Acesso via SSH O único modo de acessar sua instância é pelo SSH (Secure Shell) Mesmo que você tente acessar pelo console de gerenciamento da Amazon, terá de usar um cliente SSH baseado Java que é executado a partir do navegador 33
Acesso via SSH Para se conectar é necessário usar a chave pública que foi criada durante a criação da instância O GNU/Linux já possui nativamente um cliente SSH Para se conectar basta digitar: ssh -i <caminho_da_chave.pem> ubuntu@<fqdn da instância> Importante mudar os atributos de permissão da chave: chmod 400 <nome da chave>.pem 34
Acesso via SSH: Nome FQDN da Instância 35
Acesso via SSH No acesso via navegador somente é necessário informar a localização da chave de acesso e executar o aplicativo 36
Acesso via SSH 37
Acesso via SSH Se tudo estiver certo, o aplicativo de SSH (applet) será aberto e fornecerá acesso ao sistema 38
S3 Simple Storage Service 39
Amazon AWS - S3 Oferece capacidade escalável de armazenamento na nuvem Pode ser utilizado para armazenar qualquer quantidade de dados e recuperá-los de qualquer lugar na web O nível gratuito permite até 5GB de armazenamento O armazenamento é realizado por meio de buckets (depósitos) 40
Amazon AWS S3 (Cont.) Permite o armazenamento de dados nos servidores da Amazon, tanto para uso pessoal como de aplicações online Interface via SOAP Acesso a dados via HTTP ou BitTorrent Possibilidade de versionamento de dados Ex. Tarifação de Armazenamento (USD) US Armazenamen to Transf. Dados Requests 0.15/GB (first 50 TB) 0.15/GB (first 10 TB data out) 0.01/1.000 requests (PUT/POST) 0.14/GB (próx. 50 TB) 0.11/GB (próx. 40 TB data out) 0.01/10.000 requests (GET/BT) 41
Amazon AWS S3: Exemplo Jungle Disk Jungle Disk: Serviço de Armazenamento / Backup / Compartilhamento / Sincronização de Arquivos Utiliza-se do Amazon S3 ou do Rackspace para armazenamento Dados criptografados pela aplicação local antes de colocar na nuvem Ex. Tarifação de Armazenamento (USD) Personal Desktop Edition Workgroup Serviço Backup online Backup, disco virtual, sync, share Backup, disco virtual, sync, share Usuário 1 1 vários Custo* 2/mês 3/mês 4/usuário/mês * Fora o custo de Armazenamento da Amazon / Rackspace 42
43
Casos de Uso Compartilhamento de mídias Distribuição de softwares/mídias Backup Armazenamento online Armazenamento de aplicativos 44
API Amazon AWS A Amazon disponibiliza uma API de seus serviços em várias plataformas e linguagens Também disponibiliza Toolkits para as IDEs Eclipse e MS-Visual Studio Site da Amazon está disponível toda a documentação da API As informações das operações da API podem ser enviadas através de: SDK para Java, Visual C#, PHP, Python, entre outras Um CLI disponível para sistemas GNU/Linux 45
API Amazon EC2 A API do Amazon Elastic Compute Cloud possui mais funções do que a API do Simple Storage Service Isso se deve ao fato de que o gerenciamento de máquinas virtuais é mais complexo do que gerenciamento de arquivos 46
API Amazon EC2 Detalhes de algumas ações da API do Amazon EC2: Amazon Machine Images: é possível criar, copiar, modificar e registrar imagens das máquinas Endereços IP Elásticos: possibilita alocar, associar, descrever, desassociar e liberar Ips Elásticos Instâncias: permite iniciar, parar, finalizar, reiniciar e monitorar instâncias, entre outros Pares de chaves: permite criar, deletar e importar pares de chaves de acesso às instâncias Grupos de segurança: criar, excluir, autorizar e revogar acesso dos grupos à certas instâncias 47
API Amazon EC2 Exemplo: Criando uma nova instância (Java) Requisitos: ImageID ID da AMI InstanceType Tipo da instância a ser criada MinCount Número mínimo de instâncias MaxCount Número máximo de instâncias KeyName Nome da chave de acesso SecurityGroup Grupo de segurança da instância 48
API Amazon EC2 Para criar uma instância utilizando o SDK para Java é necessário autenticar o usuário Criar um arquivo chamado: AwsCredentials.properties com a seguinte estrutura: secretkey=sua_chave_secreta accesskey=sua_chave_de_acesso A chave secreta e a chave de acesso devem ser criadas na seção Security Credentials do menu Conta/Console 49
API Amazon EC2 Depois, é necessário definir o local do arquivo e então inicializar o cliente AWSCredentials credentials = new PropertiesCredentials( AwsConsoleApp.class.getResourceAsStream("AwsCre dentials.properties")); amazonec2client = new AmazonEC2Client(credentials); amazonec2client.setendpoint("ec2.us west 2.amazonaw s.com"); 50
API Amazon EC2 Pedido: RunInstancesRequest runinstancesrequest = new RunInstancesRequest(); runinstancesrequest.withimageid("ami 4b814f22").withInstanceType("m1.small").withMinCount(1).withMaxCount(1).withKeyName( YourKeyName ).withsecuritygroups("yoursecuritygroupname"); RunInstancesResult runinstancesresult = amazonec2client.runinstances(runinstancesrequest); Fonte:http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/run-instance.html 51
API Amazon EC2 Exemplo: Criando uma nova instância (CLI GNU/Linux) Comando: ec2-run-instances ami_id -n numero_de_instancias -k keypair -g grupo --instance-type tipo_da_instância Fonte: http://docs.aws.amazon.com/awsec2/latest/commandlinereference/api Reference-cmd-RunInstances.html 52
API Amazon EC2 Exemplo: Exemplo: Criando uma nova instância (CLI Linux) ec2-run-instances ami-d0f89fb9 -n 1 -k administrador -g grupo1 --instance-type t1.micro Obs.1: A ami-d0f89fb9 é correspondente ao SO Ubuntu 12.04 na zona de disponibilidade us-east-1 (Virgínia do Norte) Obs.2: O tipo da instância t1.micro é correspondente ao tamanho de instância micro (gratuito no período de um ano) 53
API Amazon S3 A API do Amazon Simple Storage Service é dividida entre a SOAP API e a REST API Ambas as APIs permitem manipular os buckets e os objetos, mas o acesso é realizado de forma diferente entre essas interfaces 54
API Amazon S3 Detalhes da SOAP API: SOAP é um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída Operações no serviço: Permite listar todos os buckets criados pelo usuário Operações no bucket: Permite criar, deletar, listar, obter e definir a política de controle de acesso e obter e definir o status de registro de um bucket Operações nos objetos: permite colocar objetos, copiá-los, pegá-los, deletá-los, obter e definir a política de controle dos objetos em um buckets 55
API Amazon S3 Detalhes da REST API: REST é uma arquitetura de comunicação distribuída para sistemas hipermídia Possui uma lista de cabeçalhos de pedido e resposta Operações no serviço: permite fazer uma listagem dos buckets de propriedade do remetente autenticada no pedido Operações no bucket: Permite manipular os buckets, como criá-los, deletá-los, manipular as políticas de acesso, as listas de controle de acesso, localização, ciclos de vida, etc. Operações nos objetos: permite manipular os objetos um a um ou vários, simultaneamente. Permite também adicionar objetos divididos em várias partes e então consolidá-los depois 56
API Amazon S3 57
API Amazon S3 Exemplo: Listar todos os buckets Este exemplo lista todos os buckets (depósitos) alocados na zona de disponibilidade escolhida 58
API Amazon S3 Autenticação: AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider( )); Region uswest2 = Region.getRegion(Regions.US_WEST_2); s3.setregion(uswest2); //Região de Oregon 59
API Amazon S3 Pedido: System.out.println("Listing buckets"); for (Bucket bucket : s3.listbuckets()) { System.out.println(" " + bucket.getname()); } Fonte: Retirado dos exemplos do SDK para Java. SDK disponível em: http://aws.amazon.com/pt/sdkforjava/ 60
Casos de Uso utilizando vários serviços Amazon Servidor de Aplicativos Web: Arquiteturas de referência AWS: Amazon EC2 Auto Scaling Elastic Load Balancing Amazon Route 53 Amazon CloudFront Amazon S3 61
62
Casos de Uso utilizando vários serviços Amazon Processamento Batch: Arquitetura de Referência AWS: Amazon EC2 Amazon RDS Amazon SimpleDB Amazon S3 Auto Scaling Amazon SQS 63
64
Casos de Uso utilizando vários serviços Amazon Serviço de conteúdo e mídia: Arquitetura de Referência AWS: Amazon EC2 Amazon Route 53 Amazon CloudFront Amazon S3 65
66
AWS Marketplace 67
AWS Marketplace É possível adquirir soluções prontas no AWS Marketplace As soluções consistem de pacotes pré-configurados de serviços Amazon: Algumas soluções são gratuitas e outras são pagas Para ambos os casos é necessário pagar as taxas dos serviços utilizados 68
69
AWS Marketplace O AWS oferece também algumas soluções e exemplos que funcionam com base nelas Os exemplos vão desde hospedagem web à mecanismos de busca Os exemplos estão disponíveis em: http://aws.amazon.com/pt/solutions/aws-solutions/ 70
71
Leitura recomendada Documentação oficial: http://aws.amazon.com/documentation/ REESE, G. Cloud Application Architectures: Building Applications and Infrastructure in the Cloud (Theory in Practice. 1º ed. O Reilly Media, 2009. RHOTON, J. Cloud Computing Explained: Implementation Handbook for Enterprises. Recursive Press, 2009. 72
Parte destas transparências foram elaboradas na Ação Computação em Nuvem, do Programa de Extensão Socialização de Software e Hardware Livre (Colméia) Colaboração: André Rover Campos, Glauber C. Batista e Charles C. Miers Este trabalho está licenciado sob uma licença Creative Commons Atribuição-Compartilhamento pela mesma licença 2.0 http://creativecommons.org/licenses/by-sa/2.0/br/ 73