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();

ただし、別の方法を知っている人はいますか? 複数の呼び出しを行うよりも、常に 1 回の呼び出しで済むことを知りたいです。

PS: いくつかの最適化を行うことができることは知っています (たとえば、すべての応答でルート パスを確認する)。これを修正できる単一の SDK 呼び出しがあるかどうかを本当に知りたいです。

4

1 に答える 1