"Could not load credentials from any providers"的错误。

0

【以下的问题经过翻译处理】 你好,

我正在使用node.js上的dynamodb sdk v3。

当我尝试在短时间内多次使用dynamodb时,会出现错误'CredentialsProviderError: Could not load credentials from any providers'。

每当我需要访问dynamodb时,我都会创建一个新的dynamodb实例,例如const client = new DynamoDB({ region: 'ap-northeast-2' });

我已经为ec2分配了角色,因此简单访问很顺利。

在我对访问dynamodb进行了分块处理后,这个错误消失了。因此,我猜测快速交换凭证可能导致了这个问题。

你能解释一下这个问题吗?

谢谢。

1 回答
0

【以下的回答经过翻译处理】 这看起来是由EC2的实例元数据服务(IMDS)限流引起的。

我们会针对每个实例对IMDS进行限流,并且对每个实例与IMDS之间的同时连接数量进行限制。

如果您正在使用IMDS检索AWS安全凭据,请避免在每个事务或并发地从大量线程或进程查询凭据,因为这可能会导致限流。相反,我们建议您将凭据缓存,直到它们接近过期时间为止。

虽然缓存是一个不错的解决方法,但我更喜欢重复使用我的服务客户端,避免为每个API调用创建它们,因为这会导致更高的延迟和意外问题,如IMDS限流和增加的KMS调用(如果您使用KMS CMK)。

参考

profile picture
专家
已回答 7 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则