确定 aws-sdk 是否配置了全局凭证
Determine if aws-sdk is has global credentials configured
根据 AWS SDK config 指南中提供的信息,有多种配置 SDK 的方法:
- 从 Amazon EC2 的 IAM 角色加载(如果在 EC2 上 运行),
- 从共享凭据文件 (~/.aws/credentials) 加载,
- 从环境变量加载,
- 从磁盘上的 JSON 文件加载,
- 在您的应用程序中进行硬编码
有没有办法判断:
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 来实现相同的目标 - 以防万一其他人遇到相同的问题.
根据 AWS SDK config 指南中提供的信息,有多种配置 SDK 的方法:
- 从 Amazon EC2 的 IAM 角色加载(如果在 EC2 上 运行),
- 从共享凭据文件 (~/.aws/credentials) 加载,
- 从环境变量加载,
- 从磁盘上的 JSON 文件加载,
- 在您的应用程序中进行硬编码
有没有办法判断:
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 来实现相同的目标 - 以防万一其他人遇到相同的问题.