"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 Antwort
0

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

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

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

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

参考

profile picture
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen