AWS SDK for .NET无法使用IIS访问凭据

tpo*_*eux 6 c# asp.net iis amazon-s3 amazon-web-services

我在SDK Store中访问AWS凭据时遇到了一些问题,但在IIS下运行时似乎只是一个问题.如果我通过使用ReSharper调用NUnit测试来执行相同的代码,则依赖项注入将起作用,并且S3客户端可以进行身份​​验证.

IAmazonS3 s3Client = new AmazonS3Client();
Run Code Online (Sandbox Code Playgroud)

有没有其他人遇到这个问题?你是如何让依赖注入工作的?

[编辑]

建议将凭证文件方法与IIS一起使用,因为SDK Store会以不同方式为每个用户加密凭据.如果我在appSettings中硬编码我不想做的路径,我只能获得一个凭证文件.

除了下面的路径,SDK会在哪里查找凭证文件?

C:\Users\<IIS_app_name>\.aws\credentials
C:\Users\<my_domain_user>\.aws\credentials
Run Code Online (Sandbox Code Playgroud)

tpo*_*eux 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>
Run Code Online (Sandbox Code Playgroud)

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

IAmazonS3 s3Client = new AmazonS3Client();
Run Code Online (Sandbox Code Playgroud)


Pav*_*nov 7

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

本博客讨论了存储和使用凭据的各种选项.在您的情况下,看起来更好的选择是使用凭证文件.