【问题标题】:How do I run C#-based AWS Lambda functions locally for development?如何在本地运行基于 C# 的 AWS Lambda 函数进行开发?
【发布时间】:2018-12-24 22:42:07
【问题描述】:

我想用 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 函数并直接在我的计算机上运行以进行测试的有用文档。我之前使用 Node.js 使用 lambda-local 完成了此操作,它只是从 AWS CLI 继承了我的 AWS 凭证,但代码在我自己的计算机上运行。

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

那么,我怎样才能设置一个开发环境,让我在本地运行 C# Lambda 函数以使用断点等进行测试,使用可能与 AWS CLI 相同的凭证,并最终构建并部署到 AWS?

如果这样做更容易,我愿意使用其他 IDE,例如 VSCode,但我真的想避免运行 Windows 来开发我的代码,这意味着避免使用 Visual Studio。

【问题讨论】:

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


    【解决方案1】:

    您可以创建一个控制台应用程序,引用 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 属性设置默认值

    【讨论】:

    • 谢谢,成功了。供将来参考:我在同一个解决方案(带有 .NET Core 的控制台应用程序)中创建了第二个项目,添加了对第一个项目(Lambda)的引用,并通过实例化其类并直接调用它来调用该函数。我使用 Nuget 的 v3 AWS S3 SDK 进行了测试连接,它神奇地从 ~/.aws 继承了我的凭据并且工作正常。
    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 2021-11-10
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 2023-03-12
    • 2019-06-11
    相关资源
    最近更新 更多