AWS - как вы разделяете токен доступа между лямбда-процессами? - PullRequest
0 голосов
/ 03 декабря 2018

Во-первых, у меня есть вопрос о том, как работает лямбда:

Если бы он запускался только одной очередью SQS и эта очередь теперь содержит 100 сообщений, будет ли она последовательно создавать и разрушать 100 процессов лямбды?Или он будет делать это параллельно?

Мой второй вопрос - главный. Задача моей лямбды - запрашивать токен доступа (для внешней службы), срок действия которого истекает каждый час, и, используя его, выполнять некоторые действия с этой внешней службой.

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

Учитывая характер работы лямбды,Есть ли способ сделать это через код?Как я могу убедиться, что все процессы Lambdas используют один и тот же токен доступа?(Я знаю, что могу создать новый экземпляр Redis и заставить их всех указать на него, но я ищу "более простое" решение)

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете поместить токен в хранилище параметров SSM.Вы можете зашифровать значение.Lambdas может проверять дату последнего изменения значения, чтобы отслеживать, когда истекает срок ожидания, и обновлять.Нет экземпляра Redis для поддержки, и значение будет зашифровано.

https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html

Вы также можете использовать DynamoDB для этого.Более низкие издержки, чем у Redis, поскольку он без сервера.Если у вас много одновременных Lambda, это может быть предпочтительнее SSM, потому что вы можете столкнуться с ограничением скорости на API.Немного больше работы, потому что вам нужно настроить таблицу DynamoDB.

Другой вариант - иметь «родительскую» лямбда-функцию, которая получает токен API, вызывает «работающие» лямбда-выражения и передает токен в качестве параметра.

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