我有一台利用AWS SES发送通知电子邮件的服务器,但我一直收到以下消息:
“Amazon.Runtime.AmazonServiceException”类型的未处理异常 发生在AWSSDK.dll
其他信息:无法找到凭据
我有一个完全可由服务器用户访问的凭证文件,我使用以下内容告诉AWS SDK文件所在的位置和配置文件名称:
AWSConfigs.AWSProfileName = "example-user";
AWSConfigs.AWSProfilesLocation = Environment.CurrentDirectory + "/example-dir/credentials";
..然而在以下行崩溃并显示错误消息:
AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient(REGION);
我在this answer上检查了Amazon.Runtime.AmazonServiceException: Unable to find credentials,这表明配置文件应该在应用程序的配置文件中,如下所示:
<appSettings>
<add key="AWSProfilesLocation" value="C:\awsfile\credentials" />
<add key="AWSRegion" value="us-east-1" />
</appSettings>
...这导致完全相同的错误。
我做错了什么? AWSConfigs.*
代码现在已经工作了大约六个月没有问题,当我的项目中断并且我从Git存储库中恢复它时,这种情况就开始发生了。我不记得我之前使用过哪个版本的Visual Studio,但我目前正在使用2015(更新3)。
我做了但是通过将凭据添加为系统环境变量来实现此功能,但出于安全原因,这不是永久解决方案。
如果我下载早期的提交,构建它们并运行它们,我会得到完全相同的错误。我认为这与我正在使用的Visual Studio版本有关,但是不能想出为什么会这样。
AWS SDK和.NET版本始终相同,因此不应该是不兼容的(AWS SDK和.NET 4.6.1为2.3.55.2)。
答案 0 :(得分:-1)
如果您在Amazon EC2实例上运行应用程序且这些应用程序需要AWS凭据,那么最佳做法建议是:
即使您在非EC2实例上运行应用程序,也要避免在代码中放置凭据。相反,将它们放在环境变量或配置文件中。