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

标签 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。

最佳答案

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

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

要在 Console runner 中设置 env 变量,请使用

Environment.SetEnvironmentVariable("环境", "本地");

并检索:

Environment.GetEnvironmentVariable("Environment");

应用配置.cs

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

此外,如果配置中没有任何内容,您可以为 ApplicationConfig 属性设置一个默认值

关于c# - 如何在本地运行基于 C# 的 AWS Lambda 函数进行开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918155/

相关文章:

c# - 我该怎么做才能加快连接到我的 SQL 在线数据库(("pairing"速度,而不是查询速度)?

c# - Dto 和 Domain 模型的一致验证规则

c# - 统一: Cannot register type from different assembly

amazon-web-services - Spark如何创建从S3读取的对象分区?

java - AWS Lambda 连接到可公开访问的 AWS RDS

amazon-web-services - 通过 AWS Lambda/API 网关返回 JSONP

c# - Enumerable.Max() 如果有两个最大值

amazon-web-services - 如何使用 Facebook 验证 API Gateway 调用?

amazon-web-services - AWS Step Function 同步任务 token

node.js - 如何修复警告 : Application ID is not set?