使用Amazon AWS sdk - 您无权执行此操作

时间:2014-03-12 14:04:13

标签: c# .net asp.net-mvc-3 amazon-web-services

我正在尝试运行查询来检查所有Amazon EC2实例。

我使用了演示应用程序模板,它使用我的凭据运行良好,但我不太明白它是如何使用aws密钥和密钥的。

在我的app.config(控制台演示应用)中:

<!-- Amazon AWS API keys. -->
<add key="AWSAccessKey" value="ASDASDASDASD"/>
<add key="AWSSecretKey" value="asdasdf/qwerqwerqwerqwerqwer"/>
<add key="AWSRegion" value="us-east-1" />

运行正常并列出我的实例:

// Print the number of Amazon EC2 instances.
IAmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client();
DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();
DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request);

var numInstances = ec2Response.Reservations.Count;

注意它是如何不真正访问App.config值的,这是我困惑的根源。


现在在真正的交易应用程序中,我的MVC3应用程序。我正在尝试完全相同的事情,但我收到了这个错误:

You are not authorized to perform this operation.

在我的web.config

<appSettings>
    <!-- Amazon AWS API keys. -->
    <add key="AWSAccessKey" value="asdfasdfasdfasdf"/>
    <add key="AWSSecretKey" value="adsfasdfadf/asdfasdfasdfasdf"/>
    <add key="AWSRegion" value="us-east-1" />

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

不是100%确定您的问题是什么,但您是否有可能在EC2实例上运行工作代码,以及您在本地运行的非工作代码?

如果您的EC2实例设置了IAM角色,并且该IAM角色具有所需的权限,则根本不需要提供凭据 - 它们是从实例“继承”的(btw:这也是向sdk提供凭据的推荐方式,因此它们不会在配置文件中浮动。)

http://docs.aws.amazon.com/AWSSdkDocsNET/latest/DeveloperGuide/net-dg-roles.html72

如果那不是正在发生的事情,或许你可能会更清楚一点 - 你在第一个例子中如何知道它没有访问你的凭证?