【问题标题】:AWS S3 cURL timed outAWS S3 cURL 超时
【发布时间】:2017-11-01 16:50:26
【问题描述】:

总的来说,AWS S3 在我的网络中运行良好。但是,我在下载时总是随机出现这些错误:

Error retrieving credentials from the instance profile metadata server. (cURL error 28: Operation timed out after {>1000} milliseconds with 0 bytes received (see http://curl.haxx.se/libcurl/c/libcurl-errors.html))

为什么?如何防止这些错误发生?

我正在使用 AWS SDK PHP v3。

【问题讨论】:

  • 你不能,互联网不是 100% 可靠的。您可以执行类似重试一次的操作,然后继续进行其他错误处理。
  • 你不能设置一个更高的 CURLOPT_TIMEOUT 吗? curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html
  • 增加超时不太可能有帮助,因为这个问题是关于 instance metadata service(它不完全是“互联网”)如果这是 @987654324 @-family 实例,您的 CPU 积分余额如何?您的工作负载相对于实例的能力如何?这是一个新问题吗?
  • 检查这里的回复是否有帮助。 stackoverflow.com/questions/27400563/…
  • 没有充分的理由发生这种情况,除非您使用过多的请求使元数据服务超载——该服务与您的实例在同一主机(管理程序)上运行。它就在那里。但是,我似乎记得一些关于重载它的模糊文档。显然,它的容量不是无限的,但我希望它足够......而且我也希望 SDK 缓存临时凭据,尽管我花很少时间查看 php SDK跨度>

标签: php amazon-web-services curl amazon-s3


【解决方案1】:

如果您使用如下所示的凭据

$s3 = new Aws\S3\S3Client([
        'version' => 'latest',
        'region'  => 'us-east-1',
        'key' => "AKIAJAAAXXYASASASASDSUAG66MA",
        'secret'  => "8sZyAAAAXUSuUK3FJSDFSDS&D*SDSJFSFShjssa7Fx+GS9"
    )
]);

然后改成这样

   $s3 = new Aws\S3\S3Client([
        'version' => 'latest',
        'region'  => 'us-east-1',
        'credentials' => array(
            'key' => "AKIAJAAAXXYASASASASDSUAG66MA",
            'secret'  => "8sZyAAAAXUSuUK3FJSDFSDS&D*SDSJFSFShjssa7Fx+GS9"
        )
    ]);

【讨论】:

  • 请注意,他们已将其从“key”和“secret”分别更改为“aws_access_key_id”和“aws_secret_access_key”
  • 如果您想 100% 确定,请为“credentials”的值创建一个新的 \Aws\Credentials\Credentials 实例。例如:'credentials' => new Aws\Credentials\Credentials('YOURACCESSKEY','YOURSECRET')
猜你喜欢
  • 2020-07-04
  • 2017-08-10
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 2020-04-16
  • 2012-11-27
相关资源
最近更新 更多