Отладка DotNet Core 2.0 AWS Лямбда-функции в коде VS (C #) - PullRequest
0 голосов
/ 04 июля 2018

Я использую VS Code для написания лямбда-функций с помощью CLI dotnet core 2.0.

  • VS код v1.24.1
  • dotnet Core CLI v2.1.200

Задача
Я не могу заставить отладчик работать локально с функцией, которую я написал в VS Code.

Я ставлю точку останова на строку var body = request?.Body; (см. Блок кода Function.cs ниже). Когда я затем нажимаю кнопку start debugging на вкладке Debug в VS Code, я получаю следующее:

-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Loaded 'C:\Users\chris\Documents\Github\tcdevs\resource-it\client-management-lambda\ClientManagement.TestAsyncFunction\test\ClientManagement.TestAsyncFunction.Tests\bin\Debug\netcoreapp2.0\ClientManagement.TestAsyncFunction.Tests.dll'. Symbols loaded.
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.7\System.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The program '[49584] ClientManagement.TestAsyncFunction.Tests.dll' has exited with code 0 (0x0).

Function.cs

Функция Lambda использует пакет APIGatewayEvents для приема запроса от шлюза API

public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
{
    var body = request?.Body;

    // do something asynchronously

    return new APIGatewayProxyResponse()
    {
        Body = JsonConvert.SerializeObject(body),
        StatusCode = 200,
        Headers = new Dictionary<string, string>{ {"Content-Type", "application/json"} }
    };
}

launch.json

Я настроил это для использования DLL-файла Function.cs (файл, созданный с помощью кода, попал в тестовый проект)

"version": "0.2.0",
"configurations": [
    {
        "name": ".NET Core Launch (lambda)",
        "type": "coreclr",
        "request": "launch",
        "preLaunchTask": "build",
        "program": "${workspaceFolder}/src/ClientManagement.TestAsyncFunction/bin/Debug/netcoreapp2.0/ClientManagement.TestAsyncFunction.dll",
        "args": [],
        "cwd": "${workspaceFolder}/src/ClientManagement.TestAsyncFunction",
        "console": "internalConsole",
        "stopAtEntry": false,
        "internalConsoleOptions": "openOnSessionStart"
    },
    {
        "name": ".NET Core Attach",
        "type": "coreclr",
        "request": "attach",
        "processId": "${command:pickProcess}"
    }
}

Я видел этот пост здесь:
https://cloudncode.blog/2017/01/24/getting-started-with-writing-and-debugging-aws-lambda-function-with-visual-studio-code/

Но я не думаю, что этот метод будет работать для dotnet core 2.0. Я также много гуглил и почти не нашел информации о том, как отлаживать функции dotnet core 2.0 в VS Code.

1 Ответ

0 голосов
/ 10 июля 2018

ОК, так что я нашел это, что говорит, что это невозможно в данный момент:

https://github.com/aws/aws-lambda-dotnet/issues/246

Я переезжаю на NodeJs и пакет Serverless, чтобы сделать это сейчас:

https://www.npmjs.com/package/serverless

Будет ли это обновляться, если / когда что-то изменится для ядра dotnet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...