DevTalks Romania - Getting Started with AWS Lambda & the Serverless Cloud
Arquitetura Serverless e AWS Lambda - Demo Session
-
Upload
amazon-web-services-latam -
Category
Technology
-
view
606 -
download
2
Transcript of Arquitetura Serverless e AWS Lambda - Demo Session
![Page 1: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/1.jpg)
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Renato Barbosa – Enterprise Solutions Architect
Junho - 2016
Arquitetura Serverless e AWS
Lambda
![Page 2: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/2.jpg)
Serverless e AWS Lambda
Deixe de se preocupar com:
• Servidores
• Dimencionamento
• Deployments
• Escalabilidade
• Tolerância a Falhas
• S.O e Updates
• Metricas e Log
E você pode facilmente:
• Executar código em
paralelo
• Trazer seu código e
bibliotecas nativas
• Criar backend, Ações
através de eventos e
sistemas de processamento
• Pagar apenas pelo
necessário
![Page 3: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/3.jpg)
AWS Lambda – Benefícios
ESCALÁVEL POR EVENTOSSERVERLESS BILLING EM
MILISEGUNDOS
![Page 4: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/4.jpg)
AWS Lambda – Integração
Amazon
S3
Amazon
DynamoDB
Amazon
Kinesis
AWS
CloudTrail
Amazon
CloudWatch
Logs
AWS
CloudFormation
Amazon
SNS
Amazon
SWF
Amazon
SES
Amazon
API Gateway
Amazon
Cognito
![Page 5: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/5.jpg)
AWS Lambda – Histórico
re:Invent 2014Preview Launch
April 2015GA
Summer 2015 re:Invent 2015
• Node.js
• Event handlers
• CORS
• Mobile
Backends
• Sync calls
• Resource
policies
• Java
• Amazon S3
uploads
• Blueprints
• 1.5 GB
• Tokyo region
• Alexa Skills
• Pyhton
• Controle de
Versão
• Agendador
• Funções de até
5 min
![Page 6: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/6.jpg)
AWS Lambda – Desafio do Demo
• Criar uma arquitetura e execução serverless para:
• Armezenar vídeos de Upload dos usuários
• Pós Upload converter vídeos e armazenar-los
• Pós conversão armazenar em um banco de dados
Metadados do vídeo
• Disponibilizar videos em uma estrutura de CDN Serverless
• Enviar notificação do novo vídeo aos usuários
Solução necessita ser SERVERLESS!
![Page 7: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/7.jpg)
Arquitetura
![Page 8: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/8.jpg)
Arquitetura – Serveless Storage
![Page 9: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/9.jpg)
Arquitetura – Serverless Transcode
![Page 10: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/10.jpg)
Arquitetura - Serverless Database e Notify
![Page 11: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/11.jpg)
Arquitetura – Serveless CDN
![Page 12: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/12.jpg)
AWS Lambda – Desenvolvendo
• Guia a Tira colo:
• http://boto3.readthedocs.io/en/latest/index.html
• Desenhar a solução e trabalhar nas APIs
• Inicio da solução….
![Page 13: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/13.jpg)
1) Lambda pós Upload
##### Instanciando os servicos
s3 = boto3.client('s3')
etranscoder = boto3.client('elastictranscoder')
##### Id da Pipelinepipeline
Id = ('1463433351875-xzcffu')
##### Id do Preset preset
Id = ('1351620000001-000010')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
try:
##### Obtendo resposta do Evento
response = s3.get_object(Bucket=bucket, Key=key)
![Page 14: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/14.jpg)
1) Lambda pós Upload
##### Realizando o Transcoding do Video
transcoder = etranscoder.create_job(
PipelineId = pipelineId,
Input={
'Key': key
},
Output={
'Key': key,
'PresetId': presetId
}
)
![Page 15: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/15.jpg)
2) Lambda pós Transcode
##### Instanciando os servicos
s3 = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
sns = boto3.client('sns')
##### Acessando Tabela do DynamoDB
table = dynamodb.Table('Videos')
##### EndPoint do CloudFront
cloudfront = ('http://d397nnvlvhwg5r.cloudfront.net/')
##### ARN do Topic do SNStopic
ARN = ('arn:aws:sns:us-east-1:939664253159:videos')
![Page 16: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/16.jpg)
2) Lambda pós Transcode
def lambda_handler(event, context):
....
##### Inserindo no DynamoDB os dados do acesso ao video e Status. put_item_dynamo = table.put_item(
Item = {
'Nome': key,
'Info': response['ContentType'],
'Status': '0',
'Link': cloudfront + key
}
)
##### Enviando alerta de video disponivel.
snsPublish = sns.publish(
TopicArn = topicARN,
Message = 'Novo video disponivel. Para acessar o video acessar o Link: '+ cloudfront + key,
Subject = 'Demo Summit! Tem novidade ai.',
MessageStructure = 'Raw',
)
![Page 17: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/17.jpg)
Demo
#LambdaVoceTambem
![Page 18: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/18.jpg)
Remember to complete
your evaluations!
![Page 19: Arquitetura Serverless e AWS Lambda - Demo Session](https://reader031.fdocuments.us/reader031/viewer/2022022202/58822cd41a28ab52368b63c1/html5/thumbnails/19.jpg)
Obrigado