Для английского, нажмите здесь.
Hoje em dia é muito comum ver as pessoas fazendo uso de plataformas de serviços online como a AWS , Azure , Googlecloud Анкет Эстес Сан как Майс Фамусас “Облако” Анкет E, Como Qualquer Outro desenvolvedor, é Muito Watere Testar Seus códigos antes de colocá-lo em produção, eeste caso, algumas Questões surgem, «Комо-э-э-э-э-э-э-э-э-э-э-э-э-э-э. Que Já funciona sem Quebrá-lo? ” ou algo do tipo. Então, para Estes Casos, Este Trabalho foi Pensado. Мета принципиальная é Explicar Como é OfficeVar гм AWS Lambda NA SUA Máquina USANDO PYCHARM COM PYTHON E LOCALSTACK.
Энтао … Вамос Ла !!!!!
Настраивать
- Ubuntu 20.04 LTS;
- IDE: Pycharm Professional;
- Python 3.8;
- Докер;
- AWS SAM CLI : éseyrio parai Ide Funcionar Com Aws Services;
- AWS CLI : você pode usar suas credenciais verdadeiras (como descrito aqui ), ou pode fazer uma ficticia. O LocalStack arvifica Se As Credenciais Estão представляет e não se elas são válidas;
- Серверный рамки;
Configuração
AWS CLI
Sobre o AWS CLI , é Officevel Checar o Материал Пара Усталар. Нет сайта DA AWS, Клика Акви .
AWS SAM CLI
Para instalar o AWS SAM CLI é Informado nos Documentos da aws que é para instalá-lo pelo homebrew, mas em alguns casos é difícil stalar o homebrew e pensando nisto, aqui está um wutro jeito de instalar o AWS SAM CLI , é Officve Pegar O Código Fonte Нет GitHub Кликандо Акви Анкет
$ git clone https://github.com/awslabs/aws-sam-cli.git $ cd aws-sam-cli $ sudo python3.8 ./setup.py build install $ sam --version
Финал Сайды:
SAM CLI, version 0.47.0
Localstack Docker
NESTE IMMENTO O “DOCKER-COMPOSE.YAML” DEVE SER CRIADO NA RAIZ DO PROJETO, COM ITO SERU ORSIVER RODAR O LOCALSTACK DE UM DOCKER CONTARER.
$ touch docker-compose.yml
Docker-Compose.yml
version: '2.1' services: localstack: image: localstack/localstack ports: - "4567-4597:4567-4597" - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}" environment: - SERVICES=${SERVICES- } - DEBUG=${DEBUG- } - DATA_DIR=${DATA_DIR- } - PORT_WEB_UI=${PORT_WEB_UI- } - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- } - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- } - DOCKER_HOST=unix:///var/run/docker.sock volumes: - "${TMPDIR:-/tmp/localstack}:/tmp/localstack" - "/var/run/docker.sock:/var/run/docker.sock"
E Agora Vamos Rodar O “Docker-Compose” Com O Seguinte Comando:
$ docker-compose up
Partir Deste momento é Officavel Acessar Diventeres Serviços da aws atráves das disementes portas no servidor local. POR ENQUANTO VAMOS TESTAR O SERVICO DO AWS S3.
$ curl -v http://localhost:4572
Parte da Saída:
bcaf1ffd86f41161ca5fb16fd081034f webfile
Este Teste Pode Ser Realizado Também No Browser. Apenas Copie O EndereCo E Cole Na Url Do Browser OU APENAS Нажмите Aqui Анкет
Algumas portas do aws service com localstack
- S3 : 4572
- Dynamodb : 4570
- Cloudformation : 4581
- Elasticsearch : 4571
- Es : 4578
- Sns : 4575
- SQS : 4576
- Lambda : 4574
- Кинезис : 4568
Pycharm com aws rambda
Uma Vez O “Docker-Compose” Estiver Funcionando é Hora de Criar O Projeto. NESTE IMMENTO VAMOS CRIAR UM PROJETO NOVO NO PYCHARM:
- Criando um no projeto:
Нет Passo número 3 é Muito Watere Checar Se O “Sam cli” foi Automáticamente Reconhecido.
- Criando O Arquivo Принципал, O
lambda_function.py
, на Райз, дела
import urllib.parse import boto3 import json # print('Loading function') HOST = "http://[YOUR_IP]" # Get the service resource # To production it's not necessary inform the "endpoint_url" and "region_name" s3 = boto3.client('s3', endpoint_url= HOST + ":4572", region_name="us-east-1") sqs = boto3.client('sqs', endpoint_url= HOST + ":4576", region_name="us-east-1") 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.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') url_queue = HOST + ":4576/queue/lambda-tutorial" try: response = s3.get_object(Bucket=bucket, Key=key) deb = { "request_id": response['ResponseMetadata']['RequestId'], "queue_url": url_queue, "key": key, "bucket": bucket, "message": "aws lambda with localstack..." } print("#########################################################") print("Send Message") #Send message to SQS queue response = sqs.send_message( QueueUrl=deb["queue_url"], MessageBody=json.dumps(deb) ) print("response: {}".format(response)) print("#########################################################") print("Receive 10 Messages From SQS Queue") response = sqs.receive_message( QueueUrl=deb["queue_url"], MaxNumberOfMessages=10, VisibilityTimeout=0, WaitTimeSeconds=0 ) print("#########################################################") print("Read All Messages From Response") messages = response['Messages'] for message in messages: print("Message: {}".format(message)) print("Final Output: {}".format(json.dumps(response))) return json.dumps(response) except Exception as e: print(e) raise e
Se o “boto3” não estiver instalado a Ide irá notificar, assim sendo, abra o terminal e efute o seguinte comando:
$ PIP3.8 Установить BOTO3
- Criando os arquivos que darão suporte ao projeto.
NESTE IMMENTO ALGUMAS PASTAS E ARQIVOS SERãAO CRIADOS, как Pastas Conterão os arquivos utilizados без теста. Vamos Criar в качестве Pastas “Тест/файлы” Na Raíz Do
aws-lambda-localstack |test/ |- file/ |- - test_file.log |- - input-event-test.json |requirements.txt
test_file.log : Este Arquivo Será Usado Como Imemplo Vindo Do Bucket. Pode Ser Um Arquivo Vazio.
Требования.txt : Este arquivo é exigido pelo “Sam cli”.
Input-event-test.json : Este arquivo será receadado para rodar o projeto. Ele Conthem как informações do Bucket.
{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "tutorial", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::example-bucket" }, "object": { "key": "lambda/test_file.log", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }
- UMA VEZ QUE OS PASSOS OFEES ESTIVEM TERMINADOS, O PRóximo Passo Será Configurar O «Конфигурация запуска».
Agora A Configuração de Ide Está Feita, Hora de Configurar в качестве Entradas. Para Configurar как Entradas é obrigatório rodar alguns comando para criar os arquivos no s3 e criar a fila no sqs.
1 – Criando O Bucket No S3: O Bucket Será nemeado Como “Учебное пособие”.
$ aws://localhost: 4572 S3 MB S3://Учебное пособие
2 – Criando А паста нет S3: Será Criada Uma Pasta Chamada “Lambda”.
$ aws://localhost: 4572 s3api put-object-Учебник по боку
O Ответ Será Alguma Como:
{ "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"" }
3 – Copiando arquivos para o Bucket: Copiando OS Arquivos de “Тест/файлы” para “s3://turnerial/lambda/”.
$ aws --endpoint-url=http://localhost:4572 s3 cp ./test/files/ s3://tutorial/lambda/ --recursive
Deve-se Checar Se O Bucket Foi Criado. Copie o Valor de “Endpoint-url” E выполнять UM “Curl” OU Cole No Browser, POR EXAMENTO:
$ curl -v http://localhost:4572/tutorial
Saída Será Algo Como:
tutorial 1000 None false lambda 2020-04-28T01:36:04.128Z "d41d8cd98f00b204e9800998ecf8427e" 0 STANDARD 75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a webfile lambda/input-event-test.json 2020-04-28T01:40:27.882Z "4e114da7aa17878f62bf4485a90a97a2" 1011 STANDARD 75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a webfile lambda/test_file.log 2020-04-28T01:40:27.883Z "4ac646c9537443757aff7ebd0df4f448" 29 STANDARD 75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a webfile
4 – Criando um fila no sqs.
$ aws --endpoint-url=http://localhost:4576 sqs create-queue --queue-name lambda-tutorial
O Retorno Será Algo Como:
{ "QueueUrl": "http://localhost:4576/queue/lambda-tutorial" }
Ума Вез Кес Тудо Эствер Фейто Э. Тодас в роли Сайдас Эстеао ОК, é hora de rodar o projeto. Примечание, нет, нет Código foi inscrito A Entrada e Saída praste texto. Ассим Сенто, Para Rodar O Projeto clique no botão “run ‘[local] lambda_function.lambda_handler'”.
Depois disto, это возможно, Saída do Processo без консоли. É exibido в качестве Entradas e a o final dez mensagens serão recuperadas da fila e exibidas без консоли.
Боа!
Заключение!
Este Pode Ser Somente O Ponto Inicial Eu Espero Que Este texto ajude-os testar seus serviços na aws … Eu Espero Que todos Vocês alcancem suas metas.
Репозиторио: AWS-Lambda-Localstack Анкет
ОБРИГАДО ПОРЕ ТЕР ЛИДО АТЕЙ О ФИМ!
См
Algumas Ссылка на Que foram utilizadas para завершает тексто.
- AWS SAM CLI ;
- AWS CLI ;
- Серверный ;
- LocalStack ;
- Использование Server Bramework & Localstack для тестирования ваших приложений AWS локально ;
Algumas Cloud Computing
- AWS ;
- Azure ;
- Google Cloud ;
- OpenShift ;
- Oracle ;
Оригинал: “https://dev.to/maironmscosta/aws-lambda-com-localstack-fe6”