{"id":6329,"date":"2019-01-29T08:29:06","date_gmt":"2019-01-29T16:29:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6329"},"modified":"2025-06-13T21:09:39","modified_gmt":"2025-06-14T04:09:39","slug":"developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/","title":{"rendered":"Golang, AWS Lambda \ubc0f Couchbase NoSQL\ub85c Alexa \uc2a4\ud0ac \uac1c\ubc1c\ud558\uae30"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6316\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/01\/nraboy-here-300x300.jpg\" alt=\"Nic Raboy\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-300x300.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here.jpg 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-150x150.jpg 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-768x768.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-65x65.jpg 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-50x50.jpg 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here-20x20.jpg 20w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><em><a href=\"https:\/\/www.thepolyglotdeveloper.com\/\">\ub2c9 \ub77c\ubcf4\uc774<\/a>\u00a0\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uc790\ubc14, \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8, \uace8\ub791, \uc575\uade4\ub7ec, \ub124\uc774\ud2f0\ube0c\uc2a4\ud06c\ub9bd\ud2b8, \uc544\ud30c\uce58 \ucf54\ub974\ub3c4\ubc14 \ub4f1 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/twitter.com\/nraboy\">Nic<\/a>\u00a0\uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uacfc \uad00\ub828\ub41c \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc744 \uc54c\uae30 \uc27d\uac8c \ud480\uc5b4\uc4f4 \uae00\uc785\ub2c8\ub2e4.<\/em><\/p>\n<p><span style=\"font-weight: 400;\">\ucd5c\uadfc\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developing-aws-lambda-functions-with-golang-and-couchbase-nosql\/\"><span style=\"font-weight: 400;\">AWS \ub78c\ub2e4 \uc0dd\uc131<\/span><\/a><span style=\"font-weight: 400;\"> \ud568\uc218\uc640 \ud1b5\uc2e0\ud558\ub294 <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\"><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/span><\/a><span style=\"font-weight: 400;\"> Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub97c \uc0ac\uc6a9\ud55c NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4. \uc774\uc804 \ud29c\ud1a0\ub9ac\uc5bc\uc740 \ud45c\uc900 \uc11c\ubc84\ub9ac\uc2a4 \uac1c\ubc1c\uc744 \uae30\ubc18\uc73c\ub85c \ud588\uc9c0\ub9cc, \ud55c \ub2e8\uacc4 \ub354 \ubc1c\uc804\uc2dc\ud0a4\uace0 \uc2f6\ub2e4\uba74 \uc5b4\ub5bb\uac8c \ud574\uc57c \ud560\uae4c\uc694? \uc608\ub97c \ub4e4\uc5b4, \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 Amazon Alexa \uae30\ubc18 \uc7a5\uce58\ub294 AWS Lambda\ub97c \ud65c\uc6a9\ud558\uc5ec \uc791\ub3d9\ud569\ub2c8\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc6b0\ub9ac \ud568\uc218\ub97c Alexa\uc640 \ud638\ud658\ub418\uac8c \ub9cc\ub4e4\ub824\uba74 \ubb34\uc5c7\uc774 \ud544\uc694\ud560\uae4c\uc694?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc5d0\uc11c\ub294 \uc544\ub9c8\uc874 \uc54c\ub809\uc0ac \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uace0 \uc54c\ub809\uc0ac\uac00 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc624\ub514\uc624 \uba54\uc2dc\uc9c0\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\ub3c4\ub85d \uc801\uc808\ud558\uac8c \uc751\ub2f5\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. \uc751\ub2f5\ud558\ub294 \ub370\uc774\ud130\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uac00\uc838\uc624\uba70 Go \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub85c \uad00\ub9ac\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">\uc544\ub9c8\uc874 \uc54c\ub809\uc0ac \uc9c0\uc6d0\uc73c\ub85c \ub78c\ub2e4 \ud568\uc218 \ub9cc\ub4e4\uae30<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\uc544\uc9c1 \uc81c <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developing-aws-lambda-functions-with-golang-and-couchbase-nosql\/\">\uc774\uc804 \ud29c\ud1a0\ub9ac\uc5bc<\/a>\ub97c \uba3c\uc800 \uc0b4\ud3b4\ubcf8 \ud6c4 \uacc4\uc18d \uc77d\uc5b4\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.  \uc774\uc804 \ud29c\ud1a0\ub9ac\uc5bc\uc740 \uc9e7\uc9c0\ub9cc Go\uc640 Couchbase\ub85c Lambda \ud568\uc218\ub97c \uac1c\ubc1c\ud558\ub294 \ub370 \ud544\uc694\ud55c \uba87 \uac00\uc9c0 \uad00\uc810\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774\uc81c **$GOPATH** \ub0b4\uc5d0 **main.go** \ud30c\uc77c\uc774 \ud3ec\ud568\ub41c \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uba85\ub839\uc904\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc2e4\ud589\ud558\uc5ec \uc885\uc18d \uc694\uc18c\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"lang:default decode:true\">go get github.com\/arienmalec\/alexa-go\r\n\r\ngo get github.com\/aws\/aws-lambda-go\/lambda\r\n\r\ngo get github.com\/satori\/go.uuid\r\n\r\ngo get gopkg.in\/couchbase\/gocb.v1<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\uc885\uc18d\uc131 \uc911 Go\uc6a9 AWS Lambda SDK\uc640 Go\uc6a9 Couchbase SDK\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ubb38\uc11c \ud0a4\ub97c \ub098\ud0c0\ub0b4\ub294 \uace0\uc720 \uac12\uc744 \uc0dd\uc131\ud558\uae30 \uc704\ud574 \uc774\uc804 \ud29c\ud1a0\ub9ac\uc5bc\uc5d0\uc11c \uc0ac\uc6a9\ud588\ub358 UUID \ud328\ud0a4\uc9c0\ub3c4 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\ubc88\uc5d0\ub294 \uac01 \uc694\uccad\uacfc \uc751\ub2f5\uc5d0 \ub300\ud55c \ubaa8\ub378\uc774 \ud3ec\ud568\ub41c \ub2e4\ub978 \ud328\ud0a4\uc9c0\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Alexa\ub294 \uc694\uccad\uacfc \uc751\ub2f5\uc774 \ubaa8\ub450 \ud2b9\uc815 JSON \ud615\uc2dd\uc77c \uac83\uc73c\ub85c \uc608\uc0c1\ud558\uba70, \uc774\ub294 Alexa \ud328\ud0a4\uc9c0\uc758 \uac70\uc758 \uc720\uc77c\ud55c \ubaa9\uc801\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">main.go** \ud30c\uc77c\uc5d0 \ub2e4\uc74c \uc0c1\uc6a9\uad6c \ucf54\ub4dc\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"lang:default decode:true\">package main\r\n\r\n\r\n\r\nimport (\r\n\r\n\u00a0\u00a0\u00a0 \"github.com\/arienmalec\/alexa-go\"\r\n\r\n\u00a0\u00a0\u00a0 \"github.com\/aws\/aws-lambda-go\/lambda\"\r\n\r\n\u00a0\u00a0\u00a0 uuid \"github.com\/satori\/go.uuid\"\r\n\r\n\u00a0\u00a0\u00a0 gocb \"gopkg.in\/couchbase\/gocb.v1\"\r\n\r\n)\r\n\r\n\r\n\r\nvar bucket *gocb.Bucket\r\n\r\n\r\n\r\ntype Todo struct {\r\n\r\n\u00a0\u00a0\u00a0 ID \u00a0\u00a0string `json:\"id,omitempty\"`\r\n\r\n\u00a0\u00a0\u00a0 Text string `json:\"text,omitempty\"`\r\n\r\n\u00a0\u00a0\u00a0 Type string `json:\"type,omitempty\"`\r\n\r\n}\r\n\r\n\r\n\r\nfunc IntentDispatcher(request alexa.Request) (alexa.Response, error) {\r\n\r\n\u00a0\u00a0\u00a0 var response alexa.Response\r\n\r\n\u00a0\u00a0\u00a0 switch request.Body.Intent.Name {\r\n\r\n\u00a0\u00a0\u00a0 case \"GetTodosIntent\":\r\n\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 response = HandleGetTodosIntent(request)\r\n\r\n\u00a0\u00a0\u00a0 case \"CreateTodoIntent\":\r\n\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 response = HandleCreateTodoIntent(request)\r\n\r\n\u00a0\u00a0\u00a0 case \"AboutIntent\":\r\n\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 response = HandleAboutIntent(request)\r\n\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 return response, nil\r\n\r\n}\r\n\r\n\r\n\r\nfunc HandleAboutIntent(request alexa.Request) alexa.Response { }\r\n\r\nfunc HandleCreateTodoIntent(request alexa.Request) alexa.Response { }\r\n\r\nfunc HandleGetTodosIntent(request alexa.Request) alexa.Response { }\r\n\r\n\r\n\r\nfunc main() {\r\n\r\n\u00a0\u00a0\u00a0 cluster, _ := gocb.Connect(\"couchbase:\/\/HOST_HERE\")\r\n\r\n\u00a0\u00a0\u00a0 cluster.Authenticate(gocb.PasswordAuthenticator{Username: \"todos\", Password: \"123456\"})\r\n\r\n\u00a0\u00a0\u00a0 bucket, _ = cluster.OpenBucket(\"todos\", \"\")\r\n\r\n\u00a0\u00a0\u00a0 lambda.Start(IntentDispatcher)\r\n\r\n}\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">\uadf8\ub807\ub2e4\uba74 \uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c \ubb34\uc2a8 \uc77c\uc774 \uc77c\uc5b4\ub098\uace0 \uc788\uc744\uae4c\uc694?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After importing the downloaded dependencies, we can create a `Todo` data structure which will hold our data. Similar to the previous example, we are going to be storing todo list information and querying that information.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the `main` function we are establishing a connection to our Couchbase instance and opening our bucket. It is important that our Couchbase instance be hosted somewhere because Lambda needs to be able to interact with it. This means you probably can&#8217;t test with Couchbase running on your local host.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When it comes to Alexa, things happen based on actions known as intents. These actions are typically a request to Alexa. For any given Skill you can typically interact with Alexa in numerous ways, hence numerous intents. Our Skill will have an `AboutIntent` for information, a `CreateTodoIntent` for saving data, and a `GetTodosIntent` for querying our data and returning it to the user. These intents will be controlled by our `IntentDispatcher` function.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The idea behind our `IntentDispatcher` is a request will come in from Alexa. Within the request, Amazon will figure out the correct intent and we can use that information. This intent information will be defined later on. Using the intent information we can call the correct function.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So let&#8217;s look at the `AboutIntent` function:<\/span><\/p>\n<pre class=\"lang:default decode:true\">func HandleAboutIntent(request alexa.Request) alexa.Response {\r\n\r\n\u00a0\u00a0\u00a0 return alexa.NewSimpleResponse(\"About\", \"Created by Nic Raboy of The Polyglot Developer.\")\r\n\r\n}\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">\ud568\uc218\uac00 \ud638\ucd9c\ub418\uba74 Alexa \ud328\ud0a4\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc751\ub2f5 \ud615\uc2dd\uc744 \uc62c\ubc14\ub978 JSON\uc73c\ub85c \uc9c0\uc815\ud558\uace0 \ubc18\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc751\ub2f5\uc5d0\ub294 \uc81c\ubaa9\uacfc \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc74c\uc131\uc73c\ub85c \uc751\ub2f5\ud560 \ud14d\uc2a4\ud2b8\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now let&#8217;s look at the `CreateTodoIntent` function:<\/span><\/p>\n<pre class=\"lang:default decode:true\">func HandleCreateTodoIntent(request alexa.Request) alexa.Response {\r\n\r\n\u00a0\u00a0\u00a0 todo := Todo{Text: request.Body.Intent.Slots[\"todo\"].Value}\r\n\r\n\u00a0\u00a0\u00a0 bucket.Insert(uuid.Must(uuid.NewV4()).String(), todo, 0)\r\n\r\n\u00a0\u00a0\u00a0 return alexa.NewSimpleResponse(\"Todo Created\", \"Added `\"+todo.Text+\"` to the list.\")\r\n\r\n}\r\n\r\n\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">\ub514\uc2a4\ud328\ucc98\uac00 \uc704\uc758 \ud568\uc218\ub97c \uc120\ud0dd\ud558\uba74 \uc2ac\ub86f\uc774\ub77c\uace0 \ud558\ub294 \ub3d9\uc801 \ub370\uc774\ud130\ub97c \uac00\uc838\uc640\uc11c Couchbase\uc5d0 \uc0bd\uc785\ud569\ub2c8\ub2e4. \uc2ac\ub86f \ub370\uc774\ud130\ub294 \uc544\ub9c8\uc874\uc5d0\uc11c \ud30c\uc2f1\ub418\uc5b4 \uc694\uccad \uc758\ub3c4\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc694\uccad\uc5d0 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc791\uc5c5\uc774 \uc644\ub8cc\ub418\uba74 \uc2ac\ub86f \ub370\uc774\ud130\uac00 \ubc18\ud658\ub418\uace0 Alexa\uac00 \uc774\ub97c \uc74c\uc131\uc73c\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ucd5c\uc885 \ud568\uc218\ub294 \ub354 \uae38\uc9c0\ub9cc \uadf8\ub2e4\uc9c0 \ubcf5\uc7a1\ud558\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"lang:default decode:true\">func HandleGetTodosIntent(request alexa.Request) alexa.Response {\r\n\r\n\u00a0\u00a0\u00a0 todos := \"\"\r\n\r\n\u00a0\u00a0\u00a0 query := gocb.NewN1qlQuery(\"SELECT text FROM `todos` AS todos\")\r\n\r\n\u00a0\u00a0\u00a0 rows, _ := bucket.ExecuteN1qlQuery(query, nil)\r\n\r\n\u00a0\u00a0\u00a0 var row Todo\r\n\r\n\u00a0\u00a0\u00a0 for rows.Next(&amp;row) {\r\n\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 todos += row.Text + \". \"\r\n\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 return alexa.NewSimpleResponse(\"Todo List\", todos)\r\n\r\n}\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">In the `HandleGetTodosIntent` we are querying the open bucket using N1QL. With the results we are forming a string of data to be returned to the user and spoken by Alexa.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ucf54\ub4dc\uac00 \uc644\uc131\ub418\uc5c8\uc73c\ub2c8 \uc774\uc81c \ubc30\ud3ec\uc5d0 \uc9d1\uc911\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">\uc54c\ub809\uc0ac \uc2a4\ud0ac\ub85c \ub78c\ub2e4 \uae30\ub2a5 \ubc30\ud3ec \ubc0f \ud14c\uc2a4\ud2b8\ud558\uae30<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\uc2a4\ud0ac \uc2a4\ud1a0\uc5b4\uc5d0 \ubc30\ud3ec\ud558\uae30 \uc804\uc5d0 \ub78c\ub2e4\uc6a9 \ud568\uc218 \ucf54\ub4dc\ub97c \uc900\ube44\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\uc804 \uc608\uc81c\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c Lambda\uac00 \uc0ac\uc6a9\ud558\ub294 Linux\uc6a9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad50\ucc28 \ucef4\ud30c\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uba85\ub839\uc904\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"lang:default decode:true\">GOOS=linux go build\r\n\r\nzip handler.zip .\/binary-name<\/pre>\n<p><span style=\"font-weight: 400;\">Make sure to change the `binary-name` with that of the name of your actual binary file created from the previous build command. If you can&#8217;t run the `zip` command, go ahead and archive the file however makes the most sense.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ud578\ub4e4\ub7ec.zip** \ud30c\uc77c\uc744 \uc190\uc5d0 \ub4e4\uace0 Lambda \uad00\ub9ac \ub300\uc2dc\ubcf4\ub4dc(https:\/\/console.aws.amazon.com\/lambda)\ub85c \uc774\ub3d9\ud558\uc5ec \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0c8 \ud568\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. Go \ud504\ub85c\uc81d\ud2b8\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ud2b8\ub9ac\uac70\uc758 \uacbd\uc6b0 **Alexa \uc2a4\ud0ac \ud0a4\ud2b8**\ub97c \uc120\ud0dd\ud558\uace0 ZIP \ud30c\uc77c\uc744 \uc5c5\ub85c\ub4dc\ud569\ub2c8\ub2e4. \ud578\ub4e4\ub7ec**\uc758 \uacbd\uc6b0 ZIP \ud30c\uc77c \uc774\ub984\uc774 \uc544\ub2cc \ubc14\uc774\ub108\ub9ac \ud30c\uc77c \uc774\ub984\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc8fc\ubaa9\ud574\uc57c \ud560 \uac83\uc740 ARN ID\uc785\ub2c8\ub2e4. \uc774 ARN \uac12\uc740 Alexa\ub97c \uad6c\uc131\ud560 \ub54c \ud544\uc694\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774\uc81c Alexa \uac1c\ubc1c\uc790 \ucf58\uc194(https:\/\/developer.amazon.com\/alexa\/console)\ub85c \uc774\ub3d9\ud558\uc5ec \uc0c8 \uc2a4\ud0ac\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0dd\uc131 \uacfc\uc815\uc758 \uc77c\ubd80\ub85c \ub124 \uac00\uc9c0 \uc791\uc5c5\uc744 \uc218\ud589\ud574\uc57c \ud569\ub2c8\ub2e4:<\/span><\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\ud638\ucd9c \uc774\ub984<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\uc778\ud150\ud2b8, \uc0d8\ud50c \ubc0f \uc2ac\ub86f<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\ubaa8\ub378 \ube4c\ub4dc<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\uc5d4\ub4dc\ud3ec\uc778\ud2b8<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">\ud638\ucd9c \uc774\ub984\uc740 \uc2a4\ud0ac \uc774\ub984\uacfc \uc77c\uce58\ud560 \ud544\uc694\ub294 \uc5c6\uc9c0\ub9cc \ubaa8\ub4e0 \uc5b5\uc591\uc73c\ub85c \ubc1c\uc74c\ud560 \uc218 \uc788\ub294 \uc2e4\uc81c \ub2e8\uc5b4\uc5ec\uc57c \ud569\ub2c8\ub2e4. \ub2e8\uc5b4\ub97c \uc9c0\uc5b4\ub0b4\uac70\ub098 \ubcf5\uc7a1\ud55c \ub2e8\uc5b4\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uc54c\ub809\uc0ac\uac00 \uc0ac\ub78c\ub4e4\uc758 \ub9d0\uc744 \uc774\ud574\ud558\ub294 \ub370 \uc5b4\ub824\uc6c0\uc744 \uacaa\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \uc774\uc804 \ub2e8\uacc4\uc5d0\uc11c Lambda \ucf58\uc194\uc5d0\uc11c \ubcf5\uc0ac\ud55c ARN\uc785\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc \ubd99\uc5ec\ub123\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub300\ubd80\ubd84\uc758 \uc791\uc5c5\uc740 \uc778\ud150\ud2b8, \uc0d8\ud50c \ubc1c\ud654 \ubc0f \ub3d9\uc801 \uc2ac\ub86f \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. Golang \ucf54\ub4dc\uc5d0 \uc788\ub294 \uac83\uacfc \uc77c\uce58\ud558\ub294 \uc138 \uac00\uc9c0 \uc778\ud150\ud2b8\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uac01 \uc778\ud150\ud2b8\uc5d0\ub294 \uc778\ud150\ud2b8\ub97c \ud65c\uc131\ud654\ud558\ub294 \ubb38\uad6c \ubaa9\ub85d\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, the `GetTodosIntent` might have the following sample utterances:<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">what are my todos\r\n\r\nget me my list\r\n\r\nwhat is on my todo list\r\n\r\nget me my todos\r\n\r\n\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">The more example phrases you have, the better your Skill will perform. Basically, the samples help Alexa determine which intent to trigger in your code. The `CreateTodoIntent` is where things will get a little complicated because we are expecting dynamic data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c \uc0d8\ud50c \ubc1c\ud654\ub97c \uc0b4\ud3b4\ubcf4\uc138\uc694:<\/span><\/p>\n<pre class=\"lang:default decode:true\">add {todo} to my list\r\n\r\nsave {todo}\r\n\r\ncreate {todo} for my list<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Notice that I have `{todo}` in the above samples which matches that of my slot in my code. The `{todo}` placeholder is actually a variable for dynamic information. This information will be saved to our database. However, we need to define what type of data `{todo}` is.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc2ac\ub86f \uc720\ud615\uc744 \ub9cc\ub4e4\uace0 \uba87 \uac00\uc9c0 \uac12\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc774 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"lang:default decode:true\">wash car\r\n\r\nclean house<\/pre>\n<p><span style=\"font-weight: 400;\">\uc804\uccb4 \ubaa9\ub85d\uc774 \ud544\uc694\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc Alexa\uc758 \ud559\uc2b5 \ub370\uc774\ud130\uc774\uba70 Alexa\uac00 \uc5b4\ub5a4 \uc720\ud615\uc758 \uc815\ubcf4\ub97c \uc2ac\ub86f \uc815\ubcf4\ub85c \uac04\uc8fc\ud574\uc57c \ud558\ub294\uc9c0 \uc2dd\ubcc4\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \ubaa9\ub85d\uc5d0 \ud14d\uc2a4\ud2b8\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294\ub2e4\uace0 \ud574\uc11c Alexa\uac00 \uc774\ub97c \uc778\uc2dd\ud558\uc9c0 \ubabb\ud558\ub294 \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774 \uc2dc\uc810\uc5d0\uc11c \uc2a4\ud0ac\uc744 \uad6c\ucd95\ud560 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4. \ubc30\ud3ec\ud558\uae30 \uc804\uc5d0 \ud14c\uc2a4\ud2b8 \ud3ec\ud138\uc5d0 \uba87 \uac00\uc9c0 \uc0d8\ud50c \ubb38\uad6c\ub97c \uc785\ub825\ud558\uc5ec \uc2e4\uc81c\ub85c \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/span><\/p>\n<h3><\/h3>\n<h3><span style=\"font-weight: 400;\">\uacb0\ub860<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\ubc29\uae08 Golang\uc744 \uc0ac\uc6a9\ud558\uc5ec Amazon Alexa \uc2a4\ud0ac\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uacfc <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\"><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/span><\/a><span style=\"font-weight: 400;\">. \uc774\uac83\uc740 \uc81c\uac00 \uc774\uc804\uc5d0 \uc791\uc131\ud55c \ud29c\ud1a0\ub9ac\uc5bc\uc758 \uc5f0\uc7a5\uc120\uc0c1\uc5d0 \uc788\ub294 \ub0b4\uc6a9\uc785\ub2c8\ub2e4, <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developing-aws-lambda-functions-with-golang-and-couchbase-nosql\/\">Golang \ubc0f Couchbase NoSQL\ub85c AWS \ub78c\ub2e4 \ud568\uc218 \uac1c\ubc1c\ud558\uae30.<\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc2a4\ud0ac\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc8fc\ubaa9\ud574\uc57c \ud560 \uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub9c8\uc874\uc5d0\ub294 \uc2b9\uc778\uc744 \ubc1b\uae30 \uc704\ud574 \ubc18\ub4dc\uc2dc \uc788\uc5b4\uc57c \ud558\ub294 \uba87 \uac00\uc9c0 \ud544\uc218 \uc778\ud150\ud2b8\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc791\uc5c5 \uc911\uc9c0 \ubc0f \ucde8\uc18c\uc5d0 \ub300\ud55c \uc778\ud150\ud2b8\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc800\ud76c\ub294 \uc774\ub97c \ucd94\uac00\ud558\uc9c0 \uc54a\uc558\uc9c0\ub9cc \ub3d9\uc77c\ud55c \uc804\ub7b5\uc744 \ub530\ub97c \uac83\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Golang\uc73c\ub85c \uc2a4\ud0ac\uc744 \uac1c\ubc1c\ud558\ub294 \ub2e4\ub978 \uc608\uc2dc\ub97c \ubcf4\uace0 \uc2f6\uc73c\uc2dc\ub2e4\uba74 \uc81c \ud29c\ud1a0\ub9ac\uc5bc\uc744 \ud655\uc778\ud574\ubcf4\uc138\uc694, <\/span><a href=\"https:\/\/www.thepolyglotdeveloper.com\/2018\/10\/build-alexa-skill-golang-aws-lambda\/\"><span style=\"font-weight: 400;\">\uace8\ub791\uacfc AWS \ub78c\ub2e4\ub85c \uc54c\ub809\uc0ac \uc2a4\ud0ac \ube4c\ub4dc\ud558\uae30<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Nic Raboy\u00a0is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang, and a variety of frameworks such as Angular, NativeScript, and Apache Cordova.\u00a0Nic\u00a0writes about his development experiences related to making web and mobile [&hellip;]<\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2225,1820,1812,2201],"tags":[10124,2100],"ppma_author":[9026],"class_list":["post-6329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-golang","category-n1ql-query","category-tools-sdks","tag-amazon-web-services-aws","tag-lambda"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Develop an Alexa Skill using Golang and Couchbase Server<\/title>\n<meta name=\"description\" content=\"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.\" \/>\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\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL\" \/>\n<meta property=\"og:description\" content=\"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-29T16:29:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:09:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL\",\"datePublished\":\"2019-01-29T16:29:06+00:00\",\"dateModified\":\"2025-06-14T04:09:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\"},\"wordCount\":1368,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Amazon Web Services (AWS)\",\"lambda\"],\"articleSection\":[\"Couchbase Capella\",\"GoLang\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\",\"name\":\"Develop an Alexa Skill using Golang and Couchbase Server\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2019-01-29T16:29:06+00:00\",\"dateModified\":\"2025-06-14T04:09:39+00:00\",\"description\":\"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#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\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Develop an Alexa Skill using Golang and Couchbase Server","description":"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.","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\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/","og_locale":"ko_KR","og_type":"article","og_title":"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL","og_description":"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-01-29T16:29:06+00:00","article_modified_time":"2025-06-14T04:09:39+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/01\/nraboy-here.jpg","type":"image\/jpeg"}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"8\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL","datePublished":"2019-01-29T16:29:06+00:00","dateModified":"2025-06-14T04:09:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/"},"wordCount":1368,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Amazon Web Services (AWS)","lambda"],"articleSection":["Couchbase Capella","GoLang","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/","url":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/","name":"Develop an Alexa Skill using Golang and Couchbase Server","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2019-01-29T16:29:06+00:00","dateModified":"2025-06-14T04:09:39+00:00","description":"See how to work with Amazon Alexa requests and respond appropriately so that Alexa will relay an audio message back to the user.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#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\/developing-an-alexa-skill-with-golang-aws-lambda-and-couchbase-nosql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Developing an Alexa Skill with Golang, AWS Lambda, and Couchbase NoSQL"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","first_name":"Laura","last_name":"Czajkowski","user_url":"","author_category":"","description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/6329","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=6329"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/6329\/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=6329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=6329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=6329"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=6329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}