我在SDK Store中访问AWS凭据时遇到了一些问题,但在IIS下运行时似乎只是一个问题。如果我通过使用ReSharper调用NUnit测试来执行相同的代码,则依赖项注入将起作用,并且S3客户端可以进行身份验证。
IAmazonS3 s3Client = new AmazonS3Client();
还有其他人遇到过这个问题吗?你是如何让依赖注入工作的?
[编辑]
建议将凭据文件方法用于IIS,因为SDK Store会为每个用户以不同方式加密凭据。如果我在appSettings中硬编码我不想做的路径,我只能获得一个凭证文件。
除了以下路径之外,SDK会在哪里查找凭证文件?
C:\Users\<IIS_app_name>\.aws\credentials
C:\Users\<my_domain_user>\.aws\credentials
答案 0 :(得分:9)
这个问题在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();
答案 1 :(得分:6)
SDK Store将凭据保存在C:\Users\<username>\AppData\Local\AWSToolkit
文件夹下,因此除非在与NUnit测试相同的帐户下运行IIS,否则IIS将无法访问相同的凭据。
This blog讨论了存储和使用凭据的各种选项。在您的情况下,看起来更好的选择是使用凭证文件。