确定aws-sdk是否已配置全局凭据

dev*_*ack 3 config node.js aws-sdk

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

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

有没有办法确定:

a)如果SDK具有全局配置(凭证), b)如何加载/配置这些凭证/设置?

dev*_*ack 5

所以看起来你可以查看config的credentialProvider对象,它是一个CredentialProviderChain.其resolve()方法返回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);
 }
Run Code Online (Sandbox Code Playgroud)

特别注意返回credential显示其classname via credential.constructor.name.

编辑:我现在把这篇文章写成一篇文章,比较使用回调和承诺来实现相同的目标 - 以防万一其他人遇到同样的问题.