用于.NET的AWS SDK可以';t使用IIS访问凭据

本文关键字:使用 IIS 访问 NET AWS SDK 可以 用于 | 更新日期: 2023-09-27 18:19:51

我在访问SDK Store中的AWS凭据时遇到一些问题,但似乎只有在IIS下运行时才会出现问题。如果我通过使用ReSharper调用NUnit测试得到了相同的代码,那么依赖项注入就可以工作,S3客户端也可以进行身份验证。

IAmazonS3 s3Client = new AmazonS3Client();

有其他人遇到这个问题吗?您是如何使依赖项注入工作的?

[编辑]

建议将凭据文件方法用于IIS,因为SDK存储对每个用户的凭据进行不同的加密。如果我在appSettings中硬编码我不想做的路径,我只能获得一个凭据文件来工作。

除了以下路径之外,SDK还会在哪里查找凭据文件?

C:'Users'<IIS_app_name>'.aws'credentials
C:'Users'<my_domain_user>'.aws'credentials

用于.NET的AWS SDK可以';t使用IIS访问凭据

这个问题是根据Pavel的答案回答的,但我会发布一个答案,让信息更容易使用。您可以在webLocal.config中指定凭据文件的位置(没有它,我无法使其工作)。部署应用程序时,凭据文件位置将是无效路径,SDK将故障切换为使用EC2实例的IAM角色。

webLocal.config

<?xml version="1.0"?>
<appSettings>
    <!-- AWS -->
    <add key="AWSProfilesLocation" value="C:'Users'<IIS_app_name>'.aws'credentials" />
    <add key="AWSRegion" value="us-west-2" />
    <add key="S3Bucket" value="bucket." />
</appSettings>

当您实例化一个没有参数的客户端时,依赖项注入将起作用。

IAmazonS3 s3Client = new AmazonS3Client();

SDK Store将凭据保存在C:'Users'<username>'AppData'Local'AWSToolkit文件夹下,因此,除非IIS与NUnit测试使用相同的帐户运行,否则IIS将无法访问相同的凭据。

本博客讨论了存储和使用凭据的各种选项。在您的情况下,似乎更好的选择是使用凭据文件。