使用Node sdk for AWS,我尝试使用附加到运行我的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'
})
但是,当我尝试访问Web应用程序时,我总是收到错误消息:
未捕获的TypeError:d.default.EC2MetadataCredentials不是构造函数
未捕获的TypeError:_awsSdk2.default.EC2MetadataCredentials不是构造函数
即使这是文档中的确切用法!我有什么小东西不见了吗?
从文件中删除credentials
和region
定义会导致另一个错误:
Error: Missing region|credentials in config
答案 0 :(得分:0)
我不知道这是否仍然与您相关,但是您确实需要配置EC2MetadataCredentials,因为它不在默认的ProviderChain中(在sdk中的node_loader.js中搜索新的AWS.CredentialProviderChain([。
看来您可能拥有aws_sdk的旧版本,因为该代码对我有用:
import AWS from 'aws-sdk';
...
AWS.config.credentials = new AWS.EC2MetadataCredentials();