如何在本地运行基于C#的AWS Lambda函数进行开发?

时间:2018-12-24 22:42:07

标签: c# amazon-web-services aws-lambda rider

我想用C#编写一个AWS Lambda函数。我最终的目标是提高Alexa的技能,但看起来ASK CLI尚不支持C#。

我的开发环境包括:

  • Ubuntu 18.10 x64
  • 已安装AWS Toolkit插件的JetBrains Rider
  • 一个位于美国的AWS账户,所有内容都在us-east-1中运行
  • 已安装并配置了AWS CLI
  • dotnet-sdk-2.1dotnet-runtime-2.1已安装

我似乎找不到任何有关如何使用C#编写Lambda函数并直接在计算机上运行以进行测试的有用文档。之前,我已经使用lambda-local使用Node.js做到了这一点,它只是从AWS CLI继承了我的AWS凭证,但是代码在我自己的计算机上运行。

我尝试在Rider中使用AWS Toolkit插件,但是当我尝试为AWS Lambda Local创建运行配置时,运行时列表为空:

enter image description here

那么,如何才能建立一个开发环境,让我可以在本地运行C#Lambda函数,以使用断点进行测试,而不必使用与AWS CLI相同的凭据,并最终构建并部署到AWS上? >

如果可以简化操作,我愿意使用另一个类似VSCode的IDE,但是我真的想避免运行Windows开发我的代码,这意味着避免使用Visual Studio。

1 个答案:

答案 0 :(得分:2)

您可以创建一个控制台应用程序,引用lambda项目并在其中运行lambda。

如果有任何环境变量,则必须使用Environment class。 为了更好地管理应用程序中的配置,最好为与环境相关的变量编写包装器(类似ApplicationConfig之类)。

要在控制台运行程序中设置环境变量,请使用

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属性设置默认值