Как запустить функции AWS Lambda на основе C # локально для разработки? - PullRequest
0 голосов
/ 25 декабря 2018

Я бы хотел написать лямбда-функцию AWS на C #.Моя конечная цель - создать навык Alexa, но похоже, что ASK CLI еще не поддерживает C #.

Моя среда разработки состоит из:

  • Ubuntu 18.10 x64
  • JetBrains Rider с установленным плагином AWS Toolkit
  • Американская учетная запись AWS со всем, что работает в us-east-1
  • AWS CLI, установлен и настроен
  • dotnet-sdk-2.1 и dotnet-runtime-2.1 установлены

Я не могу найти никакой полезной документации о том, как написать функцию Lambda в C # и запустить ее на моем компьютере непосредственно для тестирования.Я делал это раньше с Node.js, используя lambda-local , который просто наследует мои учетные данные AWS от интерфейса командной строки AWS, но код работает на моем собственном компьютере.

Я пробовалс помощью плагина AWS Toolkit в Rider, но когда я пытаюсь создать конфигурацию запуска для AWS Lambda Local, список времени выполнения пуст:

enter image description here

ИтакКак я могу настроить среду разработки, которая позволяет мне запускать функции C # Lambda локально для тестирования с точками останова и так далее, используя те же учетные данные, предположительно, как в AWS CLI, а также в конечном итоге собирать и развертывать в AWS?

Я открыт для использования другой IDE, такой как VSCode, если это облегчает эту задачу, но я действительно хочу избегать запуска Windows для разработки своего кода, что означает избегание собственно Visual Studio.

1 Ответ

0 голосов
/ 25 декабря 2018

Вы можете создать консольное приложение, ссылаться на лямбда-проект и запускать в нем лямбду.

Если у вас есть переменные окружения, вы должны использовать Класс окружения .Чтобы лучше управлять конфигами в вашем приложении, было бы хорошо написать оболочку (что-то вроде ApplicationConfig) для переменных, зависящих от среды.

Чтобы настроить переменные env в Console runner, используйте

Environment.SetEnvironmentVariable("Environment", "local");

И для получения:

Environment.GetEnvironmentVariable("Environment");

ApplicationConfig.cs

public class ApplicationConfig
{
     public string Environment => GetValue("Environment");
     public string GetValue(string key) => Environment.GetEnvironmentVariable(key);
} 

Кроме того, вы можете установить значение по умолчанию для свойств ApplicationConfig, если вконфигурации

...