{"id":2468,"date":"2017-01-18T23:08:04","date_gmt":"2017-01-18T23:08:03","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2468"},"modified":"2023-06-21T05:51:56","modified_gmt":"2023-06-21T12:51:56","slug":"microservice-aws-api-gateway-lambda-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/microservice-aws-api-gateway-lambda-couchbase\/","title":{"rendered":"AWS API \uac8c\uc774\ud2b8\uc6e8\uc774, AWS Lambda \ubc0f Couchbase\ub97c \uc0ac\uc6a9\ud55c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/author\/arun-gupta\/\">\uc774 \ube14\ub85c\uadf8<\/a> \uc5d0\uc11c\ub294 \uc9c0\uae08\uae4c\uc9c0 \uc11c\ubc84\ub9ac\uc2a4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uac1c\ub150\uc744 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/serverless-faas-aws-lambda-java\/\">AWS Lambda \ubc0f Java\ub97c \uc0ac\uc6a9\ud55c \uc11c\ubc84\ub9ac\uc2a4 FaaS<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/serverless-faas-aws-lambda-java\/\">AWS IoT Button, \ub78c\ub2e4 \ubc0f \uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a><\/li>\n<\/ul>\n<p>\uc11c\ubc84\ub9ac\uc2a4 \uc2dc\ub9ac\uc988\uc758 \uc138 \ubc88\uc9f8 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 Amazon API Gateway, AWS Lambda, \uadf8\ub9ac\uace0 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac04\ub2e8\ud55c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4\ub97c \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/developer.couchbase.com\/server\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>. \uc77d\uae30 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/serverless-faas-aws-lambda-java\/\">\uc774\uc804 \ube14\ub85c\uadf8<\/a> \ub97c \ucc38\uc870\ud558\uc138\uc694. <a href=\"https:\/\/aws.amazon.com\/api-gateway\/\">Amazon API \uac8c\uc774\ud2b8\uc6e8\uc774<\/a> \ub294 \uac1c\ubc1c\uc790\uac00 \uaddc\ubaa8\uc5d0 \uad00\uacc4\uc5c6\uc774 API\ub97c \uc27d\uac8c \uc0dd\uc131, \uac8c\uc2dc, \uc720\uc9c0 \uad00\ub9ac, \ubaa8\ub2c8\ud130\ub9c1 \ubc0f \ubcf4\ud638\ud560 \uc218 \uc788\ub294 \uc644\uc804 \uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\uc785\ub2c8\ub2e4. Amazon API Gateway\ub294 \ud2b8\ub798\ud53d \uad00\ub9ac, \uad8c\ud55c \ubd80\uc5ec \ubc0f \uc561\uc138\uc2a4 \uc81c\uc5b4, \ubaa8\ub2c8\ud130\ub9c1, API \ubc84\uc804 \uad00\ub9ac \ub4f1 \ucd5c\ub300 \uc218\uc2ed\ub9cc \uac1c\uc758 \ub3d9\uc2dc API \ud638\ucd9c\uc744 \uc218\ub77d\ud558\uace0 \ucc98\ub9ac\ud558\ub294 \ub370 \uad00\ub828\ub41c \ubaa8\ub4e0 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc774 \uc544\ud0a4\ud14d\ucc98\uc758 \uc8fc\uc694 \uad6c\uc131 \uc694\uc18c\uc785\ub2c8\ub2e4:<br \/>\n<a href=\"\/wp-content\/original-assets\/december-2016\/microservice-using-aws-api-gateway-aws-lambda-and-couchbase\/serverless-microservice-1024x193.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14518\" src=\"\/wp-content\/original-assets\/december-2016\/microservice-using-aws-api-gateway-aws-lambda-and-couchbase\/serverless-microservice-1024x193.png\" alt=\"serverless-microservice\" width=\"604\" height=\"114\" \/><\/a><\/p>\n<ul>\n<li>\ud074\ub77c\uc774\uc5b8\ud2b8\ub294 curl, AWS CLI, Postman \ud074\ub77c\uc774\uc5b8\ud2b8 \ub610\ub294 REST \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \uae30\ud0c0 \ub3c4\uad6c\/API\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>API \uac8c\uc774\ud2b8\uc6e8\uc774\ub294 API\ub97c \ud504\ub85c\ube44\uc800\ub2dd\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ucd5c\uc0c1\uc704 \ub9ac\uc18c\uc2a4\ub294 \uacbd\ub85c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\/\ucc45<\/code>. HTTP <code>GET<\/code> \uadf8\ub9ac\uace0 <code>POST<\/code> \uba54\uc18c\ub4dc\uac00 \ub9ac\uc18c\uc2a4\uc5d0 \ub300\ud574 \uac8c\uc2dc\ub429\ub2c8\ub2e4.<\/li>\n<li>\uac01 API\ub294 \ub78c\ub2e4 \ud568\uc218\ub97c \ud2b8\ub9ac\uac70\ud569\ub2c8\ub2e4. \ub450 \uac1c\uc758 \ub78c\ub2e4 \ud568\uc218\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4,\u00a0<code>\ub3c4\uc11c \ubaa9\ub85d<\/code>\u00a0\ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubaa8\ub4e0 \ucc45\uc744 \ub098\uc5f4\ud558\uace0 <code>\ucc45 \ub9cc\ub4e4\uae30<\/code>\u00a0\ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0c8 \ucc45\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>Couchbase\ub294 EC2\uc5d0\uc11c \uc9c0\uc18d\uc131 \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ubaa8\ub4e0 JSON \ubb38\uc11c\ub294 \uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc800\uc7a5 \ubc0f \uac80\uc0c9\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc2dc\uc791\ud574\ubcf4\uc790!<\/p>\n<h2>IAM \uc5ed\ud560 \ub9cc\ub4e4\uae30<\/h2>\n<p>IAM \uc5ed\ud560\uc5d0\ub294 API \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0\uc11c \uc774 \uc5ed\ud560\uc744 \uc0ac\uc6a9\ud558\uace0 Lambda \uae30\ub2a5\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \uc815\ucc45 \ubc0f \uc2e0\ub8b0 \uad00\uacc4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc0c8 IAM \uc5ed\ud560\uc744 \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">aws iam create-role \r\n--role-name microserviceRole \r\n--assume-role-policy-document file:\/\/.\/trust.json<\/pre>\n<p><code>--\uc5ed\ud560-\uc815\ucc45-\ubb38\uc11c \uac00\uc815\ud558\uae30<\/code> \uc5d4\ud2f0\ud2f0\uc5d0 \uc5ed\ud560\uc744 \ub9e1\uc744 \uc218 \uc788\ub294 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud558\ub294 \uc2e0\ub8b0 \uad00\uacc4 \uc815\ucc45 \ubb38\uc11c\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. <code>trust.json<\/code> \uc5d0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/trust.json\">github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/trust.json<\/a>\u00a0\ucc98\ub7fc \ubcf4\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"Version\": \"2012-10-17\",\r\n  \"Statement\": [\r\n    {\r\n      \"Sid\": \"\",\r\n      \"Effect\": \"Allow\",\r\n      \"Principal\": {\r\n        \"Service\": [\r\n          \"lambda.amazonaws.com\",\r\n          \"apigateway.amazonaws.com\"\r\n        ]\r\n      },\r\n      \"Action\": \"sts:AssumeRole\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p>\uc774 \uc2e0\ub8b0 \uad00\uacc4\ub97c \ud1b5\ud574 Lambda \ud568\uc218\uc640 API \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \uc2e4\ud589 \uc911\uc5d0 \uc774 \uc5ed\ud560\uc744 \ub9e1\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc815\ucc45\uc744 \uc774 \uc5ed\ud560\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc5f0\uacb0\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">aws iam put-role-policy \r\n--role-name microserviceRole \r\n--policy-name microPolicy \r\n--policy-document file:\/\/.\/policy.json<\/pre>\n<p><code>policy.json<\/code> \uc5d0 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/policy.json\">github.com\/arun-gupta\/serverless\/blob\/master\/aws\/microservice\/policy.json<\/a> \ucc98\ub7fc \ubcf4\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"Version\": \"2012-10-17\",\r\n  \"Statement\": [\r\n    {\r\n      \"Effect\": \"Allow\",\r\n      \"Action\": [\r\n        \"logs:*\"\r\n      ],\r\n      \"Resource\": \"arn:aws:logs:*:*:*\"\r\n    },\r\n    {\r\n      \"Effect\": \"Allow\",\r\n      \"Action\": [\r\n        \"apigateway:*\"\r\n      ],\r\n      \"Resource\": \"arn:aws:apigateway:*::\/*\"\r\n    },\r\n    {\r\n      \"Effect\": \"Allow\",\r\n      \"Action\": [\r\n        \"execute-api:Invoke\"\r\n      ],\r\n      \"Resource\": \"arn:aws:execute-api:*:*:*\"\r\n    },\r\n    {\r\n      \"Effect\": \"Allow\",\r\n      \"Action\": [\r\n          \"lambda:*\"\r\n      ],\r\n      \"Resource\": \"*\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p>\uc774 \uad00\ub300\ud55c \uc815\ucc45\uc740 \ubaa8\ub4e0 \ub9ac\uc18c\uc2a4\uc5d0 \ub300\ud574 CloudWatch\uc5d0\uc11c \uc0dd\uc131\ub41c \ub85c\uadf8\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \uad8c\ud55c\uc744 \ud5c8\uc6a9\ud569\ub2c8\ub2e4. \ub610\ud55c \ubaa8\ub4e0 \ub9ac\uc18c\uc2a4\uc5d0 \ub300\ud55c \ubaa8\ub4e0 Lambda \ubc0f API \uac8c\uc774\ud2b8\uc6e8\uc774 \uad8c\ud55c\uc744 \ud5c8\uc6a9\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ud2b9\uc815 \ub9ac\uc18c\uc2a4\uc5d0\ub294 \ud544\uc694\ud55c \uc815\ucc45\ub9cc \ubd80\uc5ec\ub429\ub2c8\ub2e4.<\/p>\n<h2>\ub78c\ub2e4 \ud568\uc218 \ub9cc\ub4e4\uae30<\/h2>\n<p>\ub78c\ub2e4 \ud568\uc218\ub97c \ub9cc\ub4dc\ub294 \uc790\uc138\ud55c \ub2e8\uacc4\ub294 \ub2e4\uc74c \ubb38\uc11c\uc5d0 \uc124\uba85\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/serverless-faas-aws-lambda-java\/\">AWS Lambda \ubc0f Java\ub97c \uc0ac\uc6a9\ud55c \uc11c\ubc84\ub9ac\uc2a4 FaaS<\/a>. \uc774 \uc0ac\ub840\uc5d0 \ud544\uc694\ud55c \ub450 \uac1c\uc758 \ub78c\ub2e4 \ud568\uc218\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">aws lambda create-function \r\n--function-name MicroserviceGetAll \r\n--role arn:aws:iam::598307997273:role\/microserviceRole \r\n--handler org.sample.serverless.aws.couchbase.BucketGetAll \r\n--zip-file fileb:\/\/\/Users\/arungupta\/workspaces\/serverless\/aws\/microservice\/microservice-http-endpoint\/target\/microservice-http-endpoint-1.0-SNAPSHOT.jar \r\n--description \"Microservice HTTP Endpoint - Get All\" \r\n--runtime java8 \r\n--region us-west-1 \r\n--timeout 30 \r\n--memory-size 1024 \r\n--environment Variables={COUCHBASE_HOST=ec2-52-53-193-176.us-west-1.compute.amazonaws.com} \r\n--publish<\/pre>\n<p>\uc774 \uae30\ub2a5\uc5d0\uc11c \uc8fc\ubaa9\ud574\uc57c \ud560 \uba87 \uac00\uc9c0 \uc8fc\uc694 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>IAM \uc5ed\ud560\u00a0<code>\ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4 \uc5ed\ud560<\/code> \uc774\uc804 \ub2e8\uacc4\uc5d0\uc11c \uc0dd\uc131\ub41c \uac83\uc774 \uc5ec\uae30\uc5d0 \uba85\uc2dc\uc801\uc73c\ub85c \uc9c0\uc815\ub429\ub2c8\ub2e4.<\/li>\n<li>\ud578\ub4e4\ub7ec\ub294\u00a0<code>org.sample.serverless.aws.couchbase.BucketGetAll<\/code> \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc815\uc758\ub41c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ucffc\ub9ac\ud569\ub2c8\ub2e4. <code>COUCHBASE_HOST<\/code> \ud658\uacbd \ubcc0\uc218\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\ub450 \ubc88\uc9f8 \ub78c\ub2e4 \ud568\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">aws lambda create-function \r\n--function-name MicroservicePost \r\n--role arn:aws:iam::598307997273:role\/microserviceRole \r\n--handler org.sample.serverless.aws.couchbase.BucketPost \r\n--zip-file fileb:\/\/\/Users\/arungupta\/workspaces\/serverless\/aws\/microservice\/microservice-http-endpoint\/target\/microservice-http-endpoint-1.0-SNAPSHOT.jar \r\n--description \"Microservice HTTP Endpoint - Post\" \r\n--runtime java8 \r\n--region us-west-1 \r\n--timeout 30 \r\n--memory-size 1024 \r\n--environment Variables={COUCHBASE_HOST=ec2-52-53-193-176.us-west-1.compute.amazonaws.com} \r\n--publish<\/pre>\n<p>\uc774 \ud568\uc218\uc758 \ud578\ub4e4\ub7ec\ub294 <code>org.sample.serverless.aws.couchbase.BucketPost<\/code> \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc2dd\ubcc4\ub418\ub294 Couchbase \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0c8 JSON \ubb38\uc11c\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. <code>COUCHBASE_HOST<\/code> \ud658\uacbd \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud074\ub798\uc2a4\uc758 \uc804\uccb4 \uc18c\uc2a4 \ucf54\ub4dc\ub294 \ub2e4\uc74c \ub9c1\ud06c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\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>.<\/p>\n<h2>API \uac8c\uc774\ud2b8\uc6e8\uc774 \ub9ac\uc18c\uc2a4<\/h2>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/with-on-demand-https-example-configure-event-source.html\">Amazon API \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec API \uc0dd\uc131 \ubc0f \ud14c\uc2a4\ud2b8\ud558\uae30<\/a> \uadf8\ub9ac\uace0\u00a0<a href=\"https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/getting-started.html\">\ub78c\ub2e4 \ud568\uc218\ub97c \ub178\ucd9c\ud558\ub294 API \ube4c\ub4dc\ud558\uae30<\/a>\u00a0\uc5d0\uc11c API \uac8c\uc774\ud2b8\uc6e8\uc774\uc640 \ub78c\ub2e4 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac15\ub825\ud55c \ubc31\uc5d4\ub4dc \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub2e8\uacc4\uc640 \uc124\uba85\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \ub2e8\uacc4\ub97c \uac04\ub7b5\ud558\uac8c \uc694\uc57d\ud558\uc5ec \uc124\uba85\ud569\ub2c8\ub2e4. API \uac8c\uc774\ud2b8\uc6e8\uc774 \ub9ac\uc18c\uc2a4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<ol>\n<li>\uccab \ubc88\uc9f8 \ub2e8\uacc4\ub294 API\ub97c \ub9cc\ub4dc\ub294 \uac83\uc785\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway \r\ncreate-rest-api \r\n--name Book<\/pre>\n<p>\ucd9c\ub825\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"name\": \"Book\", \r\n    \"id\": \"lb2qgujjif\", \r\n    \"createdDate\": 1482998945\r\n}<\/pre>\n<p>\uc758 \uac12\uc740 <code>id<\/code> \uc18d\uc131\uc740 API ID\uc785\ub2c8\ub2e4. \uc6b0\ub9ac\uc758 \uacbd\uc6b0, \uc774\uac83\uc740\u00a0<code>lb2qgujjif<\/code>.<\/li>\n<li>\ub2e4\uc74c AWS CLI \ud638\ucd9c\uc5d0 \ud544\uc694\ud558\ubbc0\ub85c \uc0dd\uc131\ub41c API\uc758 ROOT ID\ub97c \ucc3e\uc2b5\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway get-resources --rest-api-id lb2qgujjif<\/pre>\n<p>\ucd9c\ub825 \uacb0\uacfc\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"items\": [\r\n        {\r\n            \"path\": \"\/\", \r\n            \"id\": \"hgxogdkheg\"\r\n        }\r\n    ]\r\n}<\/pre>\n<p>\uac00\uce58 <code>id<\/code> \uc18d\uc131\uc740 ROOT ID\uc785\ub2c8\ub2e4. \uc774\ub294 \ucd5c\uc0c1\uc704 \ub9ac\uc18c\uc2a4\uc5d0 \ub300\ud55c PARENT ID\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/li>\n<li>\ub9ac\uc18c\uc2a4 \ub9cc\ub4e4\uae30\n<pre class=\"lang:default decode:true\">aws apigateway create-resource \r\n--rest-api-id lb2qgujjif \r\n--parent-id hgxogdkheg \r\n--path-part books<\/pre>\n<p>\ucd9c\ub825 \uacb0\uacfc\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"path\": \"\/books\", \r\n    \"pathPart\": \"books\", \r\n    \"id\": \"vrpkod\", \r\n    \"parentId\": \"hgxogdkheg\"\r\n}<\/pre>\n<p>\uac00\uce58 <code>id<\/code> \uc18d\uc131\uc740 \ub9ac\uc18c\uc2a4 ID\uc785\ub2c8\ub2e4.<\/li>\n<\/ol>\n<p>API ID\uc640 RESOURCE ID\ub294 \uc774\ud6c4 AWS CLI \ud638\ucd9c\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<h2>API \uac8c\uc774\ud2b8\uc6e8\uc774 POST \ubc29\ubc95<\/h2>\n<p>\uc774\uc81c \ub9ac\uc18c\uc2a4\uac00 \uc0dd\uc131\ub418\uc5c8\uc73c\ubbc0\ub85c HTTP\ub97c \uc0dd\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <code>POST<\/code> \uba54\uc11c\ub4dc\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<ol>\n<li>\ub9cc\ub4e4\uae30 <code>POST<\/code> \uba54\uc11c\ub4dc\n<pre class=\"lang:default decode:true\">aws apigateway put-method \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method POST \r\n--authorization-type NONE<\/pre>\n<p>\ub97c \ud074\ub9ad\ud574 \uc751\ub2f5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"apiKeyRequired\": false, \r\n    \"httpMethod\": \"POST\", \r\n    \"authorizationType\": \"NONE\"\r\n}<\/pre>\n<\/li>\n<li>\ub78c\ub2e4 \ud568\uc218\ub97c POST \uba54\uc11c\ub4dc\uc758 \ub300\uc0c1\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-integration \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method POST \r\n--type AWS \r\n--integration-http-method POST \r\n--uri arn:aws:apigateway:us-west-1:lambda:path\/2015-03-31\/functions\/arn:aws:lambda:us-west-1::function:MicroservicePost\/invocations<\/pre>\n<p>\ub2e4\uc74c\uc744 \uad50\uccb4\ud574\uc57c \ud569\ub2c8\ub2e4. <code><\/code> \uc5d0 AWS \uacc4\uc815 ID\ub97c \uc785\ub825\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c\ub3c4 \uc774\uc804 \uc139\uc158\uc758 API ID\uc640 \ub9ac\uc18c\uc2a4 ID\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. <code>--uri<\/code> \ub294 \ud1b5\ud569 \uc785\ub825\uc758 URI\ub97c \uc9c0\uc815\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. URI\uc758 \ud615\uc2dd\uc740 \uace0\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 CLI\ub294 \uacb0\uacfc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"httpMethod\": \"POST\", \r\n    \"passthroughBehavior\": \"WHEN_NO_MATCH\", \r\n    \"cacheKeyParameters\": [], \r\n    \"type\": \"AWS\", \r\n    \"uri\": \"arn:aws:apigateway:us-west-1:lambda:path\/2015-03-31\/functions\/arn:aws:lambda:us-west-1::function:MicroservicePost\/invocations\", \r\n    \"cacheNamespace\": \"vrpkod\"\r\n}<\/pre>\n<\/li>\n<li>\uc124\uc815 <code>\ucf58\ud150\uce20 \uc720\ud615<\/code> POST \uba54\uc18c\ub4dc \uc751\ub2f5\uc758 \ube44\uc728\uc785\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-method-response \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method POST \r\n--status-code 200 \r\n--response-models \"{\"application\/json\": \"Empty\"}\"<\/pre>\n<p>\ub97c \ud074\ub9ad\ud574 \uc751\ub2f5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"responseModels\": {\r\n        \"application\/json\": \"Empty\"\r\n    }, \r\n    \"statusCode\": \"200\"\r\n}<\/pre>\n<\/li>\n<li>\uc124\uc815 <code>\ucf58\ud150\uce20 \uc720\ud615<\/code> POST \ubc29\uc2dd \ud1b5\ud569 \uc751\ub2f5\uc758 \ube44\uc728\uc785\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-integration-response \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method POST \r\n--status-code 200 \r\n--response-templates \"{\"application\/json\": \"Empty\"}\"<\/pre>\n<p>\ub97c \ud074\ub9ad\ud574 \uc751\ub2f5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"statusCode\": \"200\", \r\n    \"responseTemplates\": {\r\n        \"application\/json\": \"Empty\"\r\n    }\r\n}<\/pre>\n<\/li>\n<li>API \ubc30\ud3ec\n<pre class=\"lang:default decode:true\">aws apigateway create-deployment \r\n--rest-api-id lb2qgujjif \r\n--stage-name test<\/pre>\n<p>\ub97c \ud074\ub9ad\ud558\uc5ec \uc751\ub2f5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"id\": \"9wi991\", \r\n    \"createdDate\": 1482999187\r\n}<\/pre>\n<\/li>\n<li>API \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ub78c\ub2e4 \ud568\uc218\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws lambda add-permission \r\n--function-name MicroservicePost \r\n--statement-id apigateway-test-post-1 \r\n--action lambda:InvokeFunction \r\n--principal apigateway.amazonaws.com \r\n--source-arn \"arn:aws:execute-api:us-west-1::lb2qgujjif\/*\/POST\/books\"<\/pre>\n<p>\ub610\ud55c \ubc30\ud3ec\ub41c API\uc5d0 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">aws lambda add-permission \r\n--function-name MicroservicePost \r\n--statement-id apigateway-test-post-2 \r\n--action lambda:InvokeFunction \r\n--principal apigateway.amazonaws.com \r\n--source-arn \"arn:aws:execute-api:us-west-1::lb2qgujjif\/test\/GET\/books\"<\/pre>\n<\/li>\n<li>API \uba54\uc18c\ub4dc\ub97c \ud14c\uc2a4\ud2b8\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway test-invoke-method \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method POST \r\n--path-with-query-string \"\" \r\n--body \"{\"id\": \"1\", \"bookname\": \"test book\", \"isbn\": \"123\", \"cost\": \"1.23\"}\"<\/pre>\n<p>\ub97c \ud074\ub9ad\ud574 \uc751\ub2f5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"status\": 200, \r\n    \"body\": \"Empty\", \r\n    \"log\": \"Execution log for request test-requestnThu Dec 29 08:16:05 UTC 2016 : Starting execution for request: test-invoke-requestnThu Dec 29 08:16:05 UTC 2016 : HTTP Method: POST, Resource Path: \/booksnThu Dec 29 08:16:05 UTC 2016 : Method request path: {}nThu Dec 29 08:16:05 UTC 2016 : Method request query string: {}nThu Dec 29 08:16:05 UTC 2016 : Method request headers: {}nThu Dec 29 08:16:05 UTC 2016 : Method request body before transformations: {\"id\": \"1\", \"bookname\": \"test book\", \"isbn\": \"123\", \"cost\": \"1.23\"}nThu Dec 29 08:16:05 UTC 2016 : Endpoint request URI: https:\/\/lambda.us-west-1.amazonaws.com\/2015-03-31\/functions\/arn:aws:lambda:us-west-1:598307997273:function:MicroservicePost\/invocationsnThu Dec 29 08:16:05 UTC 2016 : Endpoint request headers: {x-amzn-lambda-integration-tag=test-request, Authorization=****************************************************************************************************************************************************************************************************************************************************************************************************************************************c8bb85, X-Amz-Date=20161229T081605Z, x-amzn-apigateway-api-id=lb2qgujjif, X-Amz-Source-Arn=arn:aws:execute-api:us-west-1:598307997273:lb2qgujjif\/null\/POST\/books, Accept=application\/json, User-Agent=AmazonAPIGateway_lb2qgujjif, Host=lambda.us-west-1.amazonaws.com, X-Amz-Content-Sha256=559d0296d96ec5647eef6381602fe5e7f55dd17065864fafb4f581d106aa92f4, X-Amzn-Trace-Id=Root=1-5864c645-8494974a41a3a16c8d2f9929, Content-Type=application\/json}nThu Dec 29 08:16:05 UTC 2016 : Endpoint request body after transformations: {\"id\": \"1\", \"bookname\": \"test book\", \"isbn\": \"123\", \"cost\": \"1.23\"}nThu Dec 29 08:16:10 UTC 2016 : Endpoint response body before transformations: \"{\\\"cost\\\":\\\"1.23\\\",\\\"id\\\":\\\"1\\\",\\\"bookname\\\":\\\"test book\\\",\\\"isbn\\\":\\\"123\\\"}\"nThu Dec 29 08:16:10 UTC 2016 : Endpoint response headers: {x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=0b25323b-cd9f-11e6-8bd4-292925ba63a9, Connection=keep-alive, Content-Length=78, Date=Thu, 29 Dec 2016 08:16:10 GMT, Content-Type=application\/json}nThu Dec 29 08:16:10 UTC 2016 : Method response body after transformations: EmptynThu Dec 29 08:16:10 UTC 2016 : Method response headers: {X-Amzn-Trace-Id=Root=1-5864c645-8494974a41a3a16c8d2f9929, Content-Type=application\/json}nThu Dec 29 08:16:10 UTC 2016 : Successfully completed executionnThu Dec 29 08:16:10 UTC 2016 : Method completed with status: 200n\", \r\n    \"latency\": 5091, \r\n    \"headers\": {\r\n        \"X-Amzn-Trace-Id\": \"Root=1-5864c645-8494974a41a3a16c8d2f9929\", \r\n        \"Content-Type\": \"application\/json\"\r\n    }\r\n}<\/pre>\n<p>\uac00\uce58 <code>\uc0c1\ud0dc<\/code> \uc18d\uc131\uc774 200\uc774\uba74 \ud638\ucd9c\uc774 \uc131\uacf5\ud588\uc74c\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \uc758 \uac12 <code>\ub85c\uadf8<\/code> \uc18d\uc131\uc740 CloudWatch \ub85c\uadf8\uc758 \ub85c\uadf8 \ubb38\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \uc790\uc138\ud55c \ub85c\uadf8\ub294 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5bb\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <code>aws logs filter-log-events --log-group \/aws\/lambda\/MicroservicePost<\/code>.<\/li>\n<li>\uc774 \uba85\ub839\uc740 Couchbase\uc5d0 \ub2e8\uc77c JSON \ubb38\uc11c\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc774\uac83\uc740 \uc27d\uac8c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/tools\/cbq-shell.html\">Couchbase CLI \ub3c4\uad6c cbq<\/a>\ub85c Couchbase \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">cbq -u Administrator -p password -e=\"https:\/\/:8091\"<\/pre>\n<p>\ub2e4\uc74c\uc5d0 \uae30\ubcf8 \uc778\ub371\uc2a4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. <code>\uae30\ubcf8\uac12<\/code> \ubc84\ud0b7\uc744 \ucffc\ub9ac\ud558\ub294 \ub370 \ud544\uc694\ud558\ubbc0\ub85c \uc808 \uc5c6\uc774 \ubc84\ud0b7\uc744 \ucffc\ub9ac\ud574\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">cbq&gt; create primary index default_index on default;\r\n{\r\n    \"requestID\": \"13b539f9-7fff-4386-92f4-cea161a7aa08\",\r\n    \"signature\": null,\r\n    \"results\": [\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"1.917009047s\",\r\n        \"executionTime\": \"1.916970061s\",\r\n        \"resultCount\": 0,\r\n        \"resultSize\": 0\r\n    }\r\n}<\/pre>\n<\/li>\n<li>\uc4f0\uae30 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/n1ql\/\">N1QL<\/a> \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\uc5d0 \uc561\uc138\uc2a4\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">cbq&gt; select * from default limit 10;\r\n{\r\n    \"requestID\": \"d7b1c3f9-6b4e-4952-9a1e-9faf5169926e\",\r\n    \"signature\": {\r\n        \"*\": \"*\"\r\n    },\r\n    \"results\": [\r\n        {\r\n            \"default\": {\r\n                \"bookname\": \"test\",\r\n                \"cost\": \"1.23\",\r\n                \"id\": \"1\",\r\n                \"isbn\": \"123\"\r\n            }\r\n        }\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"24.337755ms\",\r\n        \"executionTime\": \"24.289796ms\",\r\n        \"resultCount\": 1,\r\n        \"resultSize\": 175\r\n    }\r\n}<\/pre>\n<p>\uacb0\uacfc\uc5d0\ub294 \ub78c\ub2e4 \ud568\uc218\uc5d0 \uc758\ud574 \uc800\uc7a5\ub41c JSON \ubb38\uc11c\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h2>API \uac8c\uc774\ud2b8\uc6e8\uc774 GET \uba54\uc11c\ub4dc<\/h2>\n<p>HTTP\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <code>GET<\/code> \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4:<\/p>\n<ol>\n<li>\ub9cc\ub4e4\uae30 <code>GET<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-method \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method GET \r\n--authorization-type NONE<\/pre>\n<\/li>\n<li>\uc62c\ubc14\ub978 \ub78c\ub2e4 \ud568\uc218\ub97c GET\uc758 \ub300\uc0c1\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-integration \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method GET \r\n--type AWS \r\n--integration-http-method POST \r\n--uri arn:aws:apigateway:us-west-1:lambda:path\/2015-03-31\/functions\/arn:aws:lambda:us-west-1:598307997273:function:MicroserviceGetAll\/invocations<\/pre>\n<\/li>\n<li>\uc124\uc815 <code>\ucf58\ud150\uce20 \uc720\ud615<\/code> GET \uba54\uc11c\ub4dc \uc751\ub2f5\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-method-response \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method GET \r\n--status-code 200 \r\n--response-models \"{\"application\/json\": \"Empty\"}\"<\/pre>\n<\/li>\n<li>\uc124\uc815 <code>\ucf58\ud150\uce20 \uc720\ud615<\/code> GET \uba54\uc11c\ub4dc \ud1b5\ud569 \uc751\ub2f5\uc758 \ube44\uc728\uc785\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway put-integration-response \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method GET \r\n--status-code 200 \r\n--response-templates \"{\"application\/json\": \"Empty\"}\"<\/pre>\n<\/li>\n<li>API \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ub78c\ub2e4 \ud568\uc218\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4.\n<pre class=\"lang:default decode:true\">aws lambda add-permission \r\n--function-name MicroserviceGetAll \r\n--statement-id apigateway-test-getall-1 \r\n--action lambda:InvokeFunction \r\n--principal apigateway.amazonaws.com \r\n--source-arn \"arn:aws:execute-api:us-west-1:598307997273:lb2qgujjif\/*\/GET\/books\"<\/pre>\n<\/li>\n<li>\ubc30\ud3ec\ub41c API\uc5d0 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws lambda add-permission \r\n--function-name MicroserviceGetAll \r\n--statement-id apigateway-test-getall-2 \r\n--action lambda:InvokeFunction \r\n--principal apigateway.amazonaws.com \r\n--source-arn \"arn:aws:execute-api:us-west-1:598307997273:lb2qgujjif\/test\/GET\/books\"<\/pre>\n<\/li>\n<li>\ubc29\ubc95\uc744 \ud14c\uc2a4\ud2b8\ud569\ub2c8\ub2e4:\n<pre class=\"lang:default decode:true\">aws apigateway test-invoke-method \r\n--rest-api-id lb2qgujjif \r\n--resource-id vrpkod \r\n--http-method GET<\/pre>\n<p>\ub97c \ud074\ub9ad\ud558\uc5ec \ucd9c\ub825\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n    \"status\": 200, \r\n    \"body\": \"Empty\", \r\n    \"log\": \"Execution log for request test-requestnSat Dec 31 09:07:48 UTC 2016 : Starting execution for request: test-invoke-requestnSat Dec 31 09:07:48 UTC 2016 : HTTP Method: GET, Resource Path: \/booksnSat Dec 31 09:07:48 UTC 2016 : Method request path: {}nSat Dec 31 09:07:48 UTC 2016 : Method request query string: {}nSat Dec 31 09:07:48 UTC 2016 : Method request headers: {}nSat Dec 31 09:07:48 UTC 2016 : Method request body before transformations: nSat Dec 31 09:07:48 UTC 2016 : Endpoint request URI: https:\/\/lambda.us-west-1.amazonaws.com\/2015-03-31\/functions\/arn:aws:lambda:us-west-1:598307997273:function:MicroserviceGetAll\/invocationsnSat Dec 31 09:07:48 UTC 2016 : Endpoint request headers: {x-amzn-lambda-integration-tag=test-request, Authorization=******************************************************************************************************************************************************************************************************************************************************************************************************6de147, X-Amz-Date=20161231T090748Z, x-amzn-apigateway-api-id=lb2qgujjif, X-Amz-Source-Arn=arn:aws:execute-api:us-west-1:598307997273:lb2qgujjif\/null\/GET\/books, Accept=application\/json, User-Agent=AmazonAPIGateway_lb2qgujjif, X-Amz-Security-Token=FQoDYXdzEHEaDEILpsKTo45Ys1LrFCK3A+KOe5HXOSP3GfVAaRYHe1pDUJGHL9MtkFiPjORLFT+UCKjRqE7UFaGscTVG6PZXTuSyQev4XTyROfPylCrtDomGsoZF\/iwy4rlJQIJ7elBceyeKu1OVdaT1A99PVeliaCAiDL6Veo1viWOnP+7c72nAaJ5jnyF\/nHl\/OLhFdFv4t\/hnx3JePMk5YM89\/6ofxUEVDNfzXxbZHRpTrG\/4TPHwjPdoR5i9dEzWMU6Eo5xD4ldQ\/m5B3RmrwpaPOuEq39LhJ8k\/Vzo+pAfgJTq5ssbNwYOgh0RPSGVNMcoTkCwk0EMMT5vDbmQqZ2dW1a1tmQg9N2xR+QQy+RKMFgO5YY8fMxHnRSdMuuipxl79G1pktc [TRUNCATED]nSat Dec 31 09:07:48 UTC 2016 : Endpoint request body after transformations: nSat Dec 31 09:07:53 UTC 2016 : Endpoint response body before transformations: \"[{\\\"default\\\":{\\\"cost\\\":\\\"1.23\\\",\\\"id\\\":\\\"1\\\",\\\"bookname\\\":\\\"test book\\\",\\\"isbn\\\":\\\"123\\\"}}]\"nSat Dec 31 09:07:53 UTC 2016 : Endpoint response headers: {x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=99ab09b2-cf38-11e6-996f-f5f07af431af, Connection=keep-alive, Content-Length=94, Date=Sat, 31 Dec 2016 09:07:52 GMT, Content-Type=application\/json}nSat Dec 31 09:07:53 UTC 2016 : Method response body after transformations: EmptynSat Dec 31 09:07:53 UTC 2016 : Method response headers: {X-Amzn-Trace-Id=Root=1-58677564-66f1e96642b16d2db703126e, Content-Type=application\/json}nSat Dec 31 09:07:53 UTC 2016 : Successfully completed executionnSat Dec 31 09:07:53 UTC 2016 : Method completed with status: 200n\", \r\n    \"latency\": 4744, \r\n    \"headers\": {\r\n        \"X-Amzn-Trace-Id\": \"Root=1-58677564-66f1e96642b16d2db703126e\", \r\n        \"Content-Type\": \"application\/json\"\r\n    }\r\n}<\/pre>\n<p>\ub2e4\uc2dc \ud55c \ubc88 200 \uc0c1\ud0dc \ucf54\ub4dc\ub294 \ud638\ucd9c\uc774 \uc131\uacf5\ud588\uc74c\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub85c\uadf8\ub294 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code>aws logs filter-log-events --log-group \/aws\/lambda\/MicroservicePost<\/code>.<\/li>\n<\/ol>\n<p>\uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \uac04\ub2e8\ud55c POST\uc640 GET \uba54\uc11c\ub4dc \ud558\ub098\ub9cc \uc124\uba85\ud569\ub2c8\ub2e4. \ub2e4\ub978 HTTP \uba54\uc11c\ub4dc\ub3c4 \uc774 \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4\uc5d0 \ub9e4\uc6b0 \uc27d\uac8c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>API \uac8c\uc774\ud2b8\uc6e8\uc774 \ubc0f \ub78c\ub2e4 \ucc38\uc870<\/h2>\n<ul>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/serverless.html\">\uc11c\ubc84\ub9ac\uc2a4 \uc544\ud0a4\ud14d\ucc98<\/a><\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/api-gateway\/\">AWS API \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/with-on-demand-https-example-configure-event-source_1.html\">Lambda\uc640 API \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac04\ub2e8\ud55c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4 \ub9cc\ub4e4\uae30<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/server\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \ubb38\uc11c<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud3ec\ub7fc<\/a><\/li>\n<li>\ud314\ub85c\uc6b0\ud558\uc138\uc694 <a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>This blog has\u00a0explained the following concepts\u00a0for serverless applications so far: Serverless FaaS with AWS Lambda and Java AWS IoT Button, Lambda and Couchbase The third blog in serverless series will explain\u00a0how to create a simple microservice using Amazon API Gateway, [&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-2468","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 v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Microservice using AWS API Gateway, AWS Lambda and Couchbase - The Couchbase Blog<\/title>\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\/ko\/microservice-aws-api-gateway-lambda-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microservice using AWS API Gateway, AWS Lambda and Couchbase\" \/>\n<meta property=\"og:description\" content=\"This blog has\u00a0explained the following concepts\u00a0for serverless applications so far: Serverless FaaS with AWS Lambda and Java AWS IoT Button, Lambda and Couchbase The third blog in serverless series will explain\u00a0how to create a simple microservice using Amazon API Gateway, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/microservice-aws-api-gateway-lambda-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-18T23:08:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T12:51:56+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=\"9\ubd84\" \/>\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-api-gateway-lambda-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Microservice using AWS API Gateway, AWS Lambda and Couchbase\",\"datePublished\":\"2017-01-18T23:08:03+00:00\",\"dateModified\":\"2023-06-21T12:51:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/\"},\"wordCount\":968,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/\",\"name\":\"Microservice using AWS API Gateway, AWS Lambda and Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-18T23:08:03+00:00\",\"dateModified\":\"2023-06-21T12:51:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-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-api-gateway-lambda-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microservice using AWS API Gateway, AWS Lambda 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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\":\"ko-KR\",\"@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\/ko\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Microservice using AWS API Gateway, AWS Lambda and Couchbase - The Couchbase Blog","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\/ko\/microservice-aws-api-gateway-lambda-couchbase\/","og_locale":"ko_KR","og_type":"article","og_title":"Microservice using AWS API Gateway, AWS Lambda and Couchbase","og_description":"This blog has\u00a0explained the following concepts\u00a0for serverless applications so far: Serverless FaaS with AWS Lambda and Java AWS IoT Button, Lambda and Couchbase The third blog in serverless series will explain\u00a0how to create a simple microservice using Amazon API Gateway, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/microservice-aws-api-gateway-lambda-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-18T23:08:03+00:00","article_modified_time":"2023-06-21T12:51:56+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":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Microservice using AWS API Gateway, AWS Lambda and Couchbase","datePublished":"2017-01-18T23:08:03+00:00","dateModified":"2023-06-21T12:51:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/"},"wordCount":968,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/","name":"Microservice using AWS API Gateway, AWS Lambda and Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-18T23:08:03+00:00","dateModified":"2023-06-21T12:51:56+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/microservice-aws-api-gateway-lambda-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-api-gateway-lambda-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Microservice using AWS API Gateway, AWS Lambda and Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@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, \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ubd80\ubb38 \ubd80\uc0ac\uc7a5, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@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\/ko\/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":"\uc544\ub8ec \uad7d\ud0c0\ub294 Couchbase\uc758 \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ub2f4\ub2f9 \ubd80\uc0ac\uc7a5\uc785\ub2c8\ub2e4. \uadf8\ub294 Sun, Oracle, Red Hat\uc5d0\uc11c 10\ub144 \uc774\uc0c1 \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0\ub97c \uad6c\ucd95\ud558\uace0 \uc774\ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \ucf58\ud150\uce20, \ub9c8\ucf00\ud305 \ucea0\ud398\uc778 \ubc0f \ud504\ub85c\uadf8\ub7a8\uc758 \uc804\ub7b5, \uacc4\ud68d \ubc0f \uc2e4\ud589\uc744 \uac1c\ubc1c \ubc0f \uc2e4\ud589\ud558\ub294 \uad50\ucc28 \uae30\ub2a5 \ud300\uc744 \uc774\ub044\ub294 \ub370 \uc788\uc5b4 \uae4a\uc740 \uc804\ubb38\uc131\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Sun\uc5d0\uc11c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \ud300\uc744 \uc774\ub04c\uc5c8\uc73c\uba70 Java EE \ud300\uc758 \ucc3d\ub9bd \uba64\ubc84\uc785\ub2c8\ub2e4.\r\n\r\nGupta\ub294 \uae30\uc220\uc5d0 \uad00\ud55c \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc744 2,000\uac1c \uc774\uc0c1 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. 40\uc5ec \uac1c\uad6d\uc5d0\uc11c \uc218\ub9ce\uc740 \uc8fc\uc81c\uc5d0 \ub300\ud574 \uad11\ubc94\uc704\ud55c \uac15\uc5f0 \uacbd\ud5d8\uc744 \uac00\uc9c0\uace0 \uc788\uc73c\uba70, 3\ub144 \uc5f0\uc18d JavaOne Rock Star\ub85c \uc120\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ubbf8\uad6d\uc5d0\uc11c Devoxx4Kids \uc9c0\ubd80\ub97c \uc124\ub9bd\ud558\uc5ec \uc5b4\ub9b0\uc774\ub97c \ub300\uc0c1\uc73c\ub85c \ud55c \uae30\uc220 \uad50\uc721\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \uc7a5\ub824\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uae30\uc220\uc5d0 \uad00\ud55c \uc5ec\ub7ec \uad8c\uc758 \ucc45\uc744 \uc800\uc220\ud588\uc73c\uba70, \uc5f4\ub82c\ud55c \ub9c8\ub77c\ud1a0\ub108\uc774\uc790 \uc9c0\uad6c\ub97c \ud6a1\ub2e8\ud558\ub294 \uc0ac\ub78c, Java \ucc54\ud53c\uc5b8, JUG \ub9ac\ub354, NetBeans \ub4dc\ub9bc\ud300 \uba64\ubc84, Docker \ucea1\ud2f4\uc774\uae30\ub3c4 \ud55c \uadf8\ub294 @arungupta\uc5d0\uc11c \uc27d\uac8c \ub9cc\ub098\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2468"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2468"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}