{"id":2464,"date":"2017-01-06T10:39:59","date_gmt":"2017-01-06T10:39:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2464"},"modified":"2023-05-19T04:12:27","modified_gmt":"2023-05-19T11:12:27","slug":"serverless-faas-aws-lambda-java","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/","title":{"rendered":"FaaS sem servidor com AWS Lambda e Java"},"content":{"rendered":"<h2>O que \u00e9 uma arquitetura sem servidor?<\/h2>\n<p>A arquitetura sem servidor executa c\u00f3digo personalizado em cont\u00eaineres ef\u00eameros que s\u00e3o totalmente gerenciados por terceiros. Normalmente, o c\u00f3digo personalizado \u00e9 uma pequena parte de um aplicativo completo. Ela tamb\u00e9m \u00e9 chamada de\u00a0<em>fun\u00e7\u00e3o<\/em>. Isso d\u00e1 outro nome para a arquitetura sem servidor, como\u00a0<em>Fun\u00e7\u00e3o como um servi\u00e7o<\/em> (FaaS). O cont\u00eainer \u00e9 ef\u00eamero porque pode durar apenas uma invoca\u00e7\u00e3o. O cont\u00eainer pode ser reutilizado, mas n\u00e3o \u00e9 algo em que se possa confiar. Como desenvolvedor, voc\u00ea carrega o c\u00f3digo na plataforma FaaS e o servi\u00e7o cuida de toda a capacidade, dimensionamento, aplica\u00e7\u00e3o de patches e administra\u00e7\u00e3o da infraestrutura para executar seu c\u00f3digo.<\/p>\n<p>Um aplicativo criado usando a arquitetura sem servidor segue a abordagem orientada por eventos. Por exemplo, uma atividade aconteceu no aplicativo, como um clique. Isso \u00e9 muito diferente de uma arquitetura cl\u00e1ssica em que o c\u00f3digo do aplicativo \u00e9 normalmente implantado em um servidor de aplicativos, como o Tomcat ou o WildFly. Dimensionar o seu aplicativo significa iniciar inst\u00e2ncias adicionais do servidor de aplicativos ou ativar cont\u00eaineres adicionais com o servidor de aplicativos empacotado. O balanceador de carga precisa ser atualizado com os novos endere\u00e7os IP. Os sistemas operacionais precisam ser corrigidos, atualizados e mantidos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/martinfowler.com\/articles\/serverless\/ps.svg\" alt=\"\" width=\"493\" height=\"125\" \/><\/p>\n<p><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a> explique a diferen\u00e7a entre o modelo de programa\u00e7\u00e3o cl\u00e1ssico e essa nova arquitetura sem servidor. Com uma plataforma FaaS, seu aplicativo \u00e9 dividido em v\u00e1rias fun\u00e7\u00f5es. Cada fun\u00e7\u00e3o \u00e9 implantada no FaaS. O servi\u00e7o ativa inst\u00e2ncias de computa\u00e7\u00e3o adicionais para atender \u00e0s demandas de escalabilidade do seu aplicativo. As plataformas FaaS fornecem o ambiente de execu\u00e7\u00e3o e cuidam da inicializa\u00e7\u00e3o e da desativa\u00e7\u00e3o dos cont\u00eaineres para executar sua fun\u00e7\u00e3o.<\/p>\n<p><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/martinfowler.com\/articles\/serverless\/sps.svg\" alt=\"\" width=\"489\" height=\"305\" \/><\/a><\/p>\n<p>Ler <a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a> para obter mais detalhes sobre essas imagens. Uma das grandes vantagens do FaaS \u00e9 que voc\u00ea s\u00f3 \u00e9 cobrado pelo tempo de computa\u00e7\u00e3o, ou seja, o tempo em que seu c\u00f3digo est\u00e1 sendo executado. N\u00e3o h\u00e1 cobran\u00e7a quando seu c\u00f3digo n\u00e3o est\u00e1 em execu\u00e7\u00e3o. Qual \u00e9 a diferen\u00e7a entre as fun\u00e7\u00f5es e as VMs e os cont\u00eaineres?<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2616\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/vm-containers-serverless.png\" alt=\"\" width=\"1920\" height=\"1101\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless.png 1920w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-300x172.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-1024x587.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-768x440.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-1536x881.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/vm-containers-serverless-1320x757.png 1320w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>Observe que os cont\u00eaineres do Linux, em vez dos cont\u00eaineres do Docker, s\u00e3o usados como uma implementa\u00e7\u00e3o para o AWS Lambda.<\/p>\n<h2>Qual \u00e9 a diferen\u00e7a entre FaaS e PaaS?<\/h2>\n<p>Conforme citado em <a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a>Uma resposta r\u00e1pida \u00e9 fornecida pelo tweet a seguir:<\/p>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\">Se a sua PaaS puder iniciar inst\u00e2ncias de forma eficiente em 20 ms que s\u00e3o executadas por meio segundo, chame-a de sem servidor. <a href=\"https:\/\/t.co\/S3YzvqFYLR\">https:\/\/t.co\/S3YzvqFYLR<\/a><\/p>\n<p>- adrian cockcroft (@adrianco) <a href=\"https:\/\/twitter.com\/adrianco\/status\/736553530689998848\">28 de maio de 2016<\/a><\/p><\/blockquote>\n<p>Em outras palavras, a maioria dos aplicativos de PaaS n\u00e3o \u00e9 voltada para a ativa\u00e7\u00e3o e desativa\u00e7\u00e3o de aplicativos inteiros para cada solicita\u00e7\u00e3o, enquanto as plataformas de FaaS fazem exatamente isso. <a href=\"https:\/\/serverless.zone\/abstracting-the-back-end-with-faas-e5e80e837362\">Abstraindo o back-end com FaaS<\/a> explicar a diferen\u00e7a entre as diferentes ofertas de *aaS. A imagem do blog \u00e9 capturada abaixo:<br \/>\n<a href=\"https:\/\/serverless.zone\/abstracting-the-back-end-with-faas-e5e80e837362\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14464\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/faas.png\" alt=\"faas\" width=\"778\" height=\"375\" \/><\/a><\/p>\n<p><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a>\u00a0tamb\u00e9m fornecem grandes detalhes sobre o que \u00e9 e o que n\u00e3o \u00e9 FaaS. <a href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda<\/a>, <a href=\"https:\/\/cloud.google.com\/functions\/\">Fun\u00e7\u00f5es do Google Cloud <\/a>e <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/functions\/\">Fun\u00e7\u00f5es do Azure<\/a>\u00a0s\u00e3o algumas das op\u00e7\u00f5es para executar aplicativos sem servidor. Este blog mostrar\u00e1 como escrever sua primeira fun\u00e7\u00e3o AWS Lambda.<\/p>\n<h2>O que \u00e9 o AWS Lambda?<\/h2>\n<p>O AWS Lambda \u00e9 um servi\u00e7o FaaS da Amazon Web Services. Ele executa seu c\u00f3digo em uma infraestrutura de computa\u00e7\u00e3o de alta disponibilidade e realiza toda a administra\u00e7\u00e3o dos recursos de computa\u00e7\u00e3o, incluindo manuten\u00e7\u00e3o de servidor e sistema operacional, provisionamento de capacidade e dimensionamento autom\u00e1tico, monitoramento de c\u00f3digo e registro. O AWS Lambda cobra pelo tempo de execu\u00e7\u00e3o do seu c\u00f3digo em incrementos de 100 ms. N\u00e3o h\u00e1 custo associado ao armazenamento da fun\u00e7\u00e3o Lambda no AWS.<\/p>\n<p>O primeiro milh\u00e3o de solicita\u00e7\u00f5es por m\u00eas \u00e9 gratuito e, depois disso, o pre\u00e7o \u00e9 nominal. Leia mais detalhes em <a href=\"https:\/\/aws.amazon.com\/lambda\/pricing\/\">Pre\u00e7os Lambda<\/a>. Ele tamb\u00e9m oferece visibilidade do desempenho, fornecendo m\u00e9tricas e registros em tempo real para <a href=\"https:\/\/aws.amazon.com\/cloudwatch\/\">AWS CloudWatch<\/a>. Tudo o que voc\u00ea precisa fazer \u00e9 escrever o c\u00f3digo! Aqui est\u00e1 uma r\u00e1pida introdu\u00e7\u00e3o:<\/p>\n<p>Confira tamb\u00e9m O que h\u00e1 de novo no AWS Lambda em <a href=\"https:\/\/reinvent.awsevents.com\/\">AWS ReInvent 2016<\/a>:<\/p>\n<p>Confira tamb\u00e9m os padr\u00f5es de arquitetura sem servidor e as pr\u00e1ticas recomendadas do AWS ReInvent 2016:<\/p>\n<p>O c\u00f3digo que voc\u00ea executa no AWS Lambda \u00e9 chamado de fun\u00e7\u00e3o Lambda. Voc\u00ea carrega seu c\u00f3digo como um arquivo zip ou o projeta usando o <a href=\"https:\/\/console.aws.amazon.com\/lambda\/home\">Console de gerenciamento do AWS Lambda<\/a>. H\u00e1 um suporte integrado para o AWS SDK, o que simplifica a capacidade de chamar outros servi\u00e7os do AWS. Em resumo, o Lambda \u00e9 uma computa\u00e7\u00e3o escal\u00e1vel, sem servidor, na nuvem. O AWS Lambda oferece v\u00e1rios\u00a0<a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/current-supported-versions.html\">ambientes de execu\u00e7\u00e3o:<\/a><\/p>\n<ul>\n<li>Node.js - v0.10.36, v4.3.2 (recomendado)<\/li>\n<li>Java - Java 8<\/li>\n<li>Python - Python 2.7<\/li>\n<li>.NET Core - .NET Core 1.0.1 (C#)<\/li>\n<\/ul>\n<p>Este blog mostrar\u00e1 como fazer isso:<\/p>\n<ul>\n<li>Crie um aplicativo Java que armazene um documento JSON no Couchbase<\/li>\n<li>Use o Maven para criar um pacote de implanta\u00e7\u00e3o para o aplicativo Java<\/li>\n<li>Criar uma fun\u00e7\u00e3o Lambda<\/li>\n<li>Atualizar a fun\u00e7\u00e3o Lambda<\/li>\n<\/ul>\n<p>O c\u00f3digo completo deste blog est\u00e1 dispon\u00edvel em\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/serverless\/tree\/master\/aws\/hellocouchbase\">github.com\/arun-gupta\/serverless\/tree\/master\/aws\/hellocouchbase<\/a>.<\/p>\n<h2>Aplicativo Java para o AWS Lambda<\/h2>\n<p>Primeiro, vamos dar uma olhada em um aplicativo Java que ser\u00e1 usado para essa fun\u00e7\u00e3o Lambda. <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/java-programming-model.html\">Modelo de programa\u00e7\u00e3o para fun\u00e7\u00f5es Lambda em Java<\/a> fornecem mais detalhes sobre como escrever seu c\u00f3digo de fun\u00e7\u00e3o Lambda em Java. Nossa fun\u00e7\u00e3o Lambda implementar\u00e1 a interface predefinida <code>com.amazonaws.services.lambda.runtime.RequestHandler<\/code>. O c\u00f3digo tem a seguinte apar\u00eancia:<\/p>\n<pre class=\"lang:default decode:true\">public class HelloCouchbase implements RequestHandler&lt;Request, String&gt; {\r\n\r\n    CouchbaseCluster cluster;\r\n    Bucket bucket;\r\n    LambdaLogger logger;\r\n\r\n    @Override\r\n    public String handleRequest(Request request, Context context) {\r\n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\");\r\n        String timestamp = dateFormat.format(Calendar.getInstance().getTime());\r\n\r\n        logger = context.getLogger();\r\n        logger.log(\"Request received: %s\" + timestamp);\r\n        ButtonDocument buttonDocument = new ButtonDocument();\r\n        buttonDocument.setId(context.getAwsRequestId());\r\n        buttonDocument.setRequestId(context.getAwsRequestId());\r\n        buttonDocument.setTimestamp(String.valueOf(timestamp));\r\n        \r\n        getBucket().upsert(buttonDocument.toJson());\r\n\r\n        return buttonDocument.toString();\r\n    }<\/pre>\n<p><code>handleRequest<\/code> \u00e9 onde o c\u00f3digo da fun\u00e7\u00e3o \u00e9 implementado. <code><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/java-context-object.html\">Contexto<\/a><\/code> fornece informa\u00e7\u00f5es \u00fateis sobre o ambiente de execu\u00e7\u00e3o do Lambda. Algumas das informa\u00e7\u00f5es do contexto s\u00e3o armazenadas em um documento JSON. Por fim,\u00a0<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/java\/start-using-sdk.html\">SDK Java do Couchbase<\/a>\u00a0API <code>upsert<\/code> \u00e9 usado para gravar um documento JSON na inst\u00e2ncia identificada do Couchbase.\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/database-on-amazon-installing-couchbase-ami-on-aws\/\">Couchbase no Amazon EC2<\/a> fornece instru\u00e7\u00f5es completas para instalar o Couchbase no AWS EC2. As informa\u00e7\u00f5es sobre o servidor Couchbase s\u00e3o obtidas como:<\/p>\n<pre class=\"lang:default decode:true\">public CouchbaseCluster getCluster() {\r\n    if (null == cluster) {\r\n        logger.log(\"env: \" + System.getenv(\"COUCHBASE_HOST\"));\r\n        cluster = CouchbaseCluster.create(System.getenv(\"COUCHBASE_HOST\"));\r\n    }\r\n    return cluster;\r\n}<\/pre>\n<p>Mais uma vez, isso est\u00e1 usando a API Java do Couchbase\u00a0<a href=\"https:\/\/docs.couchbase.com\/sdk-api\/couchbase-java-client-2.3.6\/com\/couchbase\/client\/java\/CouchbaseCluster.html\">CouchbaseCluster<\/a>\u00a0como ponto de entrada principal para o cluster do Couchbase. O <code>COUCHBASE_HOST<\/code> \u00e9 passada quando a fun\u00e7\u00e3o Lambda \u00e9 criada. No nosso caso, isso apontaria para um cluster do Couchbase de n\u00f3 \u00fanico em execu\u00e7\u00e3o no AWS EC2.\u00a0<a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2016\/11\/aws-lambda-supports-environment-variables\/\">As vari\u00e1veis de ambiente foram introduzidas recentemente<\/a> no AWS Lambda. Por fim, voc\u00ea precisa acessar esse bucket no servidor:<\/p>\n<pre class=\"lang:default decode:true\">public Bucket getBucket() {\r\n    while (null == bucket) {\r\n        logger.log(\"Trying to connect to the database\");\r\n        bucket = getCluster().openBucket(\"serverless\", 2L, TimeUnit.MINUTES);\r\n\r\n        try {\r\n            Thread.sleep(3000);\r\n        } catch (Exception e) {\r\n            logger.log(\"Thread sleep Exception: \" + e.toString());\r\n            throw new RuntimeException(e);\r\n        }\r\n    }\r\n\r\n    return bucket;\r\n}<\/pre>\n<p>O nome do bucket \u00e9 <code>sem servidor<\/code> e todos os documentos JSON s\u00e3o armazenados nele. Um simples <a href=\"https:\/\/github.com\/arun-gupta\/serverless\/tree\/master\/aws\/helloworld\">Aplicativo Hello World<\/a> tamb\u00e9m pode ser usado para criar essa fun\u00e7\u00e3o.<\/p>\n<h2>Criar pacote de implanta\u00e7\u00e3o do AWS Lambda<\/h2>\n<p>O AWS FaaS precisa de um pacote de implanta\u00e7\u00e3o. Esse pacote Lambda \u00e9 um pacote <code>.zip<\/code> ou <code>.jar<\/code> que cont\u00e9m todas as depend\u00eancias da fun\u00e7\u00e3o. Nosso aplicativo \u00e9 empacotado usando o Maven e, portanto, usaremos um plug-in do Maven para criar um pacote de implanta\u00e7\u00e3o. O aplicativo tem <code>pom.xml<\/code> com o seguinte fragmento de plug-in:<\/p>\n<pre class=\"lang:default decode:true\">    org.apache.maven.plugins\r\n    maven-shade-plugin\r\n    2.3\r\n    \r\n        false\r\n    \r\n    \r\n        \r\n            package\r\n            \r\n                shade\r\n            \r\n        \r\n    \r\n<\/pre>\n<p>Mais detalhes sobre a configura\u00e7\u00e3o do Maven est\u00e3o dispon\u00edveis em <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/java-create-jar-pkg-maven-no-ide.html\">Cria\u00e7\u00e3o de um pacote de implanta\u00e7\u00e3o .jar usando o Maven sem nenhum IDE<\/a>. O <a href=\"https:\/\/maven.apache.org\/plugins\/maven-shade-plugin\/\">plug-in maven-shade<\/a> permite que voc\u00ea crie um uber-jar incluindo todas as depend\u00eancias. O <code>sombra<\/code> est\u00e1 vinculado \u00e0 meta <code>pacote<\/code> fase. Portanto, a <code>pacote mvn<\/code> gerar\u00e1 um \u00fanico jar de implanta\u00e7\u00e3o. Empacote o aplicativo usando o comando <code>pacote mvn<\/code> comando. Isso mostrar\u00e1 a sa\u00edda:<\/p>\n<pre class=\"lang:default decode:true\">[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ hellocouchbase ---\r\n[INFO] Building jar: \/Users\/arungupta\/workspaces\/serverless\/aws\/hellocouchbase\/hellocouchbase\/target\/hellocouchbase-1.0-SNAPSHOT.jar\r\n[INFO] \r\n[INFO] --- maven-shade-plugin:2.3:shade (default) @ hellocouchbase ---\r\n[INFO] Including com.amazonaws:aws-lambda-java-core:jar:1.1.0 in the shaded jar.\r\n[INFO] Including com.couchbase.client:java-client:jar:2.3.6 in the shaded jar.\r\n[INFO] Including com.couchbase.client:core-io:jar:1.3.6 in the shaded jar.\r\n[INFO] Including io.reactivex:rxjava:jar:1.1.8 in the shaded jar.\r\n[INFO] Replacing original artifact with shaded artifact.\r\n[INFO] Replacing \/Users\/arungupta\/workspaces\/serverless\/aws\/hellocouchbase\/hellocouchbase\/target\/hellocouchbase-1.0-SNAPSHOT.jar with \/Users\/arungupta\/workspaces\/serverless\/aws\/hellocouchbase\/hellocouchbase\/target\/hellocouchbase-1.0-SNAPSHOT-shaded.jar\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] BUILD SUCCESS\r\n[INFO] ------------------------------------------------------------------------<\/pre>\n<p>O <code>target\/hello-couchbase-1.0-SNAPSHOT.jar<\/code> \u00e9 o jar sombreado que ser\u00e1 implantado no AWS Lambda. Mais detalhes sobre a cria\u00e7\u00e3o de um pacote de implanta\u00e7\u00e3o est\u00e3o em <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/lambda-java-how-to-create-deployment-package.html\">Cria\u00e7\u00e3o de um pacote de implanta\u00e7\u00e3o<\/a>.<\/p>\n<h2>Criar fun\u00e7\u00e3o AWS Lambda<\/h2>\n<p>Criar uma fun\u00e7\u00e3o AWS Lambda usando <a href=\"https:\/\/aws.amazon.com\/cli\/\">CLI DO AWS<\/a>. O comando da CLI, nesse caso, tem a seguinte apar\u00eancia:<\/p>\n<pre class=\"lang:default decode:true\">aws lambda create-function \r\n--function-name HelloWorld \r\n--role arn:aws:iam:::role\/service-role\/myLambdaRole \r\n--zip-file fileb:\/\/\/Users\/arungupta\/workspaces\/serverless\/aws\/hellocouchbase\/hellocouchbase\/target\/hellocouchbase-1.0-SNAPSHOT.jar \r\n--handler org.sample.serverless.aws.couchbase.HelloCouchbaseLambda \r\n--description \"Hello Couchbase Lambda\" \r\n--runtime java8  \r\n--region us-west-2 \r\n--timeout 30 \r\n--memory-size 1024 \r\n--publish<\/pre>\n<p>Nesta CLI:<\/p>\n<ul>\n<li><code>fun\u00e7\u00e3o de cria\u00e7\u00e3o<\/code> cria uma fun\u00e7\u00e3o Lambda<\/li>\n<li><code>--nome da fun\u00e7\u00e3o<\/code> fornece o nome da fun\u00e7\u00e3o. O nome da fun\u00e7\u00e3o diferencia mai\u00fasculas de min\u00fasculas.<\/li>\n<li><code>--Fun\u00e7\u00e3o<\/code> especifica o Amazon Resource Name (ARN) de um <a href=\"https:\/\/console.aws.amazon.com\/iam\/home?#\/roles\">Fun\u00e7\u00e3o de IAM<\/a> que o Lambda assume quando executa sua fun\u00e7\u00e3o para acessar quaisquer outros recursos da AWS. Se voc\u00ea executou uma fun\u00e7\u00e3o Lambda<br \/>\nusando o Console do AWS, essa fun\u00e7\u00e3o ser\u00e1 criada para voc\u00ea.<\/li>\n<li><code>--zip-file<\/code> aponta para o pacote de implanta\u00e7\u00e3o que foi criado na etapa anterior. <code>arquivob<\/code>\u00a0\u00e9 um protocolo espec\u00edfico da CLI do AWS para indicar que o conte\u00fado carregado \u00e9 bin\u00e1rio.<\/li>\n<li><code>--manipulador<\/code>\u00a0\u00e9 a classe Java que \u00e9 chamada para iniciar a execu\u00e7\u00e3o da fun\u00e7\u00e3o<\/li>\n<li><code>-publicar<\/code> solicite ao AWS Lambda que crie a fun\u00e7\u00e3o Lambda e publique uma vers\u00e3o como uma opera\u00e7\u00e3o at\u00f4mica. Caso contr\u00e1rio, v\u00e1rias vers\u00f5es poder\u00e3o ser criadas e publicadas em um momento posterior.<\/li>\n<\/ul>\n<p>O Lambda Console mostra:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/servleress-couchbase-lambda-function-1024x629.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14472\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/servleress-couchbase-lambda-function-1024x629.png\" alt=\"servleress-couchbase-lambda-function\" width=\"604\" height=\"371\" \/><\/a><\/p>\n<h2>Teste a fun\u00e7\u00e3o Lambda do AWS<\/h2>\n<p>Teste a fun\u00e7\u00e3o Lambda do AWS usando a CLI do AWS.<\/p>\n<pre class=\"lang:default decode:true\">aws lambda invoke \r\n--function-name HelloCouchbaseLambda \r\n--region us-west-2 \r\n--payload '' \r\nhellocouchbase.out<\/pre>\n<p>Ele mostra a sa\u00edda como:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"StatusCode\": 200\r\n}<\/pre>\n<p>A sa\u00edda do comando \u00e9 armazenada em <code>hellocouchbase.out<\/code> e se parece com isso:<\/p>\n<pre class=\"lang:default decode:true\">\"{\"id\":\"e6bbe71a-ca4f-11e6-95a7-95f2ed410493\",\"installationId\":null,\"requestId\":\"e6bbe71a-ca4f-11e6-95a7-95f2ed410493\",\"identityId\":null,\"timestamp\":\"2016-12-25 03:12:01.157\"}\"<\/pre>\n<p>A chamada dessa fun\u00e7\u00e3o armazena um documento JSON no Couchbase. Os documentos armazenados no Couchbase podem ser vistos usando\u00a0<a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/management-tools.html\">o console da Web do Couchbase<\/a>. O nome de usu\u00e1rio \u00e9 <code>Administrador<\/code> e a senha \u00e9 o ID da inst\u00e2ncia do EC2. Todos os buckets de dados nessa inst\u00e2ncia do Couchbase s\u00e3o mostrados abaixo:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-overview-1024x321.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14468\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-overview-1024x321.png\" alt=\"serverless-couchbase-bucket-overview\" width=\"604\" height=\"189\" \/><\/a><\/p>\n<p>Observe que o <code>sem servidor<\/code> \u00e9 criado manualmente. Clicar em Documentos mostra detalhes de diferentes documentos armazenados no compartimento:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-documents-1024x500.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14469\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-documents-1024x500.png\" alt=\"serverless-couchbase-bucket-documents\" width=\"604\" height=\"295\" \/><\/a><\/p>\n<p>Clicar em cada documento mostra mais detalhes sobre o documento JSON:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-document-1024x608.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14470\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-bucket-document-1024x608.png\" alt=\"serverless-couchbase-bucket-document\" width=\"604\" height=\"359\" \/><\/a><\/p>\n<p>A fun\u00e7\u00e3o Lambda tamb\u00e9m pode ser testada usando o Console:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-console-test-1024x427.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14473\" src=\"\/wp-content\/original-assets\/december-2016\/serverless-faas-with-aws-lambda-and-java\/serverless-couchbase-console-test-1024x427.png\" alt=\"serverless-couchbase-console-test\" width=\"604\" height=\"252\" \/><\/a><\/p>\n<h2>Atualizar a fun\u00e7\u00e3o AWS Lambda<\/h2>\n<p>Se a l\u00f3gica do aplicativo mudar, um novo pacote de implanta\u00e7\u00e3o precisar\u00e1 ser carregado para a fun\u00e7\u00e3o Lambda. Nesse caso, <code>pacote mvn<\/code> criar\u00e1 um pacote de implanta\u00e7\u00e3o e o <code>aws lambda<\/code> O comando CLI \u00e9 usado para atualizar o c\u00f3digo de fun\u00e7\u00e3o:<\/p>\n<pre class=\"lang:default decode:true\">aws lambda update-function-code \r\n--function-name HelloCouchbaseLambda \r\n--zip-file fileb:\/\/\/Users\/arungupta\/workspaces\/serverless\/aws\/hellocouchbase\/hellocouchbase\/target\/hellocouchbase-1.0-SNAPSHOT.jar \r\n--region us-west-2 \r\n--publish<\/pre>\n<p>Mostra o resultado:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"CodeSha256\": \"w510ejw\/OoVsQt2JiLG2bPZPAaFvQCRrYYYlQWctCQE=\", \r\n    \"FunctionName\": \"HelloCouchbaseLambda\", \r\n    \"CodeSize\": 6978108, \r\n    \"MemorySize\": 1024, \r\n    \"FunctionArn\": \"arn:aws:lambda:us-west-2::function:HelloCouchbaseLambda:8\", \r\n    \"Environment\": {\r\n        \"Variables\": {\r\n            \"COUCHBASE_HOST\": \"ec2-35-165-249-235.us-west-2.compute.amazonaws.com\"\r\n        }\r\n    }, \r\n    \"Version\": \"8\", \r\n    \"Role\": \"arn:aws:iam:::role\/service-role\/myLambdaRole\", \r\n    \"Timeout\": 30, \r\n    \"LastModified\": \"2016-12-25T04:17:38.717+0000\", \r\n    \"Handler\": \"org.sample.serverless.aws.couchbase.HelloCouchbaseLambda\", \r\n    \"Runtime\": \"java8\", \r\n    \"Description\": \"Java Hello Couchbase\"\r\n}<\/pre>\n<p>A fun\u00e7\u00e3o pode ent\u00e3o ser chamada novamente. Durante a reda\u00e7\u00e3o deste blog, isso tamb\u00e9m foi usado com frequ\u00eancia para depurar a fun\u00e7\u00e3o. Isso ocorre porque as fun\u00e7\u00f5es Lambda n\u00e3o t\u00eam nenhum estado ou caixa associado a elas. Portanto, voc\u00ea n\u00e3o pode fazer login em uma caixa para verificar se a fun\u00e7\u00e3o n\u00e3o foi implementada corretamente. Voc\u00ea certamente pode usar as declara\u00e7\u00f5es de registro do CloudWatch quando a fun\u00e7\u00e3o estiver funcionando.<\/p>\n<h2>Refer\u00eancias do AWS Lambda<\/h2>\n<ul>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/lambda-introduction.html\">AWS Lambda: como funciona<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/home\/server.html\">Documentos do servidor Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs do Couchbase<\/a><\/li>\n<li>Siga-nos em <a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>What is a Serverless Architecture? Serverless architecture runs\u00a0custom code in ephemeral containers\u00a0that are fully managed by a 3rd party. The custom code is typically a small part of a complete application. It is also called as\u00a0function. This gives another name [&hellip;]<\/p>","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[8933],"class_list":["post-2464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Is AWS Lambda PaaS | How is FaaS Different from PaaS<\/title>\n<meta name=\"description\" content=\"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).\" \/>\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.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serverless FaaS With AWS Lambda and Java\" \/>\n<meta property=\"og:description\" content=\"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-06T10:39:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-19T11:12:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martinfowler.com\/articles\/serverless\/ps.svg\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Serverless FaaS With AWS Lambda and Java\",\"datePublished\":\"2017-01-06T10:39:59+00:00\",\"dateModified\":\"2023-05-19T11:12:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/\"},\"wordCount\":1480,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/\",\"name\":\"Is AWS Lambda PaaS | How is FaaS Different from PaaS\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-06T10:39:59+00:00\",\"dateModified\":\"2023-05-19T11:12:27+00:00\",\"description\":\"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serverless FaaS With AWS Lambda and Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\/\/x.com\/arungupta\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Is AWS Lambda PaaS | How is FaaS Different from PaaS","description":"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).","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.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/","og_locale":"pt_BR","og_type":"article","og_title":"Serverless FaaS With AWS Lambda and Java","og_description":"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-06T10:39:59+00:00","article_modified_time":"2023-05-19T11:12:27+00:00","og_image":[{"url":"https:\/\/martinfowler.com\/articles\/serverless\/ps.svg","type":"","width":"","height":""}],"author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Serverless FaaS With AWS Lambda and Java","datePublished":"2017-01-06T10:39:59+00:00","dateModified":"2023-05-19T11:12:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/"},"wordCount":1480,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/","url":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/","name":"Is AWS Lambda PaaS | How is FaaS Different from PaaS","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-06T10:39:59+00:00","dateModified":"2023-05-19T11:12:27+00:00","description":"What is a serverless architecture? Find out how to make the AWS Lambda Function as a Service (FaaS) platform as opposed to Platform as a Service (PaaS).","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/serverless-faas-aws-lambda-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Serverless FaaS With AWS Lambda and Java"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta \u00e9 o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experi\u00eancia na lideran\u00e7a de equipes multifuncionais para desenvolver e executar estrat\u00e9gias, planejamento e execu\u00e7\u00e3o de conte\u00fado, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e \u00e9 membro fundador da equipe Java EE. Gupta \u00e9 autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experi\u00eancia em palestras em mais de 40 pa\u00edses sobre uma infinidade de t\u00f3picos e \u00e9 um JavaOne Rock Star h\u00e1 tr\u00eas anos consecutivos. Gupta tamb\u00e9m fundou o cap\u00edtulo Devoxx4Kids nos EUA e continua a promover a educa\u00e7\u00e3o tecnol\u00f3gica entre as crian\u00e7as. Autor de v\u00e1rios livros sobre tecnologia, corredor \u00e1vido, viajante do mundo inteiro, campe\u00e3o de Java, l\u00edder de JUG, membro do NetBeans Dream Team e capit\u00e3o do Docker, ele pode ser facilmente acessado em @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/arun-gupta\/"}]}},"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","author_category":"","last_name":"Gupta","first_name":"Arun","job_title":"","user_url":"","description":"Arun Gupta \u00e9 o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experi\u00eancia na lideran\u00e7a de equipes multifuncionais para desenvolver e executar estrat\u00e9gias, planejamento e execu\u00e7\u00e3o de conte\u00fado, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e \u00e9 membro fundador da equipe Java EE.\r\n\r\nGupta \u00e9 autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experi\u00eancia em palestras em mais de 40 pa\u00edses sobre diversos t\u00f3picos e \u00e9 um JavaOne Rock Star h\u00e1 tr\u00eas anos consecutivos. Gupta tamb\u00e9m fundou o cap\u00edtulo Devoxx4Kids nos EUA e continua a promover a educa\u00e7\u00e3o tecnol\u00f3gica entre as crian\u00e7as. Autor de v\u00e1rios livros sobre tecnologia, corredor \u00e1vido, viajante do mundo inteiro, campe\u00e3o de Java, l\u00edder de JUG, membro do NetBeans Dream Team e capit\u00e3o do Docker, ele pode ser facilmente acessado em @arungupta."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2464"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2464"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}