Создание ключа API для плана использования из AWS Lambda - PullRequest
0 голосов
/ 25 мая 2020

Я хотел бы создать новый ключ api из лямбды. У меня есть план использования с API шлюза, созданный с помощью CF, например:

MyApi:
    Type: AWS::Serverless::Api
    Properties:
        Auth:
            UsagePlan: 
                UsagePlanName: MyUsagePlan
                CreateUsagePlan: PER_API
                ...
        ...

Используя это как ссылку https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html

Я предполагаю, что процесс в лямбда должно быть так: - createApiKey - getUsagePlan - createUsagePlanKey

В лямбде у меня есть идентификатор MyApi, и я пытаюсь получить api:

var apiGateway = new AWS.APIGateway({region: region});
const restApi = await new Promise((resolve, reject) => {
    apiGateway.getRestApi({restApiId: MYAPI_ID}, function(err, data) {
        if (err) {
            console.log('getRestApi err', err, err.stack);
            reject(err);
        } else {
            console.log('getRestApi', data);
            resolve(data);
        }
    });
});

Но это время истекает my lambda.

Если я попытаюсь ввести значения вручную, время ожидания также истечет:

const keyParams = {
    keyId: 'xxxxxxxx',
    keyType: 'API_KEY',
    usagePlanId: 'yyyyyyyy'
  };
const apiKey = await new Promise((resolve, reject) => {
    apiGateway.createUsagePlanKey(keyParams, function (err, data) {
        if (err) {
            console.log('createUsagePlanKey err', err, err.stack);
            reject(err);
        } else {
            console.log('createUsagePlanKey', data);
            resolve(data);
        }
    });
});    

Почему время ожидания каждого вызова функции api истекает, и в консоли ничего не печатается. журнал? В порядке ли мой подход или как мне создать новый ключ API для пользователя?

Отредактировано: тайм-аут для лямбда-выражений составляет 10 секунд, и они запускаются в VP C

1 Ответ

1 голос
/ 25 мая 2020

Похоже, вы, вероятно, не настроили свой VP C, чтобы разрешить вашей лямбда-функции доступ к ресурсам (например, AWS API), которые существуют за пределами VP C. Во-первых, действительно ли необходимо запускать функцию внутри VP C? Если нет, то удаление его с VP C должно решить проблему.

Если необходимо запустить функцию в VP C, вам нужно будет разместить вашу лямбда-функцию внутри частного su bnet с маршрутом к шлюзу NAT или настроить VP C конечная точка для служб AWS, к которым он должен получить доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...