1

我一直在尝试使用 Nodejs AWS SDK 从 AWS Api Gateway 中检索路径为“/”(根)的资源。我知道天真的解决方案是这样做:

var AWS = require('aws-sdk');
var __ = require('lodash');
var Promise = require('bluebird');

var resources = [];
var apiGateway = Promise.promisifyAll(new AWS.APIGateway({apiVersion: '2015-07-09', region: 'us-west-2'}));

var _finishRetrievingResources = function (resources) {
  var orderedResources = __.sortBy(resources, function (res) {
    return res.path.split('/').length;
  });
  var firstResource = orderedResources[0];
};

var _retrieveNextPage = function (resp) {
  resources = resources.concat(resp.data.items);
  if (resp.hasNextPage()) {
    resp.nextPage().on('success', _retrieveNextPage).send();
  } else {
    _finishRetrievingResources(resources);
  }
};

var foo = apiGateway.getResources({restApiId: 'mah_rest_api_id'}).on('success', _retrieveNextPage).send();

但是,有人知道另一种方法吗?我宁愿知道我总是最多只能打一个电话,而不是必须打多个电话。

PS:我知道可以进行一些优化(例如检查每个响应的根路径),我真的想知道是否有一个 SDK 调用可以解决这个问题。

4

1 回答 1

3

没有一个调用,但如果您的资源少于 500 个,则可以调用。作为安慰奖,这是最佳实践,position用于防止超过 500 个资源时意外丢失。如果资源少于 500 个,则只需一次调用即可:

https://github.com/andrew-templeton/cfn-api-gateway-restapi/blob/bd964408bcb4bc6fc8ec91b5e1f0387c8f11691a/index.js#L77-L102

于 2015-11-20T21:54:00.270 回答