Исключение AWS SAM Local dotnetcore2.1 при запуске API Gateway

Настройка

  • Windows 10
  • Докер для Windows v18.09.0
  • AWS SAM CLI версии 0.10.0
  • Python 3.7.0
  • AWS CLI v1.16.67
  • ядро dotnet sdk v2.1.403
  • Powershell v5.1.17134.407

Проблема

Я следую краткому руководству по AWS SAM Local (а также файл readme, созданный после выполнения команды init ниже) с использованием среды выполнения dotnetcore2.1.

Я выполнил следующую команду, чтобы инициализировать AWS SAM для использования с dotnetcore2.1

sam init --runtime dtonetcore2.1

Затем я создал пакет, запустив

build.ps1 --target=package

Наконец, я запускаю локальную службу шлюза API, запустив

sam local start-api

Затем я открываю браузер и перехожу к http://localhost:3000/hello, где мне предлагается следующее:

PS C:\Users\user_name\Documents\Workspace\messaround\aws-sam\sam-app> sam local start-api
2019-01-04 10:39:15 Found credentials in shared credentials file: ~/.aws/credentials
2019-01-04 10:39:15 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
2019-01-04 10:39:15 You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template
2019-01-04 10:39:16  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
2019-01-04 10:40:10 Invoking HelloWorld::HelloWorld.Function::FunctionHandler (dotnetcore2.1)
2019-01-04 10:40:10 Decompressing C:\Users\user_name\Documents\Workspace\messaround\aws-sam\sam-app\artifacts\HelloWorld.zip

Fetching lambci/lambda:dotnetcore2.1 Docker container image......
2019-01-04 10:40:13 Mounting C:\Users\user_name\AppData\Local\Temp\tmpq0zka7a7 as /var/task:ro inside runtime container
2019-01-04 10:40:14 Exception on /hello [GET]
Traceback (most recent call last):
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\api\client.py", line 246, in _raise_for_status
response.raise_for_status()
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\requests\models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: http+docker://localnpipe/v1.35/containers/102dda11417068e01873242be2383c78c7ad4e2739fd4f8b42c1e0ea494d2bbb/start

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\_compat.py", line 35, in reraise
raise value
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\samcli\local\apigw\local_apigw_service.py", line 153, in _request_handler
self.lambda_runner.invoke(route.function_name, event, stdout=stdout_stream_writer, stderr=self.stderr)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\samcli\commands\local\lib\local_lambda.py", line 85, in invoke
self.local_runtime.invoke(config, event, debug_context=self.debug_context, stdout=stdout, stderr=stderr)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\samcli\local\lambdafn\runtime.py", line 86, in invoke
self._container_manager.run(container)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\samcli\local\docker\manager.py", line 98, in run
container.start(input_data=input_data)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\samcli\local\docker\container.py", line 187, in start
real_container.start()
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\models\containers.py", line 390, in start
return self.client.api.start(self.id, **kwargs)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\utils\decorators.py", line 19, in wrapped
return f(self, resource_id, *args, **kwargs)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\api\container.py", line 1075, in start
self._raise_for_status(res)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\api\client.py", line 248, in _raise_for_status
raise create_api_error_from_http_exception(e)
  File "C:\Users\user_name\AppData\Roaming\Python\Python37\site-packages\docker\errors.py", line 31, in create_api_error_from_http_exception
raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 500 Server Error: Internal Server Error ("error while creating mount source path '/host_mnt/c/Users/user_name/AppData/Local/Temp/tmpq0zka7a7': mkdir /host_mnt/c/Users/user_name/AppData: permission denied")
2019-01-04 10:40:14 127.0.0.1 - - [04/Jan/2019 10:40:14] "GET /hello HTTP/1.1" 502 -
2019-01-04 10:40:14 127.0.0.1 - - [04/Jan/2019 10:40:14] "GET /favicon.ico HTTP/1.1" 403 -

Что я пробовал

Сброс учетных данных общего диска
Сначала я думал, что это была ошибка разрешения между моим диском Windows и виртуальной машиной, на которой запущено докер ... После поиска на форумах докеров я обнаружил эта статья, за которой я следил. Однако это, похоже, не изменило сообщение об ошибке.

Любые предложения будут приняты с благодарностью. Спасибо


person GreenyMcDuff    schedule 04.01.2019    source источник
comment
У меня сейчас точно такая же проблема.   -  person Matheus Maximo    schedule 04.01.2019


Ответы (1)


Вот как я исправил свою проблему:

Когда SAM CLI видит zip, он распаковывается во временный каталог (в вашем случае это C: / Users / user_name / AppData / Local / Temp / tmpq0zka7a7).

Docker должен иметь доступ к этой папке.

В моем случае я создал локального пользователя, чтобы предоставить Docker доступ к общим дискам, и у этого локального пользователя не было доступа к C: / Users / user_name.

Я дал ему доступ и решил свою проблему. Может быть, ты сможешь исправить это таким же образом.

Попробуйте запустить следующее:

docker run --rm -v c:/Users/user_name:/data alpine ls /data

Он должен указать содержимое c: / Users / user_name, если все в порядке.

Удачи!

person Matheus Maximo    schedule 04.01.2019