We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Lambda publish_version returns wrong status code
In boto3,when lambda  publish_version is success,boto3 returns Http status code 201.
But, moto returns Http status code 200


moto and boto version
```
boto3               1.9.71
botocore          1.12.71
moto                 1.3.7
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `moto/awslambda/responses.py`
Content:
```
1 from __future__ import unicode_literals
2 
3 import json
4 
5 try:
6     from urllib import unquote
7 except ImportError:
8     from urllib.parse import unquote
9 
10 from moto.core.utils import amz_crc32, amzn_request_id, path_url
11 from moto.core.responses import BaseResponse
12 from .models import lambda_backends
13 
14 
15 class LambdaResponse(BaseResponse):
16     @property
17     def json_body(self):
18         """
19         :return: JSON
20         :rtype: dict
21         """
22         return json.loads(self.body)
23 
24     @property
25     def lambda_backend(self):
26         """
27         Get backend
28         :return: Lambda Backend
29         :rtype: moto.awslambda.models.LambdaBackend
30         """
31         return lambda_backends[self.region]
32 
33     def root(self, request, full_url, headers):
34         self.setup_class(request, full_url, headers)
35         if request.method == 'GET':
36             return self._list_functions(request, full_url, headers)
37         elif request.method == 'POST':
38             return self._create_function(request, full_url, headers)
39         else:
40             raise ValueError("Cannot handle request")
41 
42     def function(self, request, full_url, headers):
43         self.setup_class(request, full_url, headers)
44         if request.method == 'GET':
45             return self._get_function(request, full_url, headers)
46         elif request.method == 'DELETE':
47             return self._delete_function(request, full_url, headers)
48         else:
49             raise ValueError("Cannot handle request")
50 
51     def versions(self, request, full_url, headers):
52         self.setup_class(request, full_url, headers)
53         if request.method == 'GET':
54             # This is ListVersionByFunction
55 
56             path = request.path if hasattr(request, 'path') else path_url(request.url)
57             function_name = path.split('/')[-2]
58             return self._list_versions_by_function(function_name)
59 
60         elif request.method == 'POST':
61             return self._publish_function(request, full_url, headers)
62         else:
63             raise ValueError("Cannot handle request")
64 
65     @amz_crc32
66     @amzn_request_id
67     def invoke(self, request, full_url, headers):
68         self.setup_class(request, full_url, headers)
69         if request.method == 'POST':
70             return self._invoke(request, full_url)
71         else:
72             raise ValueError("Cannot handle request")
73 
74     @amz_crc32
75     @amzn_request_id
76     def invoke_async(self, request, full_url, headers):
77         self.setup_class(request, full_url, headers)
78         if request.method == 'POST':
79             return self._invoke_async(request, full_url)
80         else:
81             raise ValueError("Cannot handle request")
82 
83     def tag(self, request, full_url, headers):
84         self.setup_class(request, full_url, headers)
85         if request.method == 'GET':
86             return self._list_tags(request, full_url)
87         elif request.method == 'POST':
88             return self._tag_resource(request, full_url)
89         elif request.method == 'DELETE':
90             return self._untag_resource(request, full_url)
91         else:
92             raise ValueError("Cannot handle {0} request".format(request.method))
93 
94     def policy(self, request, full_url, headers):
95         if request.method == 'GET':
96             return self._get_policy(request, full_url, headers)
97         if request.method == 'POST':
98             return self._add_policy(request, full_url, headers)
99 
100     def _add_policy(self, request, full_url, headers):
101         path = request.path if hasattr(request, 'path') else path_url(request.url)
102         function_name = path.split('/')[-2]
103         if self.lambda_backend.get_function(function_name):
104             policy = request.body.decode('utf8')
105             self.lambda_backend.add_policy(function_name, policy)
106             return 200, {}, json.dumps(dict(Statement=policy))
107         else:
108             return 404, {}, "{}"
109 
110     def _get_policy(self, request, full_url, headers):
111         path = request.path if hasattr(request, 'path') else path_url(request.url)
112         function_name = path.split('/')[-2]
113         if self.lambda_backend.get_function(function_name):
114             lambda_function = self.lambda_backend.get_function(function_name)
115             return 200, {}, json.dumps(dict(Policy="{\"Statement\":[" + lambda_function.policy + "]}"))
116         else:
117             return 404, {}, "{}"
118 
119     def _invoke(self, request, full_url):
120         response_headers = {}
121 
122         function_name = self.path.rsplit('/', 2)[-2]
123         qualifier = self._get_param('qualifier')
124 
125         fn = self.lambda_backend.get_function(function_name, qualifier)
126         if fn:
127             payload = fn.invoke(self.body, self.headers, response_headers)
128             response_headers['Content-Length'] = str(len(payload))
129             return 202, response_headers, payload
130         else:
131             return 404, response_headers, "{}"
132 
133     def _invoke_async(self, request, full_url):
134         response_headers = {}
135 
136         function_name = self.path.rsplit('/', 3)[-3]
137 
138         fn = self.lambda_backend.get_function(function_name, None)
139         if fn:
140             payload = fn.invoke(self.body, self.headers, response_headers)
141             response_headers['Content-Length'] = str(len(payload))
142             return 202, response_headers, payload
143         else:
144             return 404, response_headers, "{}"
145 
146     def _list_functions(self, request, full_url, headers):
147         result = {
148             'Functions': []
149         }
150 
151         for fn in self.lambda_backend.list_functions():
152             json_data = fn.get_configuration()
153 
154             result['Functions'].append(json_data)
155 
156         return 200, {}, json.dumps(result)
157 
158     def _list_versions_by_function(self, function_name):
159         result = {
160             'Versions': []
161         }
162 
163         functions = self.lambda_backend.list_versions_by_function(function_name)
164         if functions:
165             for fn in functions:
166                 json_data = fn.get_configuration()
167                 result['Versions'].append(json_data)
168 
169         return 200, {}, json.dumps(result)
170 
171     def _create_function(self, request, full_url, headers):
172         try:
173             fn = self.lambda_backend.create_function(self.json_body)
174         except ValueError as e:
175             return 400, {}, json.dumps({"Error": {"Code": e.args[0], "Message": e.args[1]}})
176         else:
177             config = fn.get_configuration()
178             return 201, {}, json.dumps(config)
179 
180     def _publish_function(self, request, full_url, headers):
181         function_name = self.path.rsplit('/', 2)[-2]
182 
183         fn = self.lambda_backend.publish_function(function_name)
184         if fn:
185             config = fn.get_configuration()
186             return 200, {}, json.dumps(config)
187         else:
188             return 404, {}, "{}"
189 
190     def _delete_function(self, request, full_url, headers):
191         function_name = self.path.rsplit('/', 1)[-1]
192         qualifier = self._get_param('Qualifier', None)
193 
194         if self.lambda_backend.delete_function(function_name, qualifier):
195             return 204, {}, ""
196         else:
197             return 404, {}, "{}"
198 
199     def _get_function(self, request, full_url, headers):
200         function_name = self.path.rsplit('/', 1)[-1]
201         qualifier = self._get_param('Qualifier', None)
202 
203         fn = self.lambda_backend.get_function(function_name, qualifier)
204 
205         if fn:
206             code = fn.get_code()
207 
208             return 200, {}, json.dumps(code)
209         else:
210             return 404, {}, "{}"
211 
212     def _get_aws_region(self, full_url):
213         region = self.region_regex.search(full_url)
214         if region:
215             return region.group(1)
216         else:
217             return self.default_region
218 
219     def _list_tags(self, request, full_url):
220         function_arn = unquote(self.path.rsplit('/', 1)[-1])
221 
222         fn = self.lambda_backend.get_function_by_arn(function_arn)
223         if fn:
224             return 200, {}, json.dumps({'Tags': fn.tags})
225         else:
226             return 404, {}, "{}"
227 
228     def _tag_resource(self, request, full_url):
229         function_arn = unquote(self.path.rsplit('/', 1)[-1])
230 
231         if self.lambda_backend.tag_resource(function_arn, self.json_body['Tags']):
232             return 200, {}, "{}"
233         else:
234             return 404, {}, "{}"
235 
236     def _untag_resource(self, request, full_url):
237         function_arn = unquote(self.path.rsplit('/', 1)[-1])
238         tag_keys = self.querystring['tagKeys']
239 
240         if self.lambda_backend.untag_resource(function_arn, tag_keys):
241             return 204, {}, "{}"
242         else:
243             return 404, {}, "{}"
244
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/moto/awslambda/responses.py b/moto/awslambda/responses.py
--- a/moto/awslambda/responses.py
+++ b/moto/awslambda/responses.py
@@ -183,7 +183,7 @@
         fn = self.lambda_backend.publish_function(function_name)
         if fn:
             config = fn.get_configuration()
-            return 200, {}, json.dumps(config)
+            return 201, {}, json.dumps(config)
         else:
             return 404, {}, "{}"

{"golden_diff": "diff --git a/moto/awslambda/responses.py b/moto/awslambda/responses.py\n--- a/moto/awslambda/responses.py\n+++ b/moto/awslambda/responses.py\n@@ -183,7 +183,7 @@\n         fn = self.lambda_backend.publish_function(function_name)\n         if fn:\n             config = fn.get_configuration()\n-            return 200, {}, json.dumps(config)\n+            return 201, {}, json.dumps(config)\n         else:\n             return 404, {}, \"{}\"\n", "issue": "Lambda publish_version returns wrong status code\nIn boto3,when lambda  publish_version is success,boto3 returns Http status code 201.\r\nBut, moto returns Http status code 200\r\n\r\n\r\nmoto and boto version\r\n```\r\nboto3               1.9.71\r\nbotocore          1.12.71\r\nmoto                 1.3.7\r\n```\r\n\n", "before_files": [{"content": "from __future__ import unicode_literals\n\nimport json\n\ntry:\n    from urllib import unquote\nexcept ImportError:\n    from urllib.parse import unquote\n\nfrom moto.core.utils import amz_crc32, amzn_request_id, path_url\nfrom moto.core.responses import BaseResponse\nfrom .models import lambda_backends\n\n\nclass LambdaResponse(BaseResponse):\n    @property\n    def json_body(self):\n        \"\"\"\n        :return: JSON\n        :rtype: dict\n        \"\"\"\n        return json.loads(self.body)\n\n    @property\n    def lambda_backend(self):\n        \"\"\"\n        Get backend\n        :return: Lambda Backend\n        :rtype: moto.awslambda.models.LambdaBackend\n        \"\"\"\n        return lambda_backends[self.region]\n\n    def root(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._list_functions(request, full_url, headers)\n        elif request.method == 'POST':\n            return self._create_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def function(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._get_function(request, full_url, headers)\n        elif request.method == 'DELETE':\n            return self._delete_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def versions(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            # This is ListVersionByFunction\n\n            path = request.path if hasattr(request, 'path') else path_url(request.url)\n            function_name = path.split('/')[-2]\n            return self._list_versions_by_function(function_name)\n\n        elif request.method == 'POST':\n            return self._publish_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    @amz_crc32\n    @amzn_request_id\n    def invoke(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'POST':\n            return self._invoke(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    @amz_crc32\n    @amzn_request_id\n    def invoke_async(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'POST':\n            return self._invoke_async(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def tag(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._list_tags(request, full_url)\n        elif request.method == 'POST':\n            return self._tag_resource(request, full_url)\n        elif request.method == 'DELETE':\n            return self._untag_resource(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle {0} request\".format(request.method))\n\n    def policy(self, request, full_url, headers):\n        if request.method == 'GET':\n            return self._get_policy(request, full_url, headers)\n        if request.method == 'POST':\n            return self._add_policy(request, full_url, headers)\n\n    def _add_policy(self, request, full_url, headers):\n        path = request.path if hasattr(request, 'path') else path_url(request.url)\n        function_name = path.split('/')[-2]\n        if self.lambda_backend.get_function(function_name):\n            policy = request.body.decode('utf8')\n            self.lambda_backend.add_policy(function_name, policy)\n            return 200, {}, json.dumps(dict(Statement=policy))\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_policy(self, request, full_url, headers):\n        path = request.path if hasattr(request, 'path') else path_url(request.url)\n        function_name = path.split('/')[-2]\n        if self.lambda_backend.get_function(function_name):\n            lambda_function = self.lambda_backend.get_function(function_name)\n            return 200, {}, json.dumps(dict(Policy=\"{\\\"Statement\\\":[\" + lambda_function.policy + \"]}\"))\n        else:\n            return 404, {}, \"{}\"\n\n    def _invoke(self, request, full_url):\n        response_headers = {}\n\n        function_name = self.path.rsplit('/', 2)[-2]\n        qualifier = self._get_param('qualifier')\n\n        fn = self.lambda_backend.get_function(function_name, qualifier)\n        if fn:\n            payload = fn.invoke(self.body, self.headers, response_headers)\n            response_headers['Content-Length'] = str(len(payload))\n            return 202, response_headers, payload\n        else:\n            return 404, response_headers, \"{}\"\n\n    def _invoke_async(self, request, full_url):\n        response_headers = {}\n\n        function_name = self.path.rsplit('/', 3)[-3]\n\n        fn = self.lambda_backend.get_function(function_name, None)\n        if fn:\n            payload = fn.invoke(self.body, self.headers, response_headers)\n            response_headers['Content-Length'] = str(len(payload))\n            return 202, response_headers, payload\n        else:\n            return 404, response_headers, \"{}\"\n\n    def _list_functions(self, request, full_url, headers):\n        result = {\n            'Functions': []\n        }\n\n        for fn in self.lambda_backend.list_functions():\n            json_data = fn.get_configuration()\n\n            result['Functions'].append(json_data)\n\n        return 200, {}, json.dumps(result)\n\n    def _list_versions_by_function(self, function_name):\n        result = {\n            'Versions': []\n        }\n\n        functions = self.lambda_backend.list_versions_by_function(function_name)\n        if functions:\n            for fn in functions:\n                json_data = fn.get_configuration()\n                result['Versions'].append(json_data)\n\n        return 200, {}, json.dumps(result)\n\n    def _create_function(self, request, full_url, headers):\n        try:\n            fn = self.lambda_backend.create_function(self.json_body)\n        except ValueError as e:\n            return 400, {}, json.dumps({\"Error\": {\"Code\": e.args[0], \"Message\": e.args[1]}})\n        else:\n            config = fn.get_configuration()\n            return 201, {}, json.dumps(config)\n\n    def _publish_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 2)[-2]\n\n        fn = self.lambda_backend.publish_function(function_name)\n        if fn:\n            config = fn.get_configuration()\n            return 200, {}, json.dumps(config)\n        else:\n            return 404, {}, \"{}\"\n\n    def _delete_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 1)[-1]\n        qualifier = self._get_param('Qualifier', None)\n\n        if self.lambda_backend.delete_function(function_name, qualifier):\n            return 204, {}, \"\"\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 1)[-1]\n        qualifier = self._get_param('Qualifier', None)\n\n        fn = self.lambda_backend.get_function(function_name, qualifier)\n\n        if fn:\n            code = fn.get_code()\n\n            return 200, {}, json.dumps(code)\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_aws_region(self, full_url):\n        region = self.region_regex.search(full_url)\n        if region:\n            return region.group(1)\n        else:\n            return self.default_region\n\n    def _list_tags(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n\n        fn = self.lambda_backend.get_function_by_arn(function_arn)\n        if fn:\n            return 200, {}, json.dumps({'Tags': fn.tags})\n        else:\n            return 404, {}, \"{}\"\n\n    def _tag_resource(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n\n        if self.lambda_backend.tag_resource(function_arn, self.json_body['Tags']):\n            return 200, {}, \"{}\"\n        else:\n            return 404, {}, \"{}\"\n\n    def _untag_resource(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n        tag_keys = self.querystring['tagKeys']\n\n        if self.lambda_backend.untag_resource(function_arn, tag_keys):\n            return 204, {}, \"{}\"\n        else:\n            return 404, {}, \"{}\"\n", "path": "moto/awslambda/responses.py"}], "after_files": [{"content": "from __future__ import unicode_literals\n\nimport json\n\ntry:\n    from urllib import unquote\nexcept ImportError:\n    from urllib.parse import unquote\n\nfrom moto.core.utils import amz_crc32, amzn_request_id, path_url\nfrom moto.core.responses import BaseResponse\nfrom .models import lambda_backends\n\n\nclass LambdaResponse(BaseResponse):\n    @property\n    def json_body(self):\n        \"\"\"\n        :return: JSON\n        :rtype: dict\n        \"\"\"\n        return json.loads(self.body)\n\n    @property\n    def lambda_backend(self):\n        \"\"\"\n        Get backend\n        :return: Lambda Backend\n        :rtype: moto.awslambda.models.LambdaBackend\n        \"\"\"\n        return lambda_backends[self.region]\n\n    def root(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._list_functions(request, full_url, headers)\n        elif request.method == 'POST':\n            return self._create_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def function(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._get_function(request, full_url, headers)\n        elif request.method == 'DELETE':\n            return self._delete_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def versions(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            # This is ListVersionByFunction\n\n            path = request.path if hasattr(request, 'path') else path_url(request.url)\n            function_name = path.split('/')[-2]\n            return self._list_versions_by_function(function_name)\n\n        elif request.method == 'POST':\n            return self._publish_function(request, full_url, headers)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    @amz_crc32\n    @amzn_request_id\n    def invoke(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'POST':\n            return self._invoke(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    @amz_crc32\n    @amzn_request_id\n    def invoke_async(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'POST':\n            return self._invoke_async(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle request\")\n\n    def tag(self, request, full_url, headers):\n        self.setup_class(request, full_url, headers)\n        if request.method == 'GET':\n            return self._list_tags(request, full_url)\n        elif request.method == 'POST':\n            return self._tag_resource(request, full_url)\n        elif request.method == 'DELETE':\n            return self._untag_resource(request, full_url)\n        else:\n            raise ValueError(\"Cannot handle {0} request\".format(request.method))\n\n    def policy(self, request, full_url, headers):\n        if request.method == 'GET':\n            return self._get_policy(request, full_url, headers)\n        if request.method == 'POST':\n            return self._add_policy(request, full_url, headers)\n\n    def _add_policy(self, request, full_url, headers):\n        path = request.path if hasattr(request, 'path') else path_url(request.url)\n        function_name = path.split('/')[-2]\n        if self.lambda_backend.get_function(function_name):\n            policy = request.body.decode('utf8')\n            self.lambda_backend.add_policy(function_name, policy)\n            return 200, {}, json.dumps(dict(Statement=policy))\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_policy(self, request, full_url, headers):\n        path = request.path if hasattr(request, 'path') else path_url(request.url)\n        function_name = path.split('/')[-2]\n        if self.lambda_backend.get_function(function_name):\n            lambda_function = self.lambda_backend.get_function(function_name)\n            return 200, {}, json.dumps(dict(Policy=\"{\\\"Statement\\\":[\" + lambda_function.policy + \"]}\"))\n        else:\n            return 404, {}, \"{}\"\n\n    def _invoke(self, request, full_url):\n        response_headers = {}\n\n        function_name = self.path.rsplit('/', 2)[-2]\n        qualifier = self._get_param('qualifier')\n\n        fn = self.lambda_backend.get_function(function_name, qualifier)\n        if fn:\n            payload = fn.invoke(self.body, self.headers, response_headers)\n            response_headers['Content-Length'] = str(len(payload))\n            return 202, response_headers, payload\n        else:\n            return 404, response_headers, \"{}\"\n\n    def _invoke_async(self, request, full_url):\n        response_headers = {}\n\n        function_name = self.path.rsplit('/', 3)[-3]\n\n        fn = self.lambda_backend.get_function(function_name, None)\n        if fn:\n            payload = fn.invoke(self.body, self.headers, response_headers)\n            response_headers['Content-Length'] = str(len(payload))\n            return 202, response_headers, payload\n        else:\n            return 404, response_headers, \"{}\"\n\n    def _list_functions(self, request, full_url, headers):\n        result = {\n            'Functions': []\n        }\n\n        for fn in self.lambda_backend.list_functions():\n            json_data = fn.get_configuration()\n\n            result['Functions'].append(json_data)\n\n        return 200, {}, json.dumps(result)\n\n    def _list_versions_by_function(self, function_name):\n        result = {\n            'Versions': []\n        }\n\n        functions = self.lambda_backend.list_versions_by_function(function_name)\n        if functions:\n            for fn in functions:\n                json_data = fn.get_configuration()\n                result['Versions'].append(json_data)\n\n        return 200, {}, json.dumps(result)\n\n    def _create_function(self, request, full_url, headers):\n        try:\n            fn = self.lambda_backend.create_function(self.json_body)\n        except ValueError as e:\n            return 400, {}, json.dumps({\"Error\": {\"Code\": e.args[0], \"Message\": e.args[1]}})\n        else:\n            config = fn.get_configuration()\n            return 201, {}, json.dumps(config)\n\n    def _publish_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 2)[-2]\n\n        fn = self.lambda_backend.publish_function(function_name)\n        if fn:\n            config = fn.get_configuration()\n            return 201, {}, json.dumps(config)\n        else:\n            return 404, {}, \"{}\"\n\n    def _delete_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 1)[-1]\n        qualifier = self._get_param('Qualifier', None)\n\n        if self.lambda_backend.delete_function(function_name, qualifier):\n            return 204, {}, \"\"\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_function(self, request, full_url, headers):\n        function_name = self.path.rsplit('/', 1)[-1]\n        qualifier = self._get_param('Qualifier', None)\n\n        fn = self.lambda_backend.get_function(function_name, qualifier)\n\n        if fn:\n            code = fn.get_code()\n\n            return 200, {}, json.dumps(code)\n        else:\n            return 404, {}, \"{}\"\n\n    def _get_aws_region(self, full_url):\n        region = self.region_regex.search(full_url)\n        if region:\n            return region.group(1)\n        else:\n            return self.default_region\n\n    def _list_tags(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n\n        fn = self.lambda_backend.get_function_by_arn(function_arn)\n        if fn:\n            return 200, {}, json.dumps({'Tags': fn.tags})\n        else:\n            return 404, {}, \"{}\"\n\n    def _tag_resource(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n\n        if self.lambda_backend.tag_resource(function_arn, self.json_body['Tags']):\n            return 200, {}, \"{}\"\n        else:\n            return 404, {}, \"{}\"\n\n    def _untag_resource(self, request, full_url):\n        function_arn = unquote(self.path.rsplit('/', 1)[-1])\n        tag_keys = self.querystring['tagKeys']\n\n        if self.lambda_backend.untag_resource(function_arn, tag_keys):\n            return 204, {}, \"{}\"\n        else:\n            return 404, {}, \"{}\"\n", "path": "moto/awslambda/responses.py"}]}