应用程序无法与.NET 6中的AWS参数存储区通信。它始终与appsettings.json通信。
我尝试在本地调试,仍然是相同的行为。在配置列表下找不到SystemManagerConfiguration。
var builder = WebApplication.CreateBuilder();
var connectionString = builder.Configuration.GetConnectionString("OrderTrackerDatabase");
使用的 Package
库源代码:https://github.com/aws/aws-dotnet-extensions-configuration
影像
5条答案
按热度按时间jdzmm42g1#
我也遇到了同样的问题,最后解决了这个问题。https://github.com/aws/aws-dotnet-extensions-configuration中的示例代码在调用.Net 6中的“AddSystemsManager”方法后缺少了一行,如下所示。
添加以上行后,我就可以在使用设置时从AWS参数存储中获得正确的值。
我还在GitHub中创建了一个问题,如下所示-https://github.com/aws/aws-dotnet-extensions-configuration/issues/114
fkaflof62#
我认为问题可能是“/OrderTracking/"后面的尾随斜杠,请尝试“/OrderTracking”代替。
ou6hu8tu3#
CreateBuilder()将创建新的示例,并且不会继承SystemManager配置。
而是通过构造函数DI使用IConfiguration示例。
rmbxnbpk4#
在我的例子中,这个扩展方法在我的lambda处返回null:
因为lambda的角色没有读取该资源SSM的权限。
用户:无权执行:ssm:资源上的按路径获取参数
因此,只需将lambda角色的必要权限(ssm:GetParametersByPath)添加到System Manager中的资源。
gblwokeq5#
在我的例子中,我使用的是lambda serverless,所以IConfig在传递给控制器时总是null。
我通过将Controller构造函数中的
IOptions<Settings> settings
更改为IConfiguration settings
,然后按名称(如_settings.GetValue<string>("ParameterName")
)访问参数来解决此问题稍微少了一点“面向对象”,但看起来比this complex solution容易得多