{"id":9995,"date":"2020-05-24T14:18:00","date_gmt":"2020-05-24T17:18:00","guid":{"rendered":"https:\/\/geekblogti.wpengine.com\/?p=9995"},"modified":"2024-10-11T11:38:37","modified_gmt":"2024-10-11T14:38:37","slug":"aws-lambda-python-pycharm-localstack","status":"publish","type":"post","link":"https:\/\/www.geekhunter.com/pt/blog\/aws-lambda-python-pycharm-localstack\/","title":{"rendered":"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Hoje em dia \u00e9 muito comum ver as pessoas fazendo uso de plataformas de servi\u00e7os online como a <strong><a href=\"https:\/\/www.geekhunter.com/pt/blog\/arquitetura-aws-principais-servicos\/\" target=\"_blank\" rel=\"noreferrer noopener\">AWS<\/a><\/strong>, Azure, GoogleCloud. Estes s\u00e3o as mais famosas &#8220;Cloud&#8221;.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">E, como qualquer outro desenvolvedor, \u00e9 muito importante testar seus c\u00f3digos antes de coloc\u00e1-lo em produ\u00e7\u00e3o, e neste caso, algumas quest\u00f5es surgem:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>&#8220;Como \u00e9 poss\u00edvel testar o c\u00f3digo que est\u00e1 em produ\u00e7\u00e3o?&#8221;<\/li>\r\n<li>&#8220;Como eu posso atualizar o c\u00f3digo que j\u00e1 funciona sem quebr\u00e1-lo?&#8221;<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o, para estes casos e outros do tipo, este trabalho foi pensado.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A meta principal \u00e9 explicar<strong> como \u00e9 poss\u00edvel testar um <a href=\"https:\/\/www.geekhunter.com/pt/blog\/aws\/\">AWS<\/a> Lambda na sua m\u00e1quina usando PyCharm com Python e Localstack<\/strong>.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ent\u00e3o\u2026 vamos l\u00e1!<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Setup:<\/h2>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Ubuntu 20.04 LTS;<\/li>\r\n<li>IDE: PyCharm Professional;<\/li>\r\n<li>Python 3.8;<\/li>\r\n<li>Docker;<\/li>\r\n<li>AWS SAM CLI: \u00e9 necess\u00e1rio para IDE funcionar com <strong><a href=\"https:\/\/www.geekhunter.com/pt/blog\/tudo-sobre-cloud-computing-azure-aws-gcp\/\">AWS Services<\/a><\/strong>;<\/li>\r\n<li><strong><a href=\"https:\/\/www.geekhunter.com/pt/blog\/aplicacao-serverless-com-aws-como-desenvolver-uma-do-0\/\">AWS<\/a><\/strong> CLI: voc\u00ea pode usar suas credenciais verdadeiras (como descrito aqui), ou pode fazer uma ficticia. O Localstack verifica se as credenciais est\u00e3o presentes e n\u00e3o se elas s\u00e3o v\u00e1lidas;<\/li>\r\n<li>Serverless framework;<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Configura\u00e7\u00e3o<\/h2>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">AWS CLI<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Sobre o AWS CLI, \u00e9 poss\u00edvel checar o material para instalar no <strong><a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-install.html\" target=\"_blank\" rel=\"noreferrer noopener\">site da AWS<\/a>.<\/strong><\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">AWS SAM CLI<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para <strong><a href=\"https:\/\/docs.aws.amazon.com\/serverless-application-model\/latest\/developerguide\/serverless-sam-cli-install.html\" target=\"_blank\" rel=\"noreferrer noopener\">instalar o AWS SAM CLI<\/a><\/strong> \u00e9 informado nos documentos da AWS que \u00e9 para instal\u00e1-lo pelo Homebrew, mas em alguns casos \u00e9 dif\u00edcil instal\u00e1-lo desta forma e pensando nisto, aqui est\u00e1 um <a href=\"https:\/\/docs.aws.amazon.com\/serverless-application-model\/latest\/developerguide\/serverless-sam-cli-install.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>outro jeito de instalar o AWS SAM CLI<\/strong><\/a>, \u00e9 poss\u00edvel pegar o <a href=\"https:\/\/github.com\/awslabs\/aws-sam-cli\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>c\u00f3digo fonte do AWS SAM CLI<\/strong><\/a> no Github tamb\u00e9m.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ git clone https:\/\/github.com\/awslabs\/aws-sam-cli.git\r\n$ cd aws-sam-cli\r\n$ sudo python3.8 .\/setup.py build install\r\n$ sam --version<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>A sa\u00edda final:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>SAM CLI, version 0.47.0<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Localstack Docker<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Neste momento o &#8220;docker-compose.yaml&#8221; deve ser criado na ra\u00edz do projeto, com isto ser\u00e1 poss\u00edvel rodar o localstack de um docker container.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ touch docker-compose.yml<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>docker-compose.yml<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>version: '2.1'\r\nservices:\r\n localstack:\r\n image: localstack\/localstack\r\n ports:\r\n - \"4567-4597:4567-4597\"\r\n - \"${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}\"\r\n environment:\r\n - SERVICES=${SERVICES- }\r\n - DEBUG=${DEBUG- }\r\n - DATA_DIR=${DATA_DIR- }\r\n - PORT_WEB_UI=${PORT_WEB_UI- }\r\n - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }\r\n - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }\r\n - DOCKER_HOST=unix:\/\/\/var\/run\/docker.sock\r\n volumes:\r\n - \"${TMPDIR:-\/tmp\/localstack}:\/tmp\/localstack\"\r\n - \"\/var\/run\/docker.sock:\/var\/run\/docker.sock\"<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>E agora vamos rodar o &#8220;docker-compose&#8221; com o seguinte comando:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ docker-compose up<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A partir deste momento \u00e9 poss\u00edvel acessar diferentes servi\u00e7os da AWS por meio das diferentes portas no servidor local.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Vamos testar o servi\u00e7o do AWS S3.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ curl -v http:\/\/localhost:4572<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Parte da sa\u00edda:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>&lt;ListAllMyBucketsResult xmlns=\"http:\/\/s3.amazonaws.com\/doc\/2006-03-01\"&gt;\r\n&lt;Owner&gt;&lt;ID&gt;bcaf1ffd86f41161ca5fb16fd081034f&lt;\/ID&gt;\r\n&lt;DisplayName&gt;webfile&lt;\/DisplayName&gt;&lt;\/Owner&gt;&lt;Buckets&gt;&lt;\/Buckets&gt;\r\n&lt;\/ListAllMyBucketsResult&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Este teste pode ser realizado tamb\u00e9m no browser. Apenas copie o endere\u00e7o e cole na url do seu navegador.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Algumas portas do AWS Service com Localstack<\/strong><\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>S3: 4572<\/li>\r\n<li>DynamoDB: 4570<\/li>\r\n<li>CloudFormation: 4581<\/li>\r\n<li>Elasticsearch: 4571<\/li>\r\n<li>ES: 4578<\/li>\r\n<li>SNS: 4575<\/li>\r\n<li>SQS: 4576<\/li>\r\n<li>Lambda: 4574<\/li>\r\n<li>Kinesis: 4568<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">AWS Lambda com Python PyCharm<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Assim que o &#8220;docker-compose&#8221; estiver funcionando \u00e9 hora de criar o projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Neste momento vamos criar um projeto novo no PyCharm:<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Criando um no projeto<\/h3>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"678\" height=\"435\" class=\"wp-image-9997\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/05\/1.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/1.png 678w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/1-150x96.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/1-100x64.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/1-600x385.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/1-450x289.png 450w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00c9 muito importante checar se o &#8220;SAM CLI&#8221; foi autom\u00e1ticamente reconhecido.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"677\" height=\"432\" class=\"wp-image-9998\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/05\/2.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/2.png 677w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/2-150x96.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/2-100x64.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/2-600x383.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/2-450x287.png 450w\" sizes=\"(max-width: 677px) 100vw, 677px\" \/><\/figure>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Criando o arquivo principal<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Chegou a hora de criar o <strong>lambda_function.py<\/strong>, na ra\u00edz do projeto.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>import urllib.parse\r\nimport boto3\r\nimport json\r\n# print('Loading function')\r\nHOST = \"http:\/\/[YOUR_IP]\"\r\n# Get the service resource\r\n# To production it's not necessary inform the \"endpoint_url\" and \"region_name\"\r\ns3 = boto3.client('s3',\r\n                  endpoint_url= HOST + \":4572\",\r\n                  region_name=\"us-east-1\")\r\nsqs = boto3.client('sqs',\r\n                    endpoint_url= HOST + \":4576\",\r\n                    region_name=\"us-east-1\")\r\ndef lambda_handler(event, context):\r\n    # print(\"Received event: \" + json.dumps(event, indent=2))\r\n    # Get the object from the event and show its content type\r\n    bucket = event['Records'][0]['s3']['bucket']['name']\r\n    key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object'] ['key'],     encoding='utf-8')\r\n    url_queue = HOST + \":4576\/queue\/lambda-tutorial\"\r\ntry:\r\n    response = s3.get_object(Bucket=bucket, Key=key)\r\n    deb = {\r\n        \"request_id\": response['ResponseMetadata']['RequestId'],\r\n        \"queue_url\": url_queue,\r\n        \"key\": key,\r\n        \"bucket\": bucket,\r\n        \"message\": \"aws lambda with localstack...\"\r\n    }\r\n    print(\"#########################################################\")\r\n    print(\"Send Message\")\r\n    #Send message to SQS queue\r\n    response = sqs.send_message(\r\n    QueueUrl=deb[\"queue_url\"],\r\n        MessageBody=json.dumps(deb)\r\n    )\r\n    print(\"response: {}\".format(response))\r\n\r\n    print(\"#########################################################\")\r\n    print(\"Receive 10 Messages From SQS Queue\")\r\n    response = sqs.receive_message(\r\n        QueueUrl=deb[\"queue_url\"],\r\n        MaxNumberOfMessages=10,\r\n        VisibilityTimeout=0,\r\n        WaitTimeSeconds=0\r\n    )\r\n\r\n    print(\"#########################################################\")\r\n    print(\"Read All Messages From Response\")\r\n    messages = response['Messages']\r\n    for message in messages:\r\n        print(\"Message: {}\".format(message))\r\n\r\n    print(\"Final Output: {}\".format(json.dumps(response)))\r\n    return json.dumps(response)\r\n\r\n    except Exception as e:\r\n        print(e)\r\n        raise e<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Se o &#8220;boto3&#8221; n\u00e3o estiver instalado a IDE ir\u00e1 notificar, assim sendo, abra o terminal e execute o seguinte comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ pip3.8 install boto3<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Criando os arquivos que dar\u00e3o suporte ao projeto<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Neste momento algumas pastas e arquivos ser\u00e3o criados, as pastas conter\u00e3o os arquivos utilizados no teste.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Vamos criar as pastas &#8220;test\/files&#8221; na ra\u00edz do projeto e ent\u00e3o criar os arquivo para rodar o projeto.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>aws-lambda-localstack\r\n|test\/\r\n|- file\/\r\n|- - test_file.log\r\n|- - input-event-test.json\r\n|requirements.txt<\/code><\/pre>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>test_file.log:<\/strong> Este arquivo ser\u00e1 usado como exemplo vindo do bucket. Pode ser um arquivo vazio.<\/li>\r\n<li><strong>requirements.txt: <\/strong>Este arquivo \u00e9 exigido pelo &#8220;SAM CLI&#8221;.<\/li>\r\n<li><strong>input-event-test.json:<\/strong> Este arquivo ser\u00e1 executado para rodar o projeto. Ele cont\u00e9m as informa\u00e7\u00f5es do bucket.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{\r\n \"Records\": [\r\n {\r\n \"eventVersion\": \"2.0\",\r\n \"eventSource\": \"aws:s3\",\r\n \"awsRegion\": \"us-east-1\",\r\n \"eventTime\": \"1970-01-01T00:00:00.000Z\",\r\n \"eventName\": \"ObjectCreated:Put\",\r\n \"userIdentity\": {\r\n \"principalId\": \"EXAMPLE\"\r\n },\r\n \"requestParameters\": {\r\n \"sourceIPAddress\": \"127.0.0.1\"\r\n },\r\n \"responseElements\": {\r\n \"x-amz-request-id\": \"EXAMPLE123456789\",\r\n \"x-amz-id-2\":\r\n\"EXAMPLE123\/5678abcdefghijklambdaisawesome\/mnopqrstuvwxyzABCDEFGH\"\r\n },\r\n \"s3\": {\r\n \"s3SchemaVersion\": \"1.0\",\r\n \"configurationId\": \"testConfigRule\",\r\n \"bucket\": {\r\n \"name\": \"tutorial\",\r\n \"ownerIdentity\": {\r\n \"principalId\": \"EXAMPLE\"\r\n },\r\n \"arn\": \"arn:aws:s3:::example-bucket\"\r\n },\r\n \"object\": {\r\n \"key\": \"lambda\/test_file.log\",\r\n \"size\": 1024,\r\n \"eTag\": \"0123456789abcdef0123456789abcdef\",\r\n \"sequencer\": \"0A1B2C3D4E5F678901\"\r\n    }\r\n   }\r\n  }\r\n ]\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Uma vez que os passos anteriores estivem terminados, o pr\u00f3ximo passo ser\u00e1 configurar o &#8220;run configuration&#8221;.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"674\" height=\"403\" class=\"wp-image-10000\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/05\/3.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/3.png 674w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/3-150x90.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/3-100x60.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/3-600x359.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/3-450x269.png 450w\" sizes=\"(max-width: 674px) 100vw, 674px\" \/><\/figure>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"678\" height=\"402\" class=\"wp-image-10001\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/05\/4.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/4.png 678w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/4-150x89.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/4-100x59.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/4-600x356.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/4-450x267.png 450w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Agora a configura\u00e7\u00e3o de IDE est\u00e1 feita, hora de configurar as entradas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Para configurar as entradas \u00e9 obrigat\u00f3rio rodar alguns comando para criar os arquivos no S3 e criar a fila no SQS.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">1 &#8211; Criando o bucket no S3: o bucket ser\u00e1 nomeado como &#8220;tutorial&#8221;<\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ aws --endpoint-url=http:\/\/localhost:4572 s3 mb s3:\/\/tutorial<\/code><\/pre>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">2 &#8211; Criando a pasta no S3: ser\u00e1 criada uma pasta chamada &#8220;lambda&#8221;<\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ aws --endpoint-url=http:\/\/localhost:4572 s3api put-object --bucket tutorial --\r\nkey lambda<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O Response ser\u00e1 alguma como:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{\r\n \"ETag\": \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">3 &#8211; Copiando arquivos para o bucket: copiando os arquivos de &#8220;test\/files&#8221; para &#8220;s3:\/\/tutorial\/lambda\/&#8221;<\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ aws --endpoint-url=http:\/\/localhost:4572 s3 cp .\/test\/files\/\r\ns3:\/\/tutorial\/lambda\/ --recursive<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Deve-se checar se o bucket foi criado. Copie o valor de &#8220;endpoint-url&#8221; e execute um &#8220;curl&#8221; ou cole no browser, por exemplo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ curl -v http:\/\/localhost:4572\/tutorial<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A sa\u00edda ser\u00e1 algo como:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;ListBucketResult xmlns=\"http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\"&gt;\r\n &lt;Name&gt;tutorial&lt;\/Name&gt;\r\n &lt;MaxKeys&gt;1000&lt;\/MaxKeys&gt;\r\n &lt;Delimiter&gt;None&lt;\/Delimiter&gt;\r\n &lt;IsTruncated&gt;false&lt;\/IsTruncated&gt;\r\n &lt;Contents&gt;\r\n &lt;Key&gt;lambda&lt;\/Key&gt;\r\n &lt;LastModified&gt;2020-04-28T01:36:04.128Z&lt;\/LastModified&gt;\r\n &lt;ETag&gt;\"d41d8cd98f00b204e9800998ecf8427e\"&lt;\/ETag&gt;\r\n &lt;Size&gt;0&lt;\/Size&gt;\r\n &lt;StorageClass&gt;STANDARD&lt;\/StorageClass&gt;\r\n &lt;Owner&gt;\r\n\r\n&lt;ID&gt;75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a&lt;\/ID&gt;\r\n &lt;DisplayName&gt;webfile&lt;\/DisplayName&gt;\r\n  &lt;\/Owner&gt;\r\n &lt;\/Contents&gt;\r\n &lt;Contents&gt;\r\n &lt;Key&gt;lambda\/input-event-test.json&lt;\/Key&gt;\r\n &lt;LastModified&gt;2020-04-28T01:40:27.882Z&lt;\/LastModified&gt;\r\n &lt;ETag&gt;\"4e114da7aa17878f62bf4485a90a97a2\"&lt;\/ETag&gt;\r\n &lt;Size&gt;1011&lt;\/Size&gt;\r\n &lt;StorageClass&gt;STANDARD&lt;\/StorageClass&gt;\r\n &lt;Owner&gt;\r\n\r\n&lt;ID&gt;75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a&lt;\/ID&gt;\r\n &lt;DisplayName&gt;webfile&lt;\/DisplayName&gt;\r\n &lt;\/Owner&gt;\r\n &lt;\/Contents&gt;\r\n &lt;Contents&gt;\r\n &lt;Key&gt;lambda\/test_file.log&lt;\/Key&gt;\r\n &lt;LastModified&gt;2020-04-28T01:40:27.883Z&lt;\/LastModified&gt;\r\n &lt;ETag&gt;\"4ac646c9537443757aff7ebd0df4f448\"&lt;\/ETag&gt;\r\n &lt;Size&gt;29&lt;\/Size&gt;\r\n &lt;StorageClass&gt;STANDARD&lt;\/StorageClass&gt;\r\n &lt;Owner&gt;\r\n\r\n&lt;ID&gt;75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a&lt;\/ID&gt;\r\n &lt;DisplayName&gt;webfile&lt;\/DisplayName&gt;\r\n &lt;\/Owner&gt;\r\n &lt;\/Contents&gt;\r\n&lt;\/ListBucketResult&gt;<\/code><\/pre>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">4 &#8211; Criando um fila no SQS<\/h4>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ aws --endpoint-url=http:\/\/localhost:4576 sqs create-queue --queue-name\r\nlambda-tutorial<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">O retorno ser\u00e1 algo como:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{\r\n \"QueueUrl\": \"http:\/\/localhost:4576\/queue\/lambda-tutorial\"\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Uma vez que tudo estiver feito e todas as sa\u00eddas est\u00e3o okays, \u00e9 hora de rodar o projeto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Note que, no c\u00f3digo foi inscrito a entrada e a sa\u00edda pra este texto.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Assim sendo, para rodar o projeto clique no bot\u00e3o &#8220;Run &#8216;[Local] lambda_function.lambda_handler'&#8221;.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"261\" class=\"wp-image-10002\" src=\"https:\/\/geekblogti.wpengine.com\/wp-content\/uploads\/2020\/05\/5.png\" alt=\"\" srcset=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/5.png 680w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/5-150x58.png 150w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/5-100x38.png 100w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/5-600x230.png 600w, https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/5-450x173.png 450w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/figure>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Depois disto, \u00e9 poss\u00edvel ver a sa\u00edda do processo no console.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00c9 exibido as entradas e ao final dez mensagens ser\u00e3o recuperadas da fila e exibidas no console.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Conclu\u00eddo<\/strong>!<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Este pode ser somente o ponto inicial e eu espero que este texto ajude-os a testar seus servi\u00e7os na AWS Lambda com Python.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Eu espero que todos voc\u00eas alcancem suas metas.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Obrigado por ter lido at\u00e9 o fim!<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Refer\u00eancias:<\/strong><\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>AWS SAM CLI;<\/li>\r\n<li>AWS CLI;<\/li>\r\n<li><strong><a href=\"https:\/\/www.serverless.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Serverless<\/a>;<\/strong><\/li>\r\n<li><strong><a href=\"https:\/\/github.com\/localstack\/localstack\" target=\"_blank\" rel=\"noreferrer noopener\">Localstack<\/a>;<\/strong><\/li>\r\n<li><strong><a href=\"https:\/\/medium.com\/manomano-tech\/using-serverless-framework-localstack-to-test-your-aws-applications-locally-17748ffe6755\" target=\"_blank\" rel=\"noreferrer noopener\">Using Serverless Framework &amp; Localstack to test your AWS applications locally<\/a>.<\/strong><\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Ah, agora um recado muito importante: a GeekHunter possui uma p\u00e1gina de vagas com uma s\u00e9rie <a href=\"https:\/\/www.geekhunter.com.br\/vagas-python\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>oportunidades para desenvolvedores Python<\/strong><\/a>. D\u00e1 uma passada l\u00e1, seja para conhecer o mercado, ou at\u00e9 mesmo para se candidatar a alguma delas. Conte conosco!<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Hoje em dia \u00e9 muito comum ver as pessoas fazendo uso de plataformas de servi\u00e7os online como a AWS, Azure, GoogleCloud. Estes s\u00e3o as mais famosas &#8220;Cloud&#8221;. E, como qualquer outro desenvolvedor, \u00e9 muito importante testar seus c\u00f3digos antes de coloc\u00e1-lo em produ\u00e7\u00e3o, e neste caso, algumas quest\u00f5es surgem: &#8220;Como \u00e9 poss\u00edvel testar o c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":167,"featured_media":10005,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-9995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimiento-de-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Como testar um AWS Lambda com Python e Localstack?<\/title>\n<meta name=\"description\" content=\"Descubra como \u00e9 poss\u00edvel testar um AWS Lambda na sua m\u00e1quina usando PyCharm com Python e Localstack com este tutorial incr\u00edvel!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack\" \/>\n<meta property=\"og:description\" content=\"Hoje em dia \u00e9 muito comum ver as pessoas fazendo uso de plataformas de servi\u00e7os online como a AWS, Azure, GoogleCloud. Estes s\u00e3o as mais famosas &quot;Cloud&quot;.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Geekhunter\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geekhunterbr\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-24T17:18:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-11T14:38:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Geekhunter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:site\" content=\"@geekhunterbr\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geekhunter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/\"},\"author\":{\"name\":\"Geekhunter\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\"},\"headline\":\"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack\",\"datePublished\":\"2020-05-24T17:18:00+00:00\",\"dateModified\":\"2024-10-11T14:38:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/\"},\"wordCount\":863,\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/aws-lambda.png\",\"articleSection\":[\"Desenvolvimiento de software\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/\",\"name\":\"Como testar um AWS Lambda com Python e Localstack?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/aws-lambda.png\",\"datePublished\":\"2020-05-24T17:18:00+00:00\",\"dateModified\":\"2024-10-11T14:38:37+00:00\",\"description\":\"Descubra como \u00e9 poss\u00edvel testar um AWS Lambda na sua m\u00e1quina usando PyCharm com Python e Localstack com este tutorial incr\u00edvel!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/aws-lambda-python-pycharm-localstack\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/aws-lambda.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/aws-lambda.png\",\"width\":1200,\"height\":675,\"caption\":\"aws-lambda-python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/aws-lambda-python-pycharm-localstack\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mundo TI\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desenvolvimiento de software\",\"item\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/category\\\/mundo-ti\\\/desenvolvimiento-de-software\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"name\":\"Blog de TI\",\"description\":\"Dicas para o RH e profissionais da \u00e1rea TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#organization\",\"name\":\"GeekHunter\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"contentUrl\":\"https:\\\/\\\/www.geekhunter.com/pt/blog\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/icon-1.png\",\"width\":300,\"height\":300,\"caption\":\"GeekHunter\"},\"image\":{\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/x.com\\\/geekhunterbr\",\"https:\\\/\\\/www.instagram.com\\\/geekhunterbr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geekhunter-brasil\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GeekHunterOfficial\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/#\\\/schema\\\/person\\\/9f62b173345139f7bbdaf55312c3d400\",\"name\":\"Geekhunter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g\",\"caption\":\"Geekhunter\"},\"url\":\"https:\\\/\\\/www.geekhunter.com\\\/pt\\\/blog\\\/author\\\/matias\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como testar um AWS Lambda com Python e Localstack?","description":"Descubra como \u00e9 poss\u00edvel testar um AWS Lambda na sua m\u00e1quina usando PyCharm com Python e Localstack com este tutorial incr\u00edvel!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/","og_locale":"pt_BR","og_type":"article","og_title":"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack","og_description":"Hoje em dia \u00e9 muito comum ver as pessoas fazendo uso de plataformas de servi\u00e7os online como a AWS, Azure, GoogleCloud. Estes s\u00e3o as mais famosas \"Cloud\".","og_url":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/","og_site_name":"Blog Geekhunter","article_publisher":"https:\/\/www.facebook.com\/geekhunterbr\/","article_published_time":"2020-05-24T17:18:00+00:00","article_modified_time":"2024-10-11T14:38:37+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png","type":"image\/png"}],"author":"Geekhunter","twitter_card":"summary_large_image","twitter_creator":"@geekhunterbr","twitter_site":"@geekhunterbr","twitter_misc":{"Escrito por":"Geekhunter","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#article","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/"},"author":{"name":"Geekhunter","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400"},"headline":"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack","datePublished":"2020-05-24T17:18:00+00:00","dateModified":"2024-10-11T14:38:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/"},"wordCount":863,"publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png","articleSection":["Desenvolvimiento de software"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/","name":"Como testar um AWS Lambda com Python e Localstack?","isPartOf":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#primaryimage"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#primaryimage"},"thumbnailUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png","datePublished":"2020-05-24T17:18:00+00:00","dateModified":"2024-10-11T14:38:37+00:00","description":"Descubra como \u00e9 poss\u00edvel testar um AWS Lambda na sua m\u00e1quina usando PyCharm com Python e Localstack com este tutorial incr\u00edvel!","breadcrumb":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.geekhunter.com/pt/blog\/aws-lambda-python-pycharm-localstack\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#primaryimage","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2020\/05\/aws-lambda.png","width":1200,"height":675,"caption":"aws-lambda-python"},{"@type":"BreadcrumbList","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/aws-lambda-python-pycharm-localstack\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.geekhunter.com/pt/blog\/"},{"@type":"ListItem","position":2,"name":"Mundo TI","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/"},{"@type":"ListItem","position":3,"name":"Desenvolvimiento de software","item":"https:\/\/www.geekhunter.com/pt/blog\/category\/mundo-ti\/desenvolvimiento-de-software\/"},{"@type":"ListItem","position":4,"name":"Como testar um AWS Lambda na sua m\u00e1quina com Python e Localstack"}]},{"@type":"WebSite","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#website","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","name":"Blog de TI","description":"Dicas para o RH e profissionais da \u00e1rea TI","publisher":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.geekhunter.com/pt/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#organization","name":"GeekHunter","url":"https:\/\/www.geekhunter.com\/pt\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.geekhunter.com\/pt\/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","contentUrl":"https:\/\/www.geekhunter.com/pt/blog\/wp-content\/uploads\/2024\/10\/icon-1.png","width":300,"height":300,"caption":"GeekHunter"},"image":{"@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geekhunterbr\/","https:\/\/x.com\/geekhunterbr","https:\/\/www.instagram.com\/geekhunterbr\/","https:\/\/www.linkedin.com\/company\/geekhunter-brasil\/","https:\/\/www.youtube.com\/@GeekHunterOfficial"]},{"@type":"Person","@id":"https:\/\/www.geekhunter.com\/pt\/blog\/#\/schema\/person\/9f62b173345139f7bbdaf55312c3d400","name":"Geekhunter","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09a0f76de8cf1fa3621f8b73417ce43344b42e1324a07a9af24f57c5eef49840?s=96&d=mm&r=g","caption":"Geekhunter"},"url":"https:\/\/www.geekhunter.com\/pt\/blog\/author\/matias\/"}]}},"_links":{"self":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/9995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/comments?post=9995"}],"version-history":[{"count":0,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/posts\/9995\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media\/10005"}],"wp:attachment":[{"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/media?parent=9995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/categories?post=9995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geekhunter.com/pt/blog\/wp-json\/wp\/v2\/tags?post=9995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}