node.js - AWS EC2 IAM 角色凭证

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

使用适用于 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

尽管这是文档中的确切用法!我是否遗漏了一些小东西?

<小时/>

更新:

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

错误:配置中缺少区域|凭据

最佳答案

我不知道这是否仍然与您相关,但您确实需要配置 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/

相关文章:

node.js - pm2:在不自动启动应用程序的情况下加载 processes.json

javascript - Next.js 从 Docker 容器无限重新加载

node.js - NodeJS 集群模块

amazon-web-services - 开始流式传输到Amazon Elasticsearch Service时如何选择不同的Lambda函数

ubuntu - 跟踪 aws 中的带宽使用情况

amazon-web-services - 将 Amazon RDS 多可用区部署降级为标准部署

amazon-web-services - 尝试连接到网络接口(interface)已禁用的 AWS EC2 实例

javascript - node.js 固定行文本

git - 部署版本的 Amazon ElasticBeanstalk 容器是否有环境变量?

linux - 将存储在 ec2 实例上的文件备份到 s3