【问题标题】:How to require/read the JSON files from aws-sdk apis folder如何从 aws-sdk apis 文件夹中要求/读取 JSON 文件
【发布时间】:2019-08-09 22:26:02
【问题描述】:

我正在尝试从EC2 SDK JSON 获取 EC2 的所有实例类型

const instanceEnums = require('aws-sdk/apis/ec2-2016-11-15.normal.json');

function getAllTypes(property) {
   return instanceEnums.shapes[property].enum;
}
getAllTypes('InstanceType')

但它会抛出一个错误

找不到模块 aws-sdk/apis/ec2-2016-11-15.normal.json

我意识到安装的 SDK/模块不包含 .normal.json 文件,而只包含 .min.js 文件。

有没有其他方法可以访问apis文件夹中的文件,就像我们可以访问clients文件夹一样,只需要SDK和AWS.EC2和所有(因为sdk从index.js导出clients文件夹的文件.)

我需要使用类似这个答案https://stackoverflow.com/a/42494509/9381809中解释的东西

【问题讨论】:

  • 您可能需要做一些变通方法,直到该功能实现。检查this github问题。
  • 啊!谢谢@Imran,我希望他们也能在 JavaScript sdk 中实现这个功能。但是似乎我将不得不采用问题中建议的解决方法。

标签: javascript node.js amazon-ec2 aws-sdk


【解决方案1】:

您可以直接从github下载ec2-2016-11-15.normal.json(例如在应用程序启动时)并使用如下:

const axios = require('axios');

const url = 'https://raw.githubusercontent.com/aws/aws-sdk-js/master/apis/ec2-2016-11-15.normal.json';

const getAllTypes = (() => {
  const loadApi = axios.get(url);
  return (property) => loadApi.then(response => {
    return response.data.shapes[property].enum
  })
})();

getAllTypes('InstanceType').then((types) => {
  console.log(types);
});

【讨论】:

  • 谢谢,我想这是目前唯一的方法。
【解决方案2】:

下面的代码对我有用。

const instanceEnums = require('aws-sdk/apis/ec2-2016-11-15.min.json');
console.log(instanceEnums.shapes);

【讨论】:

  • shapes 是四个甚至没有被缩小的对象之一,但是形状有 40 个内部对象,其名称被缩小为(S3、S7、S.. 等),我需要 intanceType
  • 明白了。为此,您是否强烈依赖 AWS 开发工具包?我在 GitHub 上找到了这个,乍一看似乎是最新的。
  • 我只需要所有 EC2 实例类型,不仅可用而且全部存在,我只是不想硬编码这些数据,因为这可能会被附加,如果我可以从其他地方获取数据作品。我的模块中已经有 SDK,所以想使用相同的 SDK,但不是强制需要使用 SDK。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2020-11-20
  • 2011-02-12
  • 2012-04-12
相关资源
最近更新 更多