{"id":2488,"date":"2017-01-19T22:05:21","date_gmt":"2017-01-19T22:05:20","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2488"},"modified":"2023-06-21T05:47:49","modified_gmt":"2023-06-21T12:47:49","slug":"microservice-aws-serverless-application-model-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/microservice-aws-serverless-application-model-couchbase\/","title":{"rendered":"Microsservi\u00e7o usando o modelo de aplicativo sem servidor do AWS e o Couchbase"},"content":{"rendered":"<p>Lan\u00e7amento do Amazon Web Services <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2016\/11\/introducing-the-aws-serverless-application-model\/\">Modelo de aplicativo sem servidor<\/a>ou SAM, h\u00e1 alguns meses. Ele define uma sintaxe simplificada para expressar<br \/>\nrecursos sem servidor. O SAM estende\u00a0<a href=\"https:\/\/aws.amazon.com\/cloudformation\/\">AWS CloudFormation<\/a>\u00a0para adicionar suporte ao API Gateway, ao AWS Lambda e ao Amazon DynamoDB. Este blog mostrar\u00e1 como criar um microsservi\u00e7o simples usando<br \/>\nSAM. \u00c9 claro que usaremos <a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase<\/a> em vez de DynamoDB! Este blog tamb\u00e9m usar\u00e1 os conceitos b\u00e1sicos explicados em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/microservice-aws-api-gateway-lambda-couchbase\/\">Microsservi\u00e7o usando o AWS API Gateway, o AWS Lambda e o Couchbase<\/a>. SAM<br \/>\nmostrar\u00e1 a facilidade com que toda a pilha de microsservi\u00e7os pode ser implantada e gerenciada.<\/p>\n<p>Para relembrar, aqui est\u00e3o os principais componentes da arquitetura:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/serverless-microservice-1024x193.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14518\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/serverless-microservice-1024x193.png\" alt=\"serverless-microservice\" width=\"604\" height=\"114\" \/><\/a><\/p>\n<ul>\n<li>O cliente pode ser curl, AWS CLI\/Console, cliente Postman ou qualquer outra ferramenta\/API que possa invocar um ponto de extremidade REST.<\/li>\n<li>O AWS API Gateway \u00e9 usado para provisionar APIs. O recurso de n\u00edvel superior est\u00e1 dispon\u00edvel no caminho <code>\/livros<\/code>. HTTP <code>OBTER<\/code> e <code>POST<\/code> s\u00e3o publicados para o recurso.<\/li>\n<li>Cada API aciona uma fun\u00e7\u00e3o Lambda. Duas fun\u00e7\u00f5es Lambda s\u00e3o criadas,\u00a0<code>lista de livros<\/code>\u00a0para listar todos os livros dispon\u00edveis e <code>criar livro<\/code>\u00a0para criar um novo livro.<\/li>\n<li>O Couchbase \u00e9 usado como um armazenamento de persist\u00eancia no EC2. Todos os documentos JSON s\u00e3o armazenados e recuperados desse banco de dados.<\/li>\n<\/ul>\n<p>Outros blogs sobre serverless:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/microservice-aws-api-gateway-lambda-couchbase\/\">Microsservi\u00e7o usando o AWS API Gateway, o AWS Lambda e o Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/aws-iot-button-lambda-couchbase\/\">Bot\u00e3o IoT do AWS, Lambda e Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/serverless-faas-aws-lambda-java\/\">FaaS sem servidor com Lambda e Java<\/a><\/li>\n<\/ul>\n<p>Vamos come\u00e7ar!<\/p>\n<h2>Modelo de aplicativo sem servidor (SAM)<\/h2>\n<p>Um modelo do AWS CloudFormation com recursos sem servidor em conformidade com o <a href=\"https:\/\/github.com\/awslabs\/serverless-application-model\/blob\/master\/versions\/2016-10-31.md\">Modelo SAM da AWS<\/a> \u00e9 chamado de arquivo ou modelo SAM. Ele \u00e9 implantado<br \/>\ncomo uma pilha do CloudFormation. Vamos dar uma olhada no nosso modelo SAM: Esse modelo est\u00e1 dispon\u00edvel em\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/template.yml\">github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/template.yml<\/a>.<\/p>\n<pre class=\"lang:yaml decode:true\">AWSTemplateFormatVersion : '2010-09-09'\r\nTransform: AWS::Serverless-2016-10-31\r\nDescription: Microservice using API Gateway, Lambda and Couchbase\r\nResources:\r\n  MicroserviceGetAllGateway:\r\n    Type: AWS::Serverless::Function\r\n    Properties:\r\n      Handler: org.sample.serverless.aws.couchbase.gateway.BucketGetAll\r\n      Runtime: java8\r\n      CodeUri: s3:\/\/serverless-microservice\/microservice-http-endpoint-1.0-SNAPSHOT.jar\r\n      Timeout: 30\r\n      MemorySize: 1024\r\n      Environment:\r\n        Variables:\r\n          COUCHBASE_HOST: ec2-35-163-21-104.us-west-2.compute.amazonaws.com\r\n      Role: arn:aws:iam::598307997273:role\/microserviceRole\r\n      Events:\r\n        GetResource:\r\n          Type: Api\r\n          Properties:\r\n            Path: \/books\r\n            Method: get\r\n  MicroservicePostGateway:\r\n    Type: AWS::Serverless::Function\r\n    Properties:\r\n      Handler: org.sample.serverless.aws.couchbase.gateway.BucketPost\r\n      Runtime: java8\r\n      CodeUri: s3:\/\/serverless-microservice\/microservice-http-endpoint-1.0-SNAPSHOT.jar\r\n      Timeout: 30\r\n      MemorySize: 1024\r\n      Environment:\r\n        Variables:\r\n          COUCHBASE_HOST: ec2-35-163-21-104.us-west-2.compute.amazonaws.com\r\n      Role: arn:aws:iam::598307997273:role\/microserviceRole\r\n      Events:\r\n        GetResource:\r\n          Type: Api\r\n          Properties:\r\n            Path: \/books\r\n            Method: post<\/pre>\n<p><a href=\"https:\/\/github.com\/awslabs\/serverless-application-model\/blob\/master\/versions\/2016-10-31.md\">Modelo SAM Especifica\u00e7\u00e3o<\/a>\u00a0fornecer detalhes completos sobre o conte\u00fado do modelo. As partes principais do modelo s\u00e3o:<\/p>\n<ul>\n<li>Define dois recursos, ambos do tipo Lambda Function identificados por <code>AWS::Serverless::Function<\/code> atributo. O nome da fun\u00e7\u00e3o Lambda \u00e9 definido por <code>Recursos.<\/code>.<\/li>\n<li>A classe de cada manipulador \u00e9 definida pelo valor de <code>Recursos...Propriedades.Manipulador<\/code> atributo<\/li>\n<li>O tempo de execu\u00e7\u00e3o do Java 8 \u00e9 usado para executar a fun\u00e7\u00e3o definida por <code>Recursos...Propriedades.Tempo de execu\u00e7\u00e3o<\/code> atributo<\/li>\n<li>O c\u00f3digo da classe \u00e9 carregado em um bucket S3, no nosso caso, para <code>s3:\/\/serverless-microservice\/microservice-http-endpoint-1.0-SNAPSHOT.jar<\/code><\/li>\n<li><code>Recursos...Propriedades.Ambiente.Vari\u00e1veis.COUCHBASE_HOST<\/code> define o host em que o Couchbase est\u00e1 sendo executado. Isso pode ser facilmente implantado no EC2, conforme explicado em <a href=\"https:\/\/github.com\/arun-gupta\/serverless\/tree\/master\/aws\/microservice#setup-couchbase\">Configurar o Couchbase<\/a>.<\/li>\n<li>Cada fun\u00e7\u00e3o Lambda \u00e9 acionada por uma API. Ela \u00e9 implantada usando o AWS API Gateway. O caminho \u00e9 definido por <code>Eventos.GetResource.Properties.Path<\/code>. O m\u00e9todo HTTP \u00e9 definido usando <code>Eventos.GetResource.Properties.Method<\/code> atributo.<\/li>\n<\/ul>\n<h2>Aplicativo Java<\/h2>\n<p>O aplicativo Java que cont\u00e9m as fun\u00e7\u00f5es Lambda est\u00e1 em\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/serverless\/tree\/master\/aws\/microservice\/microservice-http-endpoint\">github.com\/arun-gupta\/serverless\/tree\/master\/aws\/microservice\/microservice-http-endpoint<\/a>.<br \/>\nFun\u00e7\u00e3o lambda que \u00e9 acionada por <code>HTTP GET<\/code>\u00a0\u00e9 mostrado:<\/p>\n<pre class=\"lang:default decode:true\">public class BucketGetAll implements RequestHandler&lt;GatewayRequest, GatewayResponse&gt; {\r\n\r\n    @Override\r\n    public GatewayResponse handleRequest(GatewayRequest request, Context context) {\r\n        try {\r\n            N1qlQuery query = N1qlQuery\r\n                    .simple(select(\"*\")\r\n                            .from(i(CouchbaseUtil.getBucketName()))\r\n                            .limit(10));\r\n\r\n            String result = CouchbaseUtil.getBucket().query(query).allRows().toString();\r\n\r\n            return new GatewayResponse(200, result, GatewayResponse.HEADERS_JSON);\r\n        } catch (ConfigurationException e) {\r\n            return new GatewayResponse(400, e.getMessage(), GatewayResponse.HEADERS_TEXT);\r\n        }\r\n    }\r\n}<\/pre>\n<p>Um pouco de explica\u00e7\u00e3o:<\/p>\n<ul>\n<li>Cada fun\u00e7\u00e3o Lambda precisa implementar a interface\u00a0<code>com.amazonaws.services.lambda.runtime.RequestHandler<\/code>.<\/li>\n<li>A integra\u00e7\u00e3o do API Gateway e do Lambda exige um <a href=\"https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-input-format\">formato de entrada<\/a> e <a href=\"https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-output-format\">formato de sa\u00edda<\/a>.<br \/>\nEsses formatos s\u00e3o definidos como <code><a href=\"https:\/\/github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/microservice-http-endpoint\/src\/main\/java\/org\/sample\/serverless\/aws\/couchbase\/gateway\/GatewayRequest.java\">GatewayRequest<\/a><\/code> e <code><a href=\"https:\/\/github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/microservice-http-endpoint\/src\/main\/java\/org\/sample\/serverless\/aws\/couchbase\/gateway\/GatewayResponse.java\">GatewayResponse<\/a><\/code> aulas.<\/li>\n<li>A l\u00f3gica da fun\u00e7\u00e3o usa <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/java\/start-using-sdk.html\">SDK Java do Couchbase<\/a>\u00a0para consultar o banco de dados do Couchbase. <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql\/\">N1QL<\/a> A consulta \u00e9 usada para consultar<br \/>\no banco de dados. Os resultados e a exce\u00e7\u00e3o s\u00e3o ent\u00e3o agrupados em <code>GatewayRequest<\/code> e <code>GatewayResponse<\/code>.<\/li>\n<\/ul>\n<p>A fun\u00e7\u00e3o Lambda acionada pelo m\u00e9todo HTTP POST tamb\u00e9m \u00e9 bastante simples:<\/p>\n<pre class=\"lang:default decode:true\">public class BucketPost implements RequestHandler&lt;GatewayRequest, GatewayResponse&gt; {\r\n\r\n    @Override\r\n    public GatewayResponse handleRequest(GatewayRequest request, Context context) {\r\n\r\n        try {\r\n            JsonDocument document = CouchbaseUtil.getBucket().upsert(Book.fromStringToJson(request.getBody()));\r\n            return new GatewayResponse(200, document.content().toString(), GatewayResponse.HEADERS_JSON);\r\n        } catch (Exception ex) {\r\n            return new GatewayResponse(400, ex.getMessage(), GatewayResponse.HEADERS_TEXT);\r\n        }\r\n    }\r\n}<\/pre>\n<p>Um pouco de explica\u00e7\u00e3o:<\/p>\n<ul>\n<li>A carga \u00fatil da solicita\u00e7\u00e3o de entrada \u00e9 recuperada de <code>GatewayRequest<\/code><\/li>\n<li>O documento inserido no Couchbase \u00e9 retornado como resposta.<\/li>\n<li>Como no m\u00e9todo anterior, a l\u00f3gica Function usa <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/java\/start-using-sdk.html\">SDK Java do Couchbase<\/a>\u00a0para consultar o banco de dados do Couchbase. Os resultados e a exce\u00e7\u00e3o s\u00e3o ent\u00e3o<br \/>\nenvolto em <code>GatewayRequest<\/code> e <code>GatewayResponse<\/code>.<\/li>\n<\/ul>\n<p>Crie o aplicativo Java como:<\/p>\n<pre class=\"lang:default decode:true\">mvn -f microservice-http-endpoint\/pom.xml clean package<\/pre>\n<h2>Fazer upload da fun\u00e7\u00e3o Lambda para o S3<\/h2>\n<p>O modelo SAM l\u00ea o c\u00f3digo de um bucket S3. Vamos criar um bucket S3:<\/p>\n<pre class=\"lang:default decode:true\">aws s3 mb s3:\/\/serverless-microservice --region us-west-2<\/pre>\n<p><code>us-west-2<\/code> A regi\u00e3o \u00e9 uma das <a href=\"https:\/\/aws.amazon.com\/about-aws\/global-infrastructure\/regional-product-services\/\">Regi\u00f5es compat\u00edveis com o API Gateway<\/a>. Os nomes dos buckets S3 s\u00e3o globalmente exclusivos, mas sua localiza\u00e7\u00e3o \u00e9 espec\u00edfica da regi\u00e3o. Carregar<br \/>\no c\u00f3digo para o bucket S3:<\/p>\n<pre class=\"lang:default decode:true\">aws s3 cp microservice-http-endpoint\/target\/microservice-http-endpoint-1.0-SNAPSHOT.jar s3:\/\/serverless-microservice\/microservice-http-endpoint-1.0-SNAPSHOT.jar<\/pre>\n<p>O c\u00f3digo agora foi carregado no bucket S3. O modelo SAM est\u00e1 pronto para ser implantado!<\/p>\n<h2>Implantar o modelo SAM<\/h2>\n<p>Implante o modelo SAM:<\/p>\n<pre class=\"lang:default decode:true\">aws cloudformation deploy \r\n--template-file template.yml \r\n--stack-name microservice-gateway \r\n--region us-west-2<\/pre>\n<p>Ele mostra a sa\u00edda:<\/p>\n<pre class=\"lang:default decode:true\">Waiting for changeset to be created..\r\nWaiting for stack create\/update to complete\r\nSuccessfully created\/updated stack - microservice-gateway<\/pre>\n<p>Esse comando implementa fun\u00e7\u00f5es Lambda e recursos\/APIs REST que acionam essas fun\u00e7\u00f5es Lambda.<\/p>\n<h2>Invoque o microsservi\u00e7o<\/h2>\n<p>O API Gateway publica uma API REST que pode ser chamada por curl, wget, AWS CLI\/Console, Postman ou qualquer outro aplicativo que possa chamar uma API REST. Este blog usar\u00e1 o Console do AWS para mostrar a intera\u00e7\u00e3o. P\u00e1gina inicial do API Gateway em\u00a0<a href=\"https:\/\/us-west-2.console.aws.amazon.com\/apigateway\/home?region=us-west-2#\/apis\">us-west-2.console.aws.amazon.com\/apigateway\/home?region=us-west-2#\/apis<\/a> shows:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14532\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api.png\" alt=\"AWS SAM Microservice API\" width=\"604\" height=\"331\" \/><br \/>\nClique na API para ver todas as APIs desse recurso:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14538\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-resources.png\" alt=\"AWS SAM Microservice API Resources\" width=\"604\" height=\"362\" \/><\/p>\n<p>Clique em POST para ver a p\u00e1gina padr\u00e3o para a execu\u00e7\u00e3o do m\u00e9todo POST:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14535\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-post-1024x492.png\" alt=\"AWS SAM Microservice API POST\" width=\"604\" height=\"290\" \/><\/p>\n<p>Clique em Test para testar a API:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-post-input.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14531\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-post-input.png\" alt=\"AWS SAM Microservice API POST Input\" width=\"611\" height=\"969\" \/><\/a><\/p>\n<p>Adicione o payload no Request Body e clique em <code>Teste<\/code> para chamar a API. Os resultados s\u00e3o mostrados a seguir:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-post-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14534\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-post-output.png\" alt=\"AWS SAM Microservice API POST Output\" width=\"604\" height=\"568\" \/><\/a><\/p>\n<p>Agora, clique em GET para ver a p\u00e1gina de execu\u00e7\u00e3o padr\u00e3o:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14536\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-get-1024x570.png\" alt=\"AWS SAM Microservice API GET\" width=\"604\" height=\"336\" \/><\/p>\n<p>Clique em Test para testar a API:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14537\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-get-input.png\" alt=\"AWS SAM Microservice API GET Input\" width=\"604\" height=\"713\" \/><\/p>\n<p>N\u00e3o \u00e9 necess\u00e1rio nenhum corpo de solicita\u00e7\u00e3o, basta clicar em Testar para invocar a API. Os resultados s\u00e3o os mostrados:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-get-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14533\" src=\"\/wp-content\/original-assets\/january-2017\/microservice-aws-serverless-application-model-couchbase\/aws-sam-microservice-api-get-output.png\" alt=\"AWS SAM Microservice API GET Output\" width=\"604\" height=\"601\" \/><\/a><\/p>\n<p>A sa\u00edda do banco de dados do Couchbase \u00e9 mostrada no corpo da resposta.<\/p>\n<h2>Refer\u00eancias<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/deploying-lambda-apps.html\">Implanta\u00e7\u00e3o de aplicativos baseados em Lambda<\/a><\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">Arquiteturas sem servidor<\/a><\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/api-gateway\/\">Gateway de API da AWS<\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/with-on-demand-https-example-configure-event-source_1.html\">Cria\u00e7\u00e3o de um microsservi\u00e7o simples usando Lambda e API Gateway<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/server\">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>Amazon Web Services introduced Serverless Application Model, or SAM, a couple of months ago. It defines simplified syntax for expressing serverless resources. SAM extends\u00a0AWS CloudFormation\u00a0to add support for API Gateway, AWS Lambda and Amazon DynamoDB.\u00a0This blog will show how to [&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":[1],"tags":[],"ppma_author":[8933],"class_list":["post-2488","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Microservice using serverless Application Model + Couchbase<\/title>\n<meta name=\"description\" content=\"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.\" \/>\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\/microservice-aws-serverless-application-model-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microservice using AWS Serverless Application Model and Couchbase\" \/>\n<meta property=\"og:description\" content=\"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/microservice-aws-serverless-application-model-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-19T22:05:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T12:47:49+00:00\" \/>\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=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Microservice using AWS Serverless Application Model and Couchbase\",\"datePublished\":\"2017-01-19T22:05:20+00:00\",\"dateModified\":\"2023-06-21T12:47:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/\"},\"wordCount\":826,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/\",\"name\":\"Microservice using serverless Application Model + Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-19T22:05:20+00:00\",\"dateModified\":\"2023-06-21T12:47:49+00:00\",\"description\":\"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#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\/microservice-aws-serverless-application-model-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microservice using AWS Serverless Application Model and Couchbase\"}]},{\"@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":"Microservice using serverless Application Model + Couchbase","description":"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.","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\/microservice-aws-serverless-application-model-couchbase\/","og_locale":"pt_BR","og_type":"article","og_title":"Microservice using AWS Serverless Application Model and Couchbase","og_description":"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/microservice-aws-serverless-application-model-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-19T22:05:20+00:00","article_modified_time":"2023-06-21T12:47:49+00:00","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":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Microservice using AWS Serverless Application Model and Couchbase","datePublished":"2017-01-19T22:05:20+00:00","dateModified":"2023-06-21T12:47:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/"},"wordCount":826,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/","name":"Microservice using serverless Application Model + Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-19T22:05:20+00:00","dateModified":"2023-06-21T12:47:49+00:00","description":"Learn how to create a microservice using AWS Serverless Application Model and Couchbase. SAM helps to ease deployment and management for the entire stack.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-serverless-application-model-couchbase\/#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\/microservice-aws-serverless-application-model-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Microservice using AWS Serverless Application Model and Couchbase"}]},{"@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\/2488","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=2488"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2488\/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=2488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2488"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}