使用适用于 AWS 的 Node sdk,我尝试使用附加到运行我的 Node 应用程序的 EC2 实例的 IAM 角色提供的凭证和权限。
根据 sdk 文档,可以使用 EC2MetadataCredentials
类为 sdk 分配配置属性来完成。
在我使用 sdk 访问 DynamoDB 实例的文件中,我有配置代码:
import AWS from 'aws-sdk'
AWS.config.region = 'us-east-1'
AWS.config.credentials = new AWS.EC2MetadataCredentials({
httpOptions: { timeout: 5000 },
maxRetries: 10,
retryDelayOptions: { base: 200 }
})
const dynamodb = new AWS.DynamoDB({
endpoint: 'https://dynamodb.us-east-1.amazonaws.com',
apiVersion: '2012-08-10'
})
但是,当我尝试访问网络应用程序时,我总是收到一条错误消息:
Uncaught TypeError: d.default.EC2MetadataCredentials is not a constructor
Uncaught TypeError: _awsSdk2.default.EC2MetadataCredentials is not a constructor
尽管这是文档中的确切用法!我是否遗漏了一些小东西?
<小时/>更新:
从文件中删除 credentials
和 region
定义会导致另一个错误:
错误:配置中缺少区域|凭据
最佳答案
我不知道这是否仍然与您相关,但您确实需要配置 EC2MetadataCredentials,因为它不在默认的 ProviderChain 中(在 sdk 中搜索 new AWS.CredentialProviderChain([ in node_loader.js )。
看来您可能有旧版本的 aws_sdk,因为该代码适用于我:
import AWS from 'aws-sdk';
...
AWS.config.credentials = new AWS.EC2MetadataCredentials();
关于node.js - AWS EC2 IAM 角色凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423315/