AWS EC2 IAM角色凭据

时间:2017-07-31 18:52:57

标签: node.js amazon-web-services amazon-ec2 aws-sdk amazon-iam

使用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不是构造函数

即使这是文档中的确切用法!我有什么小东西不见了吗?

更新

从文件中删除credentialsregion定义会导致另一个错误:

Error: Missing region|credentials in config

1 个答案:

答案 0 :(得分:0)

我不知道这是否仍然与您相关,但是您确实需要配置EC2MetadataCredentials,因为它不在默认的ProviderChain中(在sdk中的node_loader.js中搜索新的AWS.CredentialProviderChain([。
看来您可能拥有aws_sdk的旧版本,因为该代码对我有用:

import AWS from 'aws-sdk';
...
AWS.config.credentials = new AWS.EC2MetadataCredentials();