最近我的网络服务器由于以下原因停止响应:
从实例配置文件元数据服务器检索凭证时出错
搜索此错误时,我发现了一个建议,即使用 CredentialProvider
在本地缓存凭据,这样服务器就不必为每个请求访问元数据服务器。但它们中的大多数都是在 ENV 变量或文件中的凭据上下文中
我想问一下这是否也适用于 IAM 角色,如果是,这段代码有意义吗?
$s3 = S3Client::factory(array(
'region' => S3_REGION,
'version' => '2006-03-01',
'credentials' => CredentialProvider::memoize(CredentialProvider::defaultProvider())
));
try {
$response = $s3->putObject($option);
} catch ( Exception $e ) {
error_log(' couldn't set S3 cache for bucket: ' . $option['Bucket'] . ' ' . $e->getMessage());
return false;
}
所以我的问题是,对于 IAM 角色,我应该使用凭证提供程序吗?
是的,你的代码是有意义的,将是一个改进。
亚马逊将限制发往169.254.169.254
的请求。这很可能是错误消息的来源。我不记得限制是多少,但建议缓存实例凭据。memoize()
函数为您完成此操作。
[编辑]
亚马逊对节流的评论。没有提到具体数字。
我们基于每个实例限制对实例元数据服务的查询,并对从实例到实例元数据服务的同时连接数施加限制。
实例元数据