我正试图弄清楚在IIS上运行dotnetcore webapi时,如何在windows ec2实例上使用/访问IAM角色凭据。
我知道,当在ec2-linux上运行dotnetcore应用程序时,默认构造函数可以使用凭据,但在IIS上运行时似乎并非如此,是否有特定的实例化方法可供使用,或者IIS/kestrel服务器是否无法访问凭据?
谢谢
回答我自己的问题:
- 使用默认构造函数,如
var s3Client = new AmazonS3Client();
- 是的,Kestrel服务器确实具有RBAC访问权限
更多信息:
实例化Amazon客户端的最佳实践是使用如上所述的默认构造函数。
我以前读到有人在IIS上使用.NET Core时访问凭据时遇到问题,因为该应用程序在Kestrel服务器上运行,但在EC2实例上,客户端仍然可以访问基于角色的访问凭据。当在EC2服务器上运行时,在服务器上写入凭据是一种糟糕的做法,这几乎是每个IIS问答线程所提出的解决方案,如果IIS不在AWS服务器上,这是正确的。
有很多方法可以为.NET应用程序提供AWS凭据。一种方法是将凭据嵌入App.config文件的appSettings部分:
<configuration>
<appSettings>
<add key="AWSProfileName" value="development"/>
<add key="AWSRegion" value="us-west-2" />
</appSettings>
</configuration>
有关它的更多信息,您可以参考此链接。
SO上也有类似的问题,你也可以参考。