用于.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
这个问题是根据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将无法访问相同的凭据。
本博客讨论了存储和使用凭据的各种选项。在您的情况下,似乎更好的选择是使用凭据文件。