Как я могу получить желаемое количество записей, соответствующих собственным условиям фильтрации, из AWS Lambda ListFunctions API? - PullRequest
1 голос
/ 02 февраля 2020

Я пытаюсь получить AWS лямбда-функции, используя listFunctions из AWS -SDK NodeJS. https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#listFunctions -property

То, что я хочу сделать, это получить желаемое количество функций, которое соответствует условиям собственного фильтра; Например, имя функции содержит строку «dev». Этот API имеет MaxItems, но мы не можем устанавливать условия фильтрации.

Поэтому я разработал стратегию для достижения этой цели. Установить MaxItems параметр равным оставшимся записям. Когда мне нужно получить 50 отфильтрованных записей, установите MaxItems на 50.

Но я думаю, что эта стратегия неэффективна. Очевидно, что мне приходится вызывать API несколько раз чаще, чем мне нужно, когда количество оставшихся записей равно 1 или другим небольшим числам.

Как я могу определить MaxItems параметр математически?

1 Ответ

1 голос
/ 02 февраля 2020

Я дам вам мой ответ в python, поскольку я не знаю node.js.

Самое лучшее, что вы делаете это в 2 шага:

  1. Сначала извлеките все функции, setting MaxItems в большое число.

  2. Вручную l oop через имена функций и наберите столько, сколько вы хотите, в соответствии с вашими критериями.

  3. Как только вы достигнете желаемого числа, остановите l oop и используйте matched functions в качестве выхода.

#!/usr/bin/env python3
import boto3

lambda_client = boto3.client('lambda')

# get all the functions
response: dict = lambda_client.list_functions()

#extract only function names
functions_info: List = response['Functions']
all_functions_names = [x['FunctionName'] for x in functions_info]

desired_number_of_functions_to_return = 20
count_returned_functions = 0
functions_names_returned = list() # this what you want to return

for function_name in all_functions_names:

    if 'dev' in function_name:
        functions_names_returned.append(function_name)
        count_returned_functions += 1
    if count_returned_functions == desired_number_of_functions_to_return:
        #exit for loop
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...