AWS S3 cURL超时

3

总的来说,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 PHP SDK v3。


1
你不能完全依赖互联网,因为它并不是百分之百可靠的。你可以尝试重试一次,然后继续其他错误处理方式。 - Dave S
1
增加超时时间不太可能有所帮助,因为这个问题涉及到 实例元数据服务(它并不完全是 "互联网")。如果这是一台 t 系列实例,您的 CPU 信用余额如何?您的工作负载与实例的能力相比如何?这是一个新问题吗? - Michael - sqlbot
请检查此处的响应是否有帮助。 https://dev59.com/pF4c5IYBdhLWcg3w6Nw7#43250859 - omuthu
1
除非您使用过多的请求来超载元数据服务,否则没有好的理由会发生这种情况--该服务在同一主机(hypervisor)上运行,就在那里。它就在那里。但是,我似乎记得有一些关于超载它的模糊文档。显然,它的容量并不是无限的,但我希望它足够充足...而且我也希望SDK缓存临时凭据,尽管我花了很少的时间查看php SDK。 - Michael - sqlbot
提到使用元数据服务的SDK: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html - Michael - sqlbot
显示剩余2条评论
1个回答

4

如果您正在使用以下凭据

$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”。 - Scott
如果您想100%确定,请为“凭据”值创建新实例\Aws\Credentials\Credentials。例如:'credentials' => new Aws\Credentials\Credentials('YOURACCESSKEY', 'YOURSECRET') - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接