2014-07-27 88 views
4

我試圖在我的應用程序中使用erlcloud存儲庫進行S3上傳。作爲測試,我試圖讓它通過iex控制檯列出值:使用erlcloud列出S3存儲桶時發生超時錯誤

iex(4)> s3 = :erlcloud_s3.new("KEY_ID", "SECRET_KEY") 
... 
iex(5)> :erlcloud_s3.list_buckets(s3) 
** (ErlangError) erlang error: {:aws_error, {:socket_error, :timeout}} 
    (erlcloud) src/erlcloud_s3.erl:909: :erlcloud_s3.s3_request/8 
    (erlcloud) src/erlcloud_s3.erl:893: :erlcloud_s3.s3_xml_request/8 
    (erlcloud) src/erlcloud_s3.erl:238: :erlcloud_s3.list_buckets/1 

我檢查了inetssslerlcoud都開始了,我知道的憑據做工精細,因爲我用irb中的Ruby庫以類似的方式測試了它們。

我試着用更長的超時時間對它進行配置,但無論我設置了多高,我仍然得到這個錯誤。

任何想法?或者我可以採取的方法來調試呢?

回答

8

我可以模擬相同的錯誤,並可以通過用雙引號替換雙引號來解決它。

> iex(4)> s3 = :erlcloud_s3.new('KEY_ID', 'SECRET_KEY') 
> iex(5)> :erlcloud_s3.list_buckets(s3) 

假設使用雙引號,它可能是由字符串和char-list之間的類型不匹配引起的。

+2

好吧,剛剛獲得了我見過的最糟糕的錯誤消息的獎項。謝謝:)你甚至想過如何嘗試? –

+2

一般來說,在處理Erlang庫時,通過「strings」單引號。我說_strings_完全是因爲單引號傳遞了一個char列表,​​而雙引號傳遞了一個字符串,並且您通常希望將一個char列表傳遞給Erlang。 –

+0

如上所述,使用erlang庫時通常會使用單引號。在這種情況下,相同的API先前在我的環境中使用默認配置(從環境變量獲取密鑰和祕密)。然後我可以找出這個錯誤情況和以前的工作情況之間的區別。 – parroty

相關問題