2016-10-04 31 views
1

我從未能夠使AWS API調用發揮作用。我正在嘗試在我的網絡上的Linux服務器上運行REST API以與我的企業AWS賬戶進行交互。使用AWS簽名版本4進行REST API調用(無法簽署AWS API請求)

我正在嘗試使用簽名版本4簽署AWS請求。是否需要在AWS實例上執行此操作?我有共享訪問密鑰,RSA私鑰(開始RSA私鑰...結束RSA私鑰)和AWS訪問密鑰(例如AKAI ...值)。

我遇到的問題是創建規範請求。我收到錯誤「格式不正確的網址」。解析猛砸我的捲髮,但與在此之後的參數問題:

curl -i ... -X GET/action=listusers ...

我試圖按照這些指示:

http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html

我想我的命令應該工作,因爲上面的鏈接顯示了這個例子的典型要求:

GET 
/
Action=ListUsers&Version=2010-05-08 
content-type:application/x-www-form-urlencoded; charset=utf-8 
host:iam.amazonaws.com 
x-amz-date:20150830T123600Z 

content-type;host;x-amz-date 
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 

這有很多參數ERS。的捲曲命令到上述規範的請求將導致關於「錯誤的URL」和bash命令的錯誤不與這行確認:

content-type:application/x-www-form-urlencoded; charset=utf-8 

上述方向不解釋如何確定URI。我如何確定URI?如何在正確解析URI的情況下使用long curl命令,以便在調用Bash對無法識別的命令的響應的參數之間沒有空格?

我已經嘗試了許多curl命令的排列來列出與我的AWS賬戶相關的服務器或用戶。似乎沒有任何工作。

我想發出一個基本的API命令來驗證它的工作原理。我很想列出AWS實例或列出與AWS賬戶關聯的用戶。但我堅持創建一個規範的請求,因爲顯然我不知道如何確定在Curl命令中使用哪個URI或URL。如果我知道如何,我可以簽署請求。如果我可以使用Linux curl命令來工作,我最終可以使用Python的子進程來調用它們。

+0

恐怕,你離我們很遠。你實際上並沒有通過標準的請求來捲曲。這不是你創造它的原因。規範請求是一個字符串,它使用*規範*(已知的,固定的,形式化的,標準化的)格式描述**您要創建的請求。該字符串成爲用於生成簽名的消息的核心。你做一個正常的'curl'https://iam.amazonaws.com/?Action = ListUsers&Version = ...''請求。 –

+0

現在我想從基礎開始。我如何創建curl命令?我使用哪個網址?我有幾個EC2服務器(但他們沒有公共DNS名稱和公共IP地址)。我想列出AWS賬戶中的服務器或用戶。 – Kiran

+0

在你提到的頁面的例子中,它會是'curl'https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential = AKIDEXAMPLE%2F20150830%2Fus-east-1%2Fiam%2Faws4_request&X-Amz-Date = 20150830T123600Z&X-Amz-SignedHeaders = content-type%3Bhost%3Bx-amz-date'' –

回答

相關問題