使用erlcloud列出S3存储桶时出现超时错误

Lou*_*eau 4 erlang amazon-s3 elixir amazon-web-services

我正在尝试在我的应用程序中使用erlcloud库进行S3上传.作为测试,我试图通过iex控制台来列出存储桶:

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
Run Code Online (Sandbox Code Playgroud)

我已经检查过了inets,ssl并且erlcoud都已经启动了,我知道凭证工作正常,因为我已经用类似的方式测试了它们的Ruby库irb.

我尝试使用更长的超时配置它,但无论我设置多高,我仍然会收到此错误.

有任何想法吗?或者我可以采取哪些方法来调试它?

par*_*oty 8

我可以模拟相同的错误,并可以通过用单引号替换双引号来解决它.

> iex(4)> s3 = :erlcloud_s3.new('KEY_ID', 'SECRET_KEY')
> iex(5)> :erlcloud_s3.list_buckets(s3)
Run Code Online (Sandbox Code Playgroud)

假设使用了双引号,可能是由字符串和char-list之间的类型不匹配引起的.

  • 好吧,刚刚获得的奖项是我见过的最糟糕的错误信息.谢谢:)你是怎么想的那样尝试的? (2认同)
  • 通常在处理Erlang库时,传递"字符串"单引号.我说_strings_正好是因为单引号传递了一个字符列表而双引号传递了一个字符串,你通常想要将一个字符列表传递给Erlang. (2认同)