Рубрики
Без рубрики

AWS Lambda Com LocalStack

Для английского, нажмите здесь. Hoje em dia é muito comum ver as pessoas fazendo uso de plataformas de serv … Tagged with Lambda, Localstack, Serverless, Python.

Для английского, нажмите здесь.

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 завершает тексто.

Algumas Cloud Computing

Оригинал: “https://dev.to/maironmscosta/aws-lambda-com-localstack-fe6”