确定 aws-sdk 是否配置了全局凭证

Determine if aws-sdk is has global credentials configured

根据 AWS SDK config 指南中提供的信息,有多种配置 SDK 的方法:

  1. 从 Amazon EC2 的 IAM 角色加载(如果在 EC2 上 运行),
  2. 从共享凭据文件 (~/.aws/credentials) 加载,
  3. 从环境变量加载,
  4. 从磁盘上的 JSON 文件加载,
  5. 在您的应用程序中进行硬编码

有没有办法判断:

a) 如果 SDK 具有全局配置(凭据)并且 b) credentials/settings 是怎样 loaded/configured?

看来您可以查看配置的 credentialProvider 对象,它是 CredentialProviderChain。它的 resolve() 方法 returns 一个 AWS.Credentials 的实例,它将标识用于配置凭据的方法。

例子如下:

AWS.config.credentialProvider.resolve(function(err, credential) {
   if(credential !== null) {
     awsCredential = credential.constructor.name;      
 })
 console.log("AWS configured? ", awsCredential ? 'yes'.green : 'no'.red);
 if(awsCredential) {
   console.log("    Provided by: ", awsCredential);
 }

特别注意返回的 credential 通过 credential.constructor.name 显示其类名。

编辑:我现在将其写成 post 比较使用 callbacks to promises 来实现相同的目标 - 以防万一其他人遇到相同的问题.