AWS Partner Network (APN) Blog – Brasil

Automatizando o Start/Stop das suas Instâncias EC2

Por Angelo Carvalho e Glauber Gallego, Partner Solution Architects

Dentre as muitas vantagens da computação em nuvem, uma das principais é o provisionamento sob demanda. O cliente provisiona recursos, como servidores e storage, somente quando eles são realmente necessários, pagando somente pelo que utiliza. Na maioria dos casos, os ambientes de desenvolvimento e qualidade, só são necessários em horário comercial. Algumas vezes isso também é verdade para ambientes de produção. Um bom exemplo disso são os ERPs em empresas que não operam fora do horário de expediente.

Considerando que um mês tem em média 30.5 dias, chegamos a um total de 732 horas, sendo 192 horas úteis. Considerando que os seus servidores ficarão ligados somente em horário comercial, você poderia ter uma economia aproximada de até 73% com o custo dos servidores EC2, caso os mantenha desligados no momento em que não são necessários. Importante lembrar que esta economia é referente somente ao EC2. Os custos com o block storage (EBS) não param quando as suas instâncias EC2 são desligadas.

Existem várias maneiras de se agendar o ligar/desligar dos servidores. Alguns parceiros da AWS oferecem excelentes produtos para isso. Se você procura por uma solução mais completa, faça uma pesquisa na web ou consulte o nosso marketplace em: https://aws.amazon.com/marketplace.

Se você procura uma solução mais simples para fazer este agendamento, pode utilizar o AWS Lambda para isso. O AWS Lambda permite a execução de funções escritas em Java, Node.js, C#, e Python. Você pode usar o Lambda para criar, executar e agendar desde funções simples até aplicações completas. Estamos disponibilizando duas funções que podem ser utilizadas para agendar o start/stop dos seus servidores. Siga as instruções a seguir para criar e agendar a execução das funções:

1) Abra o AWS console e escolha uma região que possua o serviço AWS Lambda. Neste tutorial iremos escolher a Região Virgínia;
2) Clique no botão: “Create a Lambda Function”. Selecione o blueprint “Blank Function”;
3) Na tela “Configure Triggers”, simplesmente clique “Next”. Podemos configurar o agendamento mais tarde;
4) Dê um nome para a sua função. Vamos começar pela função que inicia as instâncias. Neste tutorial usaremos o nome “start_ec2_instances”;
5) Escolha Python 2.7 como Runtime;
6) Copie e cole o conteúdo da função abaixo;

import boto3
import sys, traceback
from datetime import datetime
from time import sleep

def start_ec2_instances():
    start_time = datetime.now()

    # starting ec2 client
    ec2_client = boto3.client('ec2')

    regions = ec2_client.describe_regions()

    for region in regions['Regions']:
        try:
            print("Region: " + str(region['RegionName']))
            ec2_client = boto3.client('ec2', region_name=region['RegionName'])
            instances = ec2_client.describe_instances()
            instanceIds = list()
            
            for reservation in instances['Reservations']:
                for instance in reservation['Instances']:
                    if instance['State']['Name'] == "stopped" and not instance['Tags'] is None : 
                        for tag in instance['Tags']:
                            try:
                                if tag['Key'] == 'ScheduledStartStop' and tag['Value'] == 'True'    :
                                    instanceIds.append(instance['InstanceId'])
                            except:
                                print "Not expected error: ", traceback.print_exc()
                      
            if len(instanceIds) > 0 : 
                print "Starting instances: " + str(instanceIds)
                ec2_client.start_instances(InstanceIds=instanceIds)                                                   
                                                            
        except:
            print "Not expected error:", traceback.print_exc()
                                                           
    end_time = datetime.now()
    took_time = end_time - start_time
    print "Total time of execution: " + str(took_time)    

def lambda_handler(event, context):
    print('Starting instances... ')
    start_ec2_instances()

 

7) No campo “Role”, selecione a opção “Create a Custom Role”;
8) Escolha a opção “Create a new IAM Role” para o campo “IAM Role” e dê um nome para a sua Role. Neste tutorial usaremos o nome “start_stop_instances” e vamos reutilizar posteriormente esta Role para a função que pára as instâncias;
9) Clique em “View Policy Document”, depois em “Edit”. Copie e cole o conteúdo da policy abaixo:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeRegions",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],   
      "Resource": "*"
    }	
  ]
}

10) Altere o Timeout para 5 minutos;
11) Clique “Next”, e depois em “Create Function”;
12) Clique no botão “Test” para testar a função.
13) Se a função rodou sem erros, é hora de criar o agendamento;
14) Clique na aba “Triggers”, em em “Add Trigger”;
15) Selecione a opção “CloudWatch Events – Schedule”;
16) Dê um nome para a sua regra. Neste tutorial, usaremos o nome “Start_Instances”;
17) Coloque uma expressão cron no campo “Schedule expression” que represente os dias e horários que você deseja executar a sua função. Para rodar de segunda a sexta feira às 8 da manhã, use a expressão “cron(0 10 ? * MON-FRI *)”. Perceba que a expressão usa o fuso horário UTC. Como atualmente (horário de verão) temos uma diferença de duas horas, usaremos 10 em vez de 8 para representar a hora de início;
18) Clique em submit e pronto, a sua função já está agendada;
19) A função acima só atuará em instâncias que possuam a Tag “ScheduledStartStop” com o valor “True”. Logo, adicione esta tag nas instâncias que você deseja que sejam iniciadas/paradas automaticamente;

Agora que você já configurou a sua primeira função Lambda, basta repetir os passos acima e criar a função que pára as instâncias, mas usando o script abaixo e alterando o horário do agendamento:

import boto3
import sys, traceback
from datetime import datetime
from time import sleep

def stop_ec2_instances():
    start_time = datetime.now()

    # starting ec2 client
    ec2_client = boto3.client('ec2')

    regions = ec2_client.describe_regions()

    for region in regions['Regions']:
        try:
            print("Region: " + str(region['RegionName']))
            ec2_client = boto3.client('ec2', region_name=region['RegionName'])
            instances = ec2_client.describe_instances()
            instanceIds = list()
            
            for reservation in instances['Reservations']:
                for instance in reservation['Instances']:
                    if instance['State']['Name'] == "running" and not instance['Tags'] is None : 
                        for tag in instance['Tags']:
                            try:
                                if tag['Key'] == 'ScheduledStartStop' and tag['Value'] == 'True'    :
                                    instanceIds.append(instance['InstanceId'])
                            except:
                                print "Not expected error: ", traceback.print_exc()
                      
            if len(instanceIds) > 0 : 
                print "Stopping instances: " + str(instanceIds)
                ec2_client.stop_instances(InstanceIds=instanceIds, Force=False)                                                   
                                                            
        except:
            print "Not expected error:", traceback.print_exc()
                                                           
    end_time = datetime.now()
    took_time = end_time - start_time
    print "Total time of execution: " + str(took_time)    

def lambda_handler(event, context):
    print('Stopping instances... ')
    stop_ec2_instances()

Pronto! Agora é só aproveitar a economia na sua próxima fatura mensal da AWS!

 

Novidade: Workday escolhe a AWS como provedor de infraestrutura de nuvem


Líder em aplicações de nuvem empresarial para finanças e recursos humanos, a Workday escolheu a AWS como seu provedor de infraestrutura de nuvem pública preferencial para cargas de trabalho de produção de clientes. Através desta parceria, a Workday está a dar mais um passo na sua estratégia de nuvem pública a longo prazo, oferecendo aos clientes a opção de executar suas aplicações pela primeira vez na nuvem pública.

“A capacidade de executar nossos aplicativos na nuvem AWS ressalta nosso compromisso de oferecer a segurança, confiabilidade e inovação contínua que nossos clientes esperam quando se trata de infraestrutura, enquanto expandimos continuamente as formas de otimizar a produtividade da força de trabalho e o desempenho do negócio”, pontuou o CEO da empresa, Aneel Bhusri.

Amazon EC2: sete novos serviços de computação para suportar uma gama ainda mais ampla de cargas de trabalho


A AWS anunciou a próxima geração de instâncias Amazon Elastic Compute Cloud (EC2), otimizando as soluções de computação e memória, e adicionou duas novas opções de aceleração de hardware à sua gama de serviços de computação. Otimizadas para fornecer a combinação certa de CPU, memória, armazenamento e capacidade de rede para uma ampla gama de aplicações, a próxima geração de tecnologias AWS incluem os mais recentes processadores e tecnologias de armazenamento. Elas possuem uma rede aprimorada com Elastic Network Adapter (ENA) da AWS, uma interface de rede personalizada otimizada para oferecer um alto desempenho PPS (Packet Per Second), com baixa latência e jitter.

Novos tamanhos de instâncias T2: Os novos tamanhos maiores de instâncias T2 burstable permitem aplicações web que requerem uso de memória maiores. Vamos adicionar o t2.xlarge (16 GiB de memória) e o t2.2xlarge (32 GiB de memória), que vão oferecer até 4 vezes mais desempenho em comparação com as instâncias existentes.

Instância F1: É a primeira instiancia de computação acelerada por hardware, programável pelo cliente, com FPGAs, que podem aumentar o desempenho em até 30 vezes em relação às CPUs de uso geral. As GPUs Elásticas do Amazon EC2 permitem que os clientes anexem facilmente aceleração gráfica de baixo custo e qualidade profissional às instâncias do Amazon EC2.

Instâncias R4: As instâncias R4 são projetadas para a Business Intelligence (BI), e melhoram as instâncias R3 populares com um cache L3 maior e velocidades de memória mais altas. Elas suportam até 20 Gbps de largura de banda de rede com energia ENA quando usadas dentro de um grupo de canais, além de 12 Gbps de taxa de transferência dedicada ao Amazon Elastic Block Store (EBS). As instâncias estão disponíveis em seis tamanhos, com até 64 vCPUs e 488 GiB de memória.

Instâncias C5: As novas instâncias serão baseadas no novo processador Xeon “Skylake” da Intel, funcionando mais rápido que os processadores em qualquer outra instância do EC2. O Skylake suporta AVX-512 para aprendizado de máquinas, multimídia, além de operações científicas e financeiras que requerem suporte de alto nível para cálculos de ponto flutuante. As instâncias estarão disponíveis em seis tamanhos, com até 72 vCPUs e 144 Gb de memória.

AWS Lightsail: comece sua jornada para a nuvem com apenas três cliques


A AWS também anunciou o Amazon Lightsail, uma nova maneira de começar a usar a AWS de forma rápida e simples, com apenas alguns cliques. A nova ferramenta permite a criação de poderosos servidores privados virtuais (VPS) que agregam armazenamento e rede com preços mensais simples. Amazon Lightsail inclui tudo o que os clientes precisam para projetos como sites, blogs, aplicativos personalizados ou servidores de desenvolvimento.

São basicamente três cliques: primeiro, os desenvolvedores escolhem uma imagem de servidor privado virtual de um menu de mais de 10 opções que incluem Linux, WordPress, Drupal e outros, e depois selecionam um dos cinco tamanhos de servidor. O Amazon Lightsail lança automaticamente o VPS, anexa o armazenamento baseado em SSD, configura os grupos de segurança, cria um Virtual Private Cloud (VPC) e, em seguida, torna simples para os desenvolvedores configurar os endereços DNS e IP. Os clientes podem usar modelos de sistema operacional pré-configurados ou configurações de aplicativos populares pré-instalados. O Amazon Lightsail é executado na nuvem da AWS, tornando mais fácil para os clientes se conectarem aos serviços mais avançados quando estiverem prontos. Os clientes pagam uma taxa mensal simples para cada servidor privado virtual, começando em apenas US$ 5.

Amazon Athena: faça análise de dados no Amazon S3 com apenas alguns cliques


Amazon Athena, novo serviço de consulta sem servidor que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão. Com alguns cliques no AWS Management Console, os clientes podem adicionar o Amazon Athena em seus dados armazenados no Amazon S3 e começar a usar SQL padrão para executar consultas e obter resultados em segundos. Com o Amazon Athena não há clusters para gerenciar e ajustar, nenhuma infraestrutura para configurar ou gerenciar, eliminando trabalhos de ETL complexos para preparar seus dados para análise, tornando o processo de análise de dados armazenados no Amazon S3 tão fáceis quantos fazer consultas simples em SQL. O Amazon Athena escala automaticamente e executa consultas em paralelo. Dessa forma, os resultados são rápidos, mesmo com grandes conjuntos de dados e consultas complexas. Além de otimizar o trabalho da sua equipe, os clientes pagam somente pelas consultas que executam.

Snowball Edge: transferência de dados com capacidade de até 100TB

A AWS também anunciou um novo dispositivo de transferência de dados, o AWS Snowball Edge, que pode transportar duas vezes mais dados do que o original (até 100 TB). O serviço é escalável e inclui o novo AWS Greengrass, tornando-o um dispositivo híbrido de transferência de dados para Amazon S3, capaz de agrupar outros dispositivos Snowball Edge para formar um pool de armazenamento no local e executar AWS Lambda para processar e analisar dados.

Amazon GreenGrass: mais inteligência e agilidade aos dispositivos de IoT

Dentre as novidades do re:Invent está o novo software de serviços híbridos que estende AWS IoT e Amazon Lambda para execução local nos próprios gateways e dispositivos dos clientes, com o mesmo modelo de programação usado na nuvem. O AWS Greengrass é um software que permite aos clientes executarem computação AWS, mensagens, armazenamento em cache de dados e recursos de sincronização em dispositivos conectados, otimizando a coleta e análise de dados, mesmo offline. Com o AWS Greengrass, os dispositivos podem executar funções AWS Lambda para executar tarefas localmente, manter sincronizados os dados do dispositivo e comunicar com outros dispositivos, aproveitando ao máximo o processamento, análise e capacidade de armazenamento da nuvem, otimizando custos e tempo. O novo software traz mais inteligência aos dispositivos de IoT e permite aos clientes AWS a flexibilidade de ter tê-los trabalhando na nuvem ou executando tarefas por conta própria somente quando realmente fizer sentido, podendo conversar uns com os outros quando necessário, sem desperdício de tempo e produtividade – tudo em um único ambiente.

O AWS Greengrass elimina a complexidade envolvida na programação e atualização de dispositivos IoT, permitindo que os clientes utilizem o AWS Lambda para executar código localmente da mesma maneira que fazem na nuvem, adicionando funções de forma simples, diretamente do AWS Management Console. Ao executar o código localmente, os dispositivos são capazes de responder a eventos e tomar ações em tempo quase real. O AWS Greengrass também inclui recursos de mensagens e sincronização AWS IoT para que os dispositivos possam enviar mensagens para outros dispositivos sem se conectar novamente à nuvem.

 

Amazon Aurora agora é totalmente compatível com PostgreSQL

Os clientes Amazon Web Services não precisam mais escolher entre desempenho e preço ao avaliar uma solução de banco de dados. A alta performance e a disponibilidade de bancos de dados comerciais de alta demanda podem agora ter um décimo do custo com a compatibilidade completa entre PostgreSQL e Amazon Aurora. Sem custos iniciais ou compromissos, os clientes pagam uma taxa simples por hora e por cada instância que usarem, e podem escalar automaticamente a capacidade de armazenamento sem tempo de inatividade ou degradação de desempenho.

Como a Amazon Aurora oferece o melhor dos dois mundos – o desempenho e a disponibilidade dos bancos de dados comerciais de alta qualidade a um custo mais comumente associado a soluções de código aberto – empresas como a GE Oil & Gas e NASDAQ transformaram o Amazon Aurora no serviço que mais rapidamente cresce na história da AWS. Com a compatibilidade com o Amazon Aurora PostgreSQL, cada vez mais empresas estão adotando o PostgreSQL para se libertar do custo e da complexidade das bases de dados tradicionais de qualidade comercial. A nova compatibilidade já está disponível para uma demonstração. Você já pode agendar uma neste link.

Uma nova geração de AI: Amazon Lex, Amazon Polly e Amazon Rekognition

As três novas tecnologias de inteligência artificial anunciadas pela AWS vão tornar ainda mais acessível o desenvolvimento de aplicações capazes de agir como o cérebro humano, entender a linguagem natural, transformar texto em uma fala realista, criar conversas, analisar imagens e reconhecer rostos, objetos e cenas. Entre as empresas que já utilizam as tecnologias Amazon AI estão Capital One, Motorola Solutions, NASA, HubSpot, DuoLingo e Coursera.

Amazon Lex, Amazon Polly e Amazon Rekognition são baseados na mesma tecnologia desenvolvida por especialistas em deep learning (aprendizagem profunda) e machine learning (aprendizagem automática) da AWS. Além de fáceis de usar, os novos serviços são totalmente gerenciados, sem necessidade de compromissos iniciais ou altos investimentos de infraestrutura. Isso libera os desenvolvedores para se concentrarem na definição e construção de uma nova geração de aplicativos que podem ver, ouvir, falar, entender e interagir com o mundo à sua volta.

A Amazon Lex, a tecnologia que alimenta o Amazon Alexa, permite que qualquer desenvolvedor construa experiências de usuário ricas e conversacionais para aplicativos de dispositivos web, móveis e conectados. A tecnologia Amazon Polly transforma o texto em um discurso realista, permitindo que os aplicativos conversem com 47 vozes em até 24 idiomas. Já o Amazon Rekognition facilita a adoção de análises de imagem aos aplicativos, usando poderosas tecnologias de reconhecimento de rosto.

AWS re:Invent 2016 anuncia novos serviços e tecnologias na nuvem

AWS re:Invent 2016 anuncia novos serviços e tecnologias na nuvem

Considerado o maior evento do ano para os profissionais de computação em nuvem, o re:Invent 2016 reuniu em Las Vegas, nos EUA, as maiores empresas do setor. A Amazon Web Services anunciou grandes novidades para seus clientes, como novos serviços de inteligência artificial que vão revolucionar o desenvolvimento de aplicações, novas funcionalidades para serviços de bancos de dados, e muito mais. Confira em detalhes aqui.