AWS-SDK 从实例配置文件元数据服务器检索凭证时出错
AWS-SDK Error retrieving credentials from the instance profile metadata server
最近我的网络服务器由于以下原因停止响应:
Error retrieving credentials from the instance profile metadata server
搜索此错误后,我发现了使用 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 角色,我应该使用 CredentialProvider 吗?
是的,您的代码很有意义并且会有所改进。
亚马逊将限制发往 169.254.169.254
的请求。这很可能是您的错误消息的来源。我不记得限制是多少,但建议缓存实例凭证。 memoize()
函数会为您完成。
[编辑]
亚马逊对节流的评论。没有提到具体数字。
我们在每个实例的基础上限制了对实例元数据服务的查询,并且我们限制了从实例到实例元数据服务的同时连接数。
最近我的网络服务器由于以下原因停止响应:
Error retrieving credentials from the instance profile metadata server
搜索此错误后,我发现了使用 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 角色,我应该使用 CredentialProvider 吗?
是的,您的代码很有意义并且会有所改进。
亚马逊将限制发往 169.254.169.254
的请求。这很可能是您的错误消息的来源。我不记得限制是多少,但建议缓存实例凭证。 memoize()
函数会为您完成。
[编辑]
亚马逊对节流的评论。没有提到具体数字。
我们在每个实例的基础上限制了对实例元数据服务的查询,并且我们限制了从实例到实例元数据服务的同时连接数。