Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';AWS SDK找不到我的凭据吗?_C#_Amazon Web Services - Fatal编程技术网

C# 为什么可以';AWS SDK找不到我的凭据吗?

C# 为什么可以';AWS SDK找不到我的凭据吗?,c#,amazon-web-services,C#,Amazon Web Services,我有一个利用AWS SES发送通知电子邮件的服务器,但我一直收到以下消息: “Amazon.Runtime.AmazonServiceException”类型的未处理异常 发生在AWSSDK.dll中 其他信息:找不到凭据 我有一个服务器用户完全可以访问的凭据文件,我使用以下命令告诉AWS SDK该文件的位置和配置文件名: AWSConfigs.AWSProfileName = "example-user"; AWSConfigs.AWSProfilesLocation = Environmen

我有一个利用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);
我查看了其中的建议,即配置文件应位于应用程序的配置文件中,如下所示:

<appSettings>
    <add key="AWSProfilesLocation" value="C:\awsfile\credentials" />
    <add key="AWSRegion" value="us-east-1" />
</appSettings>

…这会导致完全相同的错误

我做错了什么?
AWSConfigs.*
代码已经工作了大约六个月了,没有问题,这是在我的项目暂停时开始的,我从它的Git存储库中恢复了它。我记不起以前使用过哪个版本的Visual Studio,但我现在正在使用2015(更新3)

不过,我确实通过添加凭据作为系统环境变量来实现这一点,但出于安全原因,这并不是一个永久性的解决方案

如果我下载以前的提交,构建并运行它们,我会得到完全相同的错误。我认为这可能与我使用的VisualStudio版本有关,但想不出任何原因


AWS SDK和.NET版本始终相同,因此不应存在不兼容(AWS SDK和.NET 4.6.1版本为2.3.55.2)。

如果您在Amazon EC2实例上运行应用程序,并且这些应用程序需要AWS凭据,则最佳实践建议是:

  • 永远不要将凭据放入代码中
  • 将IAM角色分配给实例,SDK将自动使用这些凭据
即使在非EC2实例上运行应用程序,也要避免将凭据放入代码中。相反,将它们放在环境变量或配置文件中


请参阅:

如果您在Amazon EC2实例上运行应用程序,并且这些应用程序需要AWS凭据,那么最佳实践建议是:

  • 永远不要将凭据放入代码中
  • 将IAM角色分配给实例,SDK将自动使用这些凭据
即使在非EC2实例上运行应用程序,也要避免将凭据放入代码中。相反,将它们放在环境变量或配置文件中


请参阅:

不应该
AWSProfilesLocation
指向文件而不是文件夹吗?马克关于位置是文件而不是文件夹的评论是正确的。如果这是EC2实例,也可以使用IAM角色作为凭据,而不是应用程序硬编码。您是在Amazon EC2实例上运行代码,还是在本地服务器上运行代码?@JohnRotenstein EC2,我承认我没有研究过IAM角色,所以我计划对此进行研究。@MarkB抱歉,更改示例代码的路径时遗漏了文件名。已修复。
AWSProfilesLocation
不应该指向文件而不是文件夹吗?马克关于位置是文件而不是文件夹的评论是正确的。如果这是EC2实例,也可以使用IAM角色作为凭据,而不是应用程序硬编码。您是在Amazon EC2实例上运行代码,还是在本地服务器上运行代码?@JohnRotenstein EC2,我承认我没有研究过IAM角色,所以我计划对此进行研究。@MarkB抱歉,更改示例代码的路径时遗漏了文件名。固定的。