使用AWS Serverless应用程序在VS2017中读取appsettings.json文件

8
我创建了一个新的AWS无服务器应用程序(.NET Core),并设置了一个Lambda函数,但我想从appsettings.json文件中读取一些信息,就像在普通的ASP.NET Core 2 web应用程序中所做的那样。我该如何包含一个appsettings.json文件并读取设置?我有一些端点需要存储,不想将它们硬编码到我的应用程序中。

d


2
我还建议 - 如果您想使环境变量更容易存储和编辑,而不是在应用程序代码中进行编辑 - 您可以使用AWS Lambda环境变量。这些变量将在执行期间可通过Environment.GetEnvironmentVariable()访问。 - JamesMatson
1个回答

16
你可以像给非 ASP Core 项目添加配置系统一样操作。
将以下 nuget 包添加到你的无服务器应用程序中:

Microsoft.Extensions.Configuration

Microsoft.Extensions.Configuration.Binder

Microsoft.Extensions.Configuration.Json

然后添加你的 appSettings.json 配置文件。由于你希望这些设置在发布时包含在压缩包中,请确保将 Copy to Output Directory 设置为 true
完成上述步骤后,你就可以编写一些初始化代码了。
     public IConfiguration Configuration { get; private set; }

     private void ConfigureSettings()
        {
            Configuration = new ConfigurationBuilder()
                .AddJsonFile("appSettings.json", optional: true)
                .Build();
        }

我是盲打的,希望这样可以正常工作。如果你想使用强类型 POCO 而不是 Configuration,你可以使用 Microsoft.Extensions.Configuration.Json 功能,像这样做:

        public ApplicationConfigPoco Configuration
        {
            get
            {
                return Configuration.Get<ApplicationConfigPoco>();
            }
        }

最后,由于您的Lambda在Linux上运行,请注意在Windows系统上不存在的区分大小写。例如,如果文件名是appSettings.json,则appsettings.json将无法加载。


1
你关于 Linux 中大小写敏感性的最后一条评论非常有用,我可以确认它正在起作用。 - Tarek El-Mallah
这个很好用。我把它添加到了lambda函数实现类的构造函数中。这是我能找到的最接近这种应用程序入口点的东西。 - Matthew MacFarland
这种方式与在Lambda控制台中设置和使用环境变量,然后从Lambda函数中读取以处理不同逻辑相比,是否有特定的优势呢?environment.GetEnvironmentVariable("env") - oshan2csd
1
是的,有@oshan2csd - appsettings.development.json / appsettings.production.json文件中可能包含一些非敏感信息,例如日志记录内容(最低日志级别、日志接收器等)。环境变量也可以用于存放敏感信息。最后,考虑使用密钥管理器来存储敏感值,例如数据库连接字符串、API密钥和第三方认证密钥等。特别是当存储(和检索)敏感键/值需要付费,而将非敏感值存储在.json文件中则不需要支付任何费用时,这一点尤为重要。 - Learning AWS and PostgreSQL
1
是的,有@oshan2csd - appsettings.development.json / appsettings.production.json文件中可能包含一些非敏感信息,例如日志记录内容(最低日志级别、日志接收器等)。环境变量也可以用于存放敏感信息。最后,考虑使用密钥管理器来存储敏感值,例如数据库连接字符串、API密钥和第三方认证密钥等。特别是当存储(和检索)敏感键/值需要付费,而将非敏感值存储在.json文件中不需要支付任何费用时,这一点尤为重要。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接