2014-03-12 68 views
0

我試圖運行查詢來檢查所有Amazon EC2實例。使用亞馬遜AWS sdk - 您無權執行此操作

我使用的演示應用程序模板,它運行良好,我的憑據,但我不太明白它如何使用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" /> 

缺少什麼我在這裏?

+0

如果您創建AWS客戶端時未顯式提供憑據(即使用無參數構造函數),則SDK將在各個位置查找憑據,其中包括App.config或Web.config的appSettings部分。目前還不清楚爲什麼他們沒有從你的Web.config中獲取這種情況。你提供的東西似乎是正確的。 –

+0

我是這樣一個混帳 - 我不知道如何/爲什麼,但由'ConfigurationManager'調用的實際字符串值不正確。我花了3個小時才注意到使用調試器。一些摩卡的時間! – sergserg

回答

0

不是100%確定你的問題是什麼,但是你有沒有機會在EC2實例上運行工作代碼,以及你在本地運行的非工作代碼?

如果您的EC2實例使用IAM角色設置,並且該IAM角色具有所需的權限,則根本不需要提供憑據 - 它們是從實例「繼承」的(btw:this也是向sdk提供證書的推薦方式,所以它們不會在配置文件中浮動)。

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

如果那不是發生了什麼事,也許你可能會更清楚一點 - 你怎麼在你的第一個例子中知道,它不是訪問您的憑據?

+0

我正在使用New Project模板,並且彈出一個窗口,詢問我是否使用aws密鑰和密鑰。我如何確定我是否正在'在EC2實例上運行工作代碼';請注意,我在本地機器上運行演示項目並且工作正常。 – sergserg

+0

所以我想問題是,當使用New Project模板生成演示應用程序時,它做了什麼特別的事情?不會在我的MVC3項目中添加密鑰到web.config足夠了嗎? – sergserg

+0

我的不好。網址未加載。 –