0%
AWS Lambda e Serverless: Guia para Iniciantes

AWS Lambda e Serverless: Guia para Iniciantes

Descubra o conceito de serverless e como usar o AWS Lambda.

I

InSkillCoach

· min

AWS Lambda e Serverless: Guia para Iniciantes

Descubra o conceito de serverless e como usar o AWS Lambda.

1. O que é Serverless?

Definição Simples

  • Serverless = Sem servidores para gerenciar
  • Vantagens:
    • Sem gerenciamento de infraestrutura
    • Pagamento por uso
    • Escalabilidade automática

Comparação com o EC2

# Exemplo de custo EC2 vs Lambda
def compare_costs():
    # EC2 : Pagamento por hora
    ec2_cost = {
        't2.micro': 0.0116,  # por hora
        't2.small': 0.023,   # por hora
        't2.medium': 0.0464  # por hora
    }
    
    # Lambda : Pagamento por requisição
    lambda_cost = {
        'requests': 0.0000002,  # por requisição
        'duration': 0.00001667  # por 100ms
    }
    
    return {
        'ec2': ec2_cost,
        'lambda': lambda_cost
    }

2. AWS Lambda na Prática

Criação de uma Função Simples

# Exemplo de função Lambda
def lambda_handler(event, context):
    # Função simples que retorna uma mensagem
    return {
        'statusCode': 200,
        'body': 'Bonjour depuis Lambda !'
    }

Configuração da Função

# Exemplo de configuração do Lambda
def setup_lambda():
    lambda_client = boto3.client('lambda')
    
    # Criação de uma função
    function = lambda_client.create_function(
        FunctionName='MaFonction',
        Runtime='python3.9',
        Handler='index.lambda_handler',
        Code={
            'ZipFile': open('mon-code.zip', 'rb').read()
        },
        Role='arn:aws:iam::account:role/lambda-role',
        Timeout=30,
        MemorySize=128
    )
    
    return function['FunctionArn']

3. Integração com Outros Serviços

Trigger do S3

# Exemplo de trigger S3
def s3_trigger_handler(event, context):
    # Processamento de um arquivo enviado ao S3
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        
        # Ler o arquivo
        s3 = boto3.client('s3')
        response = s3.get_object(Bucket=bucket, Key=key)
        content = response['Body'].read().decode('utf-8')
        
        # Processar o conteúdo
        return {
            'statusCode': 200,
            'body': f'Fichier traité : {key}'
        }

API Gateway

# Exemplo de integração com o API Gateway
def api_handler(event, context):
    # Processamento de uma requisição HTTP
    http_method = event['httpMethod']
    
    if http_method == 'GET':
        return {
            'statusCode': 200,
            'body': 'GET request réussie'
        }
    elif http_method == 'POST':
        body = json.loads(event['body'])
        return {
            'statusCode': 200,
            'body': f'Données reçues : {body}'
        }

4. Boas Práticas

Gerenciamento de Dependências

# Exemplo de gerenciamento de dependências
def create_lambda_package():
    # Criar um ambiente virtual
    os.system('python -m venv venv')
    
    # Instalar as dependências
    os.system('pip install -r requirements.txt -t ./package')
    
    # Criar o ZIP
    shutil.make_archive('lambda-package', 'zip', './package')
    
    return 'lambda-package.zip'

Configuração de Memória

# Exemplo de otimização de memória
def optimize_memory():
    lambda_client = boto3.client('lambda')
    
    # Atualização da configuração
    lambda_client.update_function_configuration(
        FunctionName='MaFonction',
        MemorySize=256,  # Aumentar a memória
        Timeout=60,      # Aumentar o timeout
        Environment={
            'Variables': {
                'ENV': 'production',
                'DEBUG': 'false'
            }
        }
    )

5. Monitoramento e Logs

CloudWatch Logs

# Exemplo de logging
def lambda_with_logging(event, context):
    # Logging simples
    print('Démarrage de la fonction')
    
    try:
        # Código da função
        result = process_data(event)
        
        print('Traitement réussi')
        return result
    except Exception as e:
        print(f'Erreur : {str(e)}')
        raise

Métricas

# Exemplo de métricas personalizadas
def custom_metrics():
    cloudwatch = boto3.client('cloudwatch')
    
    # Enviar uma métrica
    cloudwatch.put_metric_data(
        Namespace='MonApplication',
        MetricData=[
            {
                'MetricName': 'TempsExecution',
                'Value': 1.5,
                'Unit': 'Seconds',
                'Dimensions': [
                    {
                        'Name': 'Fonction',
                        'Value': 'MaFonction'
                    }
                ]
            }
        ]
    )

6. Segurança

Variáveis de Ambiente

# Exemplo de gerenciamento de segredos
def secure_lambda():
    lambda_client = boto3.client('lambda')
    
    # Configuração das variáveis de ambiente
    lambda_client.update_function_configuration(
        FunctionName='MaFonction',
        Environment={
            'Variables': {
                'API_KEY': 'mon-api-key',
                'DB_PASSWORD': 'mon-mot-de-passe'
            }
        }
    )

IAM Roles

# Exemplo de configuração do IAM
def setup_iam_role():
    iam = boto3.client('iam')
    
    # Criação da role
    role = iam.create_role(
        RoleName='lambda-role',
        AssumeRolePolicyDocument=json.dumps({
            'Version': '2012-10-17',
            'Statement': [
                {
                    'Effect': 'Allow',
                    'Principal': {
                        'Service': 'lambda.amazonaws.com'
                    },
                    'Action': 'sts:AssumeRole'
                }
            ]
        })
    )
    
    return role['Role']['Arn']

Conclusão

Pontos-chave a reter:

  • Serverless = sem gerenciamento de infraestrutura
  • Lambda = funções executadas sob demanda
  • Pagamento apenas pelo uso
  • Integração fácil com outros serviços
  • Escalabilidade automática

Recomendações:

  • Comece com funções simples
  • Monitore os custos
  • Use os logs para debugging
  • Proteja as funções
  • Otimize o desempenho
InSkillCoach

Sobre InSkillCoach

Especialista em treinamento e tecnologias

Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.

Certificações:

  • AWS Certified Solutions Architect – Professional
  • Certificações Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.1k
140

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!